Почему не повторяется функция?
хочу сделать, что бы из главного меню нажимаешь кнопку, происходит действие, бот выводит сообщение, у него есть кнопка возвращения к главному меню. При нажатии в первый раз все работает хорошо, при повторном вылезает большая ошибка
Код:
import telebot
import webbrowser
from telebot import types
bot = telebot.TeleBot('токен')
photo = open('./BMWe34.jpg', 'rb')
#Обработка команды старт
@bot.message_handler(commands=['start'])
def start(message):
# Добавляются кнопки
markup = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton('Биография', callback_data='Биография')
btn2 = types.InlineKeyboardButton('Ассортимент товаров', callback_data='Ассортимент')
markup.row(btn1, btn2)
# Бот выводит фото + текст
bot.send_photo(message.chat.id, photo, caption='Бот для пискоебатела2005', reply_markup=markup)
@bot.callback_query_handler(func=lambda callback:True)
def callDef(callback):
# Обработка кнопки биография
if callback.data == 'Биография':
markup = types.InlineKeyboardMarkup()
btn = types.InlineKeyboardButton('Главное меню', callback_data='menu')
markup.add(btn)
bot.send_message(callback.message.chat.id, 'Биография Пушкина', reply_markup=markup)
bot.delete_message(callback.message.chat.id, callback.message.message_id)
# Обработка кнопки ассортимент
elif callback.data == 'Ассортимент':
markup = types.InlineKeyboardMarkup()
books = types.InlineKeyboardButton('кНиги', callback_data='booksDef')
picture = types.InlineKeyboardButton('Картины', callback_data='picturesDef')
souvenirs = types.InlineKeyboardButton('Сувениры', callback_data='souvenirsDef')
btn = types.InlineKeyboardButton('Главное меню', callback_data='menu')
markup.row(books, picture, souvenirs)
markup.add(btn)
bot.send_message(callback.message.chat.id, 'Каталог товаров', reply_markup=markup)
bot.delete_message(callback.message.chat.id, callback.message.message_id)
#Обработка возвращения меню
elif callback.data == 'menu':
# Добавляются кнопки
btns = types.InlineKeyboardMarkup()
bio = types.InlineKeyboardButton('Биография', callback_data='Биография')
catalog = types.InlineKeyboardButton('Ассортимент товаров', callback_data='Ассортимент')
btns.row(bio, catalog)
# Бот выводит фото + текст
bot.send_photo(callback.message.chat.id, photo, caption='Бот для пискоебатела2005', reply_markup=btns)
bot.delete_message(callback.message.chat.id, callback.message.message_id)
bot.polling(none_stop=True)
Ошибка:
"C:\python projects\.venv\Scripts\python.exe" "C:\python projects\main.py"
2025-01-20 17:55:09,461 (__init__.py:1241 MainThread) ERROR - TeleBot: "Threaded polling exception: A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: file must be non-empty"
2025-01-20 17:55:09,463 (__init__.py:1243 MainThread) ERROR - TeleBot: "Exception traceback:
Traceback (most recent call last):
File "C:\python projects\.venv\Lib\site-packages\telebot\__init__.py", line 1235, in __threaded_polling
self.worker_pool.raise_exceptions()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "C:\python projects\.venv\Lib\site-packages\telebot\util.py", line 150, in raise_exceptions
raise self.exception_info
File "C:\python projects\.venv\Lib\site-packages\telebot\util.py", line 93, in run
task(*args, **kwargs)
~~~~^^^^^^^^^^^^^^^^^
File "C:\python projects\.venv\Lib\site-packages\telebot\__init__.py", line 9233, in _run_middlewares_and_handler
result = handler['function'](message)
File "C:\python projects\main.py", line 45, in callDef
bot.send_photo(callback.message.chat.id, photo, caption='Бот для пискоебатела2005', reply_markup=btns)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\python projects\.venv\Lib\site-packages\telebot\__init__.py", line 2299, in send_photo
apihelper.send_photo(
~~~~~~~~~~~~~~~~~~~~^
self.token, chat_id, photo, caption=caption, reply_markup=reply_markup,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<3 lines>...
business_connection_id=business_connection_id, message_effect_id=message_effect_id,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
show_caption_above_media=show_caption_above_media, allow_paid_broadcast=allow_paid_broadcast))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\python projects\.venv\Lib\site-packages\telebot\apihelper.py", line 545, in send_photo
return _make_request(token, method_url, params=payload, files=files, method='post')
File "C:\python projects\.venv\Lib\site-packages\telebot\apihelper.py", line 168, in _make_request
json_result = _check_result(method_name, result)
File "C:\python projects\.venv\Lib\site-packages\telebot\apihelper.py", line 195, in _check_result
raise ApiTelegramException(method_name, result, result_json)
telebot.apihelper.ApiTelegramException: A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: file must be non-empty
"