【问题标题】:Python doesn't understand my string variablePython 不理解我的字符串变量
【发布时间】: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


【解决方案1】:

我正在从python中的“read()”方法读取w3schools,看到有一个限制字符数的参数,我输入了70并且它起作用了,即使在没有空格的txt文件中也是如此。这是给遇到同样问题的人的提示。

file_id = file_id.read(70)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    • 2016-05-23
    相关资源
    最近更新 更多