Python не понимает мою строковую переменную

#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)