pytelegrambotapi отправка фото по кнопке
Пытаюсь написать телеграмм бота. Столкнулся с проблемой, что не понимаю, как отправить фото по нажатию на кнопку, был бы благодарен, если бы объяснили, как это можно сделать, читал документацию, но всё равно ничего не выходит, отправляет мне только надпись кнопки, а должно отправляться фото, по нажатию на кнопку КОТИКИ.
Вот пример кода:
import telebot
import config
import random
from telebot import types
bot = telebot.TeleBot(config.TOKEN)
@bot.message_handler(commands=['start'])
def welcome(message):
sti = open('static/welc.webp', 'rb')
bot.send_sticker(message.chat.id, sti)
# keybord
markup = types.ReplyKeyboardMarkup(resize_keyboard = True)
item1 = types.KeyboardButton("? Рандомное число")
item2 = types.KeyboardButton("? Как дела?")
item3 = types.KeyboardButton("? КОТИКИ")
markup.add(item1, item2, item3)
bot.send_message(message.chat.id, "Добро пожаловать, {0.first_name}!\nЯ — <b>{1.first_name}</b>, бот созданный в развлекательных целях, который не несет смысловой нагрузки.".format(message.from_user, bot.get_me()),
parse_mode = 'html', reply_markup = markup)
@bot.message_handler(content_types=['text'])
def lalala(message):
if message.chat.type == 'private':
if message.text == '? Рандомное число':
bot.send_message(message.chat.id, str(random.randint(0,100)))
elif message.text == '? Как дела?':
markup = types.InlineKeyboardMarkup(row_width=2)
item1 = types.InlineKeyboardButton("Благостно", callback_data='good')
item2 = types.InlineKeyboardButton("Не благостно", callback_data='bad')
markup.add(item1, item2)
bot.send_message(message.chat.id, 'Благостно, твои как, {0.first_name}?'.format(message.from_user), reply_markup = markup)
elif message.photo == 'open':
bot.send_photo(message.chat.id, get("img/kot1.png").content)
#file_id = "img/kot1.png"
#bot.send_photo(message.chat.id, file_id)
else:
bot.send_message(message.chat.id, message.text)
bot.polling(none_stop=True)
Ответы (2 шт):
Автор решения: Za.kosh
→ Ссылка
Думаю это должно вам помочь.
elif message.text == '? КОТИКИ':
bot.send_photo(message.chat.id, open('photo.jpg', 'rb'))
Автор решения: D. Violet
→ Ссылка
@bot.message_handler(commands=['start'])
def keyboard():
start_keyboard = types.InlineKeyboardMarkup()
menu = types.InlineKeyboardButton(text='Наше меню', callback_data='menu')
start_keyboard.add(menu)
bot.send_message(message.chat.id, 'нажми на кнопку', reply_markup=start_keyboard)
@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
if call.data == 'menu':
with open('./files/menu/bar.jpg', 'rb') as f1, open('./files/menu/kitchen.jpg', 'rb') as f2:
bot.send_media_group(call.message.chat.id, [InputMediaPhoto(f1), InputMediaPhoto(f2)])