【问题标题】:"telegram.error.BadRequest: Entities_too_long" error when trying to send long markdown message. What is the max string length limit?尝试发送长降价消息时出现“telegram.error.BadRequest: Entities_too_long”错误。最大字符串长度限制是多少?
【发布时间】:2021-08-13 07:03:17
【问题描述】:

这是我在尝试发送包含大量格式化超链接的长降价消息时遇到的错误:

context.bot.send_message(chat_id=update.effective_chat.id, text=longmsg, parse_mode="MARKDOWN")

#Output:
telegram.error.BadRequest: Entities_too_long

实际消息几乎没有 500 个字符长,但几乎每个单词都有超链接,这使得字符串 longmsg 非常长(>12k 字符串长度)

现在,我知道对于普通消息,4096 个字符是限制,但是在发送 markdown 消息时,Telegram API 似乎允许 > 4096 个字符串长度。那么降价消息的确切字符串长度限制是多少?我正在使用python-telegram-bot 库。

【问题讨论】:

  • 您确定在链接中需要这么多字符吗?似乎对于每个文本字符,您有 24 个链接字符——对于一个 5 个字母的单词,您有一个长度为 116 个符号的链接。如果您绝对必须拥有这么多链接,也许您可​​以使用 URL 缩短器 - 外部或自托管?
  • 没关系,我只会拆分消息并将它们发送给用户。我进行了一些测试,发现 str len 的上限为 9500 个字符。

标签: telegram telegram-bot python-telegram-bot


【解决方案1】:

这个限制似乎没有记录。我只知道 TG 每条消息只解析 100 个实体,并且只删除任何其他实体(这也是无证的)。您可以尝试通过以下渠道之一联系 TG:

澄清一下:这不是您正在使用的库的问题(此处为 python-telegram-bot) - 手动发出请求时会遇到同样的错误

【讨论】:

  • 感谢您的回答,我会在 Github 上提出一个问题,因为我也无法在文档中找到 str len 限制。另外,我进行了蛮力测试,发现 9500 是 str len 限制。
【解决方案2】:

9500 个字符 是通过send_message 发送降价消息的字符串长度限制,通过暴力测试发现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多