@ITpie

Что делать если выдает ошибку 400 для телеграм бота на python?

Извините меня за столь глупый вопрос, я просто новичок)
Я хочу сделать обычного телеграм бота на python для группы.
Я сделал так, чтобы при отправки команды /start выскакивало сообщение.
Если в первый раз пишешь, то оно работает, а в следующие разы нет. Выдает Ошибку 400.
Вот код
import telebot
import telebot
from telebot import types


bot = telebot.TeleBot('1459835204:AAE2AO9nUSaBSIWTz5Rf9nnsmlyg5oyfOkc')

Text = 'Привет, я роздаю котов :) \nНапиши в чат "Хочу кота", чтобы получить его'

img = open('Ржомба.png','rb')

@bot.message_handler(commands=['start'])
def welcome_message(message):
    bot.send_photo(message.chat.id, img, caption = Text)
bot.polling(none_stop = True)


Вот ошибка :

2020-12-12 17:51:58,760 (util.py:66 WorkerThread2) ERROR - TeleBot: "ApiException occurred, args=('A request to the Telegram API was unsuccessful. The server returned HTTP 400 Bad Request. Response body:\n[b\'{"ok":false,"error_code":400,"description":"Bad Request: file must be non-empty"}\']',)
Traceback (most recent call last):
File "C:\Users\Марина\AppData\Local\Programs\Python\Python38-32\lib\site-packages\telebot\util.py", line 60, in run
task(*args, **kwargs)
File "C:/Users/Марина/Desktop/telebot_for_group.py", line 14, in welcome_message
bot.send_photo(message.chat.id, img, caption = Text)
File "C:\Users\Марина\AppData\Local\Programs\Python\Python38-32\lib\site-packages\telebot\__init__.py", line 638, in send_photo
apihelper.send_photo(self.token, chat_id, photo, caption, reply_to_message_id, reply_markup,
File "C:\Users\Марина\AppData\Local\Programs\Python\Python38-32\lib\site-packages\telebot\apihelper.py", line 276, in send_photo
return _make_request(token, method_url, params=payload, files=files, method='post')
File "C:\Users\Марина\AppData\Local\Programs\Python\Python38-32\lib\site-packages\telebot\apihelper.py", line 60, in _make_request
return _check_result(method_name, result)['result']
File "C:\Users\Марина\AppData\Local\Programs\Python\Python38-32\lib\site-packages\telebot\apihelper.py", line 79, in _check_result
raise ApiException(msg, method_name, result)
telebot.apihelper.ApiException: A request to the Telegram API was unsuccessful. The server returned HTTP 400 Bad Request. Response body:
[b'{"ok":false,"error_code":400,"description":"Bad Request: file must be non-empty"}']
"
2020-12-12 17:51:58,804 (__init__.py:420 MainThread) ERROR - TeleBot: "A request to the Telegram API was unsuccessful. The server returned HTTP 400 Bad Request. Response body:
[b'{"ok":false,"error_code":400,"description":"Bad Request: file must be non-empty"}']"

Помогите пожалуйста, если не трудно)
  • Вопрос задан
  • 14261 просмотр
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Файл один раз открыли, при отправке первый раз он прочитывается до конца, указатель остается в конце файла. При последующей отправке, скрипт так же пытается прочитать файл, но так как указатель стоит в конце файла, он не получает никаких данных, ну и при отправке пустого файла телеграм выдает предупреждение.

Делайте лучше так - удалите свой open() в начале скрипта и вставьте его непосредственно в строчку с отправкой:
bot.send_photo(message.chat.id, img = open('Ржомба.png','rb'), caption = Text)

либо
with open('Ржомба.png','rb') as f:
    bot.send_photo(message.chat.id, img = f, caption = Text)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы