Как отслеживать нажатие на reply кнопку telebot
@bot.message_handler(commands=['start'])
def start(message):
full_name = f'Привет, <u>{message.from_user.first_name} {message.from_user.last_name}</u>, снизу можешь выбрать программу тренировок и узнать их стоимость.'
bot.send_message(message.chat.id, full_name, parse_mode='html')
bot.send_message(message.chat.id,f"Чтобы воспользоваться встроенной клавиатурой напишите /help")
@bot.message_handler(commands=['help'])
def keyboard(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
buttonA = types.KeyboardButton('Программа тренировок')
buttonB = types.KeyboardButton('Стоимость')
buttonC = types.KeyboardButton('Контакты и адреса')
markup.row(buttonA, buttonB, buttonC)
bot.send_message(message.chat.id, '?', reply_markup=markup)
bot.polling(none_stop=True)
Хотел бы добавить функционал в кнопки. Чтобы человек нажимал на кнопку 'Программа тренировок' и у него должно появиться изображение или текст.Как можно добавить данный функционал?
Ответы (2 шт):
Автор решения: oleksandrigo
→ Ссылка
Reply кнопки это по факту обычные сообщения от юзера и обрабатывать и нужно как сообщения
@bot.message_handler(func=lambda message: message.text=="Программа тренировок")
def training(message):
bot.send_message(...)
Автор решения: cool rage
→ Ссылка
Ну, все проще чем можно было.
Код:
import telebot
from telebot import types
bot = telebot.TeleBot('TOKEN')
@bot.message_handler(commands=['start'])
def start(message):
full_name = f'Привет, <u>{message.from_user.first_name} {message.from_user.last_name}</u>, снизу можешь выбрать программу тренировок и узнать их стоимость.'
bot.send_message(message.chat.id, full_name, parse_mode='html')
bot.send_message(message.chat.id,f"Чтобы воспользоваться встроенной клавиатурой напишите /help")
@bot.message_handler(commands=['help'])
def keyboard(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
buttonA = types.KeyboardButton('Программа тренировок')
buttonB = types.KeyboardButton('Стоимость')
buttonC = types.KeyboardButton('Контакты и адреса')
markup.row(buttonA, buttonB, buttonC)
bot.send_message(message.chat.id, '?', reply_markup=markup)
@bot.message_handler(func=lambda message: message.text == 'Программа тренировок')
def workout_program(message):
# отправка изображения
with open('workout_program.jpg', 'rb') as f:
bot.send_photo(message.chat.id, f)
# отправка текста
bot.send_message(message.chat.id, 'Это программа тренировок.')
@bot.message_handler(func=lambda message: message.text == 'Стоимость')
def price(message):
bot.send_message(message.chat.id, 'Это стоимость.')
@bot.message_handler(func=lambda message: message.text == 'Контакты и адреса')
def contacts(message):
bot.send_message(message.chat.id, 'Это контакты и адреса.')
bot.polling(none_stop=True)
Медиа должно лежать рядом с bot.py, в другом случае, в папке с ботом создаешь photo и грузишь туда все фотки, затем в коде добавляешь просто путь:
'photo/workout_program.jpg'
если для win - \
Можно еще использовать метод caption чтобы отправить медиа вместе с подписью, эксперементируй)