Как привязать callback_data к Replykeyboardmarkup?
Создаю телеграм бота для практики и столкнулся с проблемой. Я хочу чтобы при нажатии на кнопку в меню выдавало рандомное аниме, но у меня не получается привязать callback_data к Replykeyboardmarkup. Кто знает как это исправить?
import telebot
from telebot import types
import random
bot = telebot.TeleBot()
@bot.message_handler(commands=['help'])
def helping(message):
markup = types.InlineKeyboardMarkup()
item_random_isekai =types.InlineKeyboardButton(text="Рандомное аниме исекай", callback_data="random_isekai")
item_random_comedy =types.InlineKeyboardButton(text="Рандомное аниме комедия", callback_data="random_comedy")
markup.add(item_random_isekai,item_random_comedy)
bot.send_message(message.chat.id,"Кнопки снизу", reply_markup=markup)
@bot.callback_query_handler(func=lambda call:True)
def anwser(call):
if call.data == "random_isekai":
way = "RandomAnime\Random_Anime_Isecai"
animelist = ["Врата: Там бьются наши воины","Военная хроника маленькой девочки",
"Дьявол работает на неполный рабочий день","С нуля: Пособие по выживанию в альтернативном мире",
"Богиня благословляет этот прекрасный мир","Нет игры — нет жизни",
"Восхождение Героя Щита", "О моём перерождении в слизь","Герой-рационал перестраивает королевство",
"Реинкарнация безработного",]
photo_id = [way +"\Jates.png",way +"\evilGirl.jpg", way+"\Podraborka.jpg",way +"\Re_Zero.jpg",
way +"\seless.jpg",way +"\Game.jpg",way +"\Gateup.jpg", way +"\Slime.jpg",
way +"\Hero.jpg",way +"\homeless.jpg"]
a =random.randint(0, 9); b = a; c = photo_id[a]
markup = types.InlineKeyboardMarkup()
item_random_isecai = types.InlineKeyboardButton(text="Рандомное аниме исекай ", callback_data="random_isekai")
item_random_comedy = types.InlineKeyboardButton(text="Рандомное аниме комедия ", callback_data="random_comedy")
markup.add(item_random_isecai,item_random_comedy)
bot.send_photo(call.message.chat.id, open(c, "rb"), caption=animelist[b], reply_markup=markup)
elif call.data == "random_comedy":
way = "RandomAnime\Random_Anime_Comedy"
animelist = ["Ванпанчмен", "Госпожа Кагуя: в любви как на войне", "Моб Психо 100",
"Дракон-горничная Кобаяши","Гинтама","Ох уж этот экстрасенс Сайки Кусуо!",
"Класс превосходства","Я - Сакамото, а что?", "Бродячие псы", "Необъятный океан"]
photo_id = [way + "/OnePunch.png", way + "/Kaguya.png", way + "/Mob.png", way + "/Koba.jpg",
way + "/Gintama.jpg", way + "/Saiki.jpg", way + "/Class_of_Elite.jpg", way + "/Sakamoto.jpg",
way + "/Dogss.jpeg", way + "/Oceann.jpg"]
a = random.randint(0,9); b = a; c = photo_id[b]
markup = types.InlineKeyboardMarkup()
item_random_comedy = types.InlineKeyboardButton(text="Рандомное аниме комедия ", callback_data="random_comedy")
item_random_isecai = types.InlineKeyboardButton(text="Рандомное аниме исекай ",callback_data="random_isekai")
markup.add(item_random_comedy,item_random_isecai)
bot.send_photo(call.message.chat.id, open(c, "rb"), caption=animelist[b],reply_markup=markup)
bot.polling(none_stop=True)
``
Ответы (1 шт):
Автор решения: RitinaADM
→ Ссылка
Для использования callback нужна другая клавиатура.
markup = types.InlineKeyboardMarkup()
mardup.add(types.InlineKeyboardButton(text=f'Текст кнопки', callback_data=f'callback'))
отправлять клавиатуру
bot.send_message(chat_id=12345, text=text, reply_markup=markup)
upd к коменту
С обычной кнопки отправить сообщение с инлай кнопкой
def send_inline(message):
text = 'Нажмите на инлайн кнопку'
markup = types.InlineKeyboardMarkup()
mardup.add(types.InlineKeyboardButton(text=f'Текст кнопки', callback_data=f'callback'))
return bot.send_message(chat_id=message.chat.id, text=text, reply_markup=markup)