【发布时间】:2020-12-20 00:31:38
【问题描述】:
我正在尝试使用 pyTelegramBotAPI 为 Telegram 创建一个机器人,它是一个下载 Windows 应用程序的商店,因为发送电报的限制为 50MB。我以用户身份发送文件并获取 File_ID,这会导致机器人发送 2GB 文件。每个程序都有一个带有您的 File_ID 的 file.txt。 机器人读取 vlc.txt,将其设置为变量并发送文件。 但是程序有错误。
“2020-12-19 21:06:09,106 (init.py:489 MainThread) 错误 - TeleBot:“对 Telegram API 的请求不成功。错误代码: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)
【问题讨论】:
-
您确定要硬编码的 ID 与文件中的 ID 完全相同吗?文件中是否有空格或换行符?
-
是的,我确定,因为当我通过将 File_ID 直接放在代码中手动测试它时,它完美地识别并发送了文件。
-
文件中可能有一个您没有注意到的额外换行符?顺便说一句,你真的不应该给打开的文件和它的内容都赋予相同的变量名,但这是另一回事。
-
是的,我查了一下,.txt文件只有一行,要不要我把完整的代码发给你测试一下?我可以帮你上传。
-
您可以添加
print(repr(file_id))并比较两个结果。
标签: python telegram telegram-bot python-telegram-bot