@azamatvaniev
Новичок в программировании

Как заменить фото бота в телеграм?

пишу бота в телеграм. Суть заключается в том, что когда я запускаю бота, он присылает мне приветственный текст и фото, а дальше кнопки. И если нажать на одну из кнопок , хочу сделать так чтобы приветственное фото менялось на другое какое захочу, как это все реализовать?
5f71dd2fea4ff992727563.jpeg
допустим если нажать торт1 , текст меняется , а фото нет
  • Вопрос задан
  • 778 просмотров
Пригласить эксперта
Ответы на вопрос 1
@twistfire92
Python backend developer
Вот поиграйтесь с этим кодом.
найдите картинки соответствующие и просмотрите как все это работает в примере ниже

import telebot
from telebot import types

token = '' 

bot = telebot.TeleBot(token)

@bot.message_handler(commands=['start'])
def send_welcome(message):
	photo = open('racoon.jpg', 'rb')
	markup = create_markup()
	bot.send_photo(message.chat.id, photo, caption='Енот', reply_markup=markup)

@bot.callback_query_handler(func=lambda c: True)
def change_photo(call):
	markup = create_markup()
	chat_id=call.message.chat.id
	message_id=call.message.message_id
	if call.data == 'racoon':
		photo = open('racoon.jpg', 'rb')
		media = types.InputMediaPhoto(photo, caption='Енот')
		bot.edit_message_media(media=media, chat_id=chat_id, message_id=message_id, reply_markup=markup)
		
	elif call.data == 'fox':
		photo = open('fox.jpg', 'rb')
		media = types.InputMediaPhoto(photo, caption='Лиса')
		bot.edit_message_media(media=media, chat_id=chat_id, message_id=message_id, reply_markup=markup)
		
	elif call.data == 'rabbit':
		photo = open('rabbit.jpg', 'rb')
		media = types.InputMediaPhoto(photo, caption='Заяц')
		bot.edit_message_media(media=media, chat_id=chat_id, message_id=message_id, reply_markup=markup)
		

def create_markup():
	markup = types.InlineKeyboardMarkup()
	button1 = types.InlineKeyboardButton(text='Енот', callback_data='racoon')
	button2 = types.InlineKeyboardButton(text='Лиса', callback_data='fox')
	button3 = types.InlineKeyboardButton(text='Заяц', callback_data='rabbit')
	markup.row(button1, button2, button3)
	return markup

bot.polling()


Результат этого кода (Все это - одно сообщение, в котором перерисовывалась картинка):

5f72cdac977d9702675906.png
5f72cdc24d779354601542.png
5f72cddaf2294374777349.png

Единственный момент - это если будете менять зайца на зайца например, то код упадет в ошибку.
Но это уже другая проблема))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы