#python #telegram #telegram-bot #python-telegram-bot
#python #telegram #telegram-бот #python-telegram-bot
Вопрос:
Я пытаюсь создать бота для Telegram, используя pyTelegramBotAPI, это хранилище для загрузки приложений Windows, из-за ограничения 50 МБ для отправки телеграммы. Я отправляю файл от имени пользователя и получаю File_ID, что заставляет бота отправлять файлы объемом 2 ГБ. Каждая программа имеет file.txt с вашим записанным идентификатором File_ID. Бот читает vlc.txt , устанавливает его в качестве переменной и отправляет файл. Но программа выдает ошибку.
«ОШИБКА 2020-12-19 21:06:09,106 (init.py:489 MainThread) — TeleBot: «Запрос к API Telegram не удался. Код ошибки: 400. Описание: Неверный запрос: указан неверный идентификатор удаленного файла: неверный символ в строке»»
Когда я вручную помещаю File_ID в код, он работает отлично, он не может получить file_id из переменной, и я отправил программу на печать, чтобы убедиться, что переменная содержит File_ID, написанный правильно. Что может быть причиной этого?
def selecionou(query):
#pretreatment definition
download = query.data.count('down')
info = query.data.count('info')
prints = query.data.count('prints')
#app name treatment
if download > 0:
name = query.data.replace("down.","")
print(name)
file_id = open(f'/home/flaipy/PycharmProjects/Lucas/apps/{name}.txt','r')
file_id = file_id.read()
print(file_id)
#order type treatment
if download > 0:
print(file_id)
bot.send_document(query.message.chat.id, file_id)
Комментарии:
1. Вы уверены, что идентификатор, который вы жестко кодируете, точно такой же, как и в файле? Может быть, в файле есть пробелы или разрыв строки?
2. Да, я уверен, потому что, когда я начал тестировать его вручную, поместив File_ID непосредственно в код, он идеально идентифицировал и отправил файл.
3. В файле может быть дополнительная новая строка, которую вы не замечаете? Кстати, вам действительно не следует присваивать открытому файлу и его содержимому одно и то же имя переменной, но это другой вопрос.
4. Да, я проверил, и это только одна строка в файле .txt, хотите, чтобы я отправил вам полный код для тестирования? Я могу загрузить ее для вас.
5. Вы можете добавить
print(repr(file_id))
и сравнить оба результата.
Ответ №1:
Я читал w3schools из метода «read ()» в python и увидел, что есть аргумент для ограничения количества символов, я поставил 70, и это сработало, даже в текстовом файле без пробела. Это совет для тех, кто сталкивается с той же проблемой.
file_id = file_id.read(70)