You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Telethon报ButtonUrlInvalidError错误,请求排查解决

问题描述

展示特定广告时触发错误,报错提示telethon.errors.rpcerrorlist.ButtonUrlInvalidError: Button URL invalid (caused by SendMediaRequest)。相关逻辑为根据luckyButtonNews是否为空构建包含Button.url的键盘,即使已将按钮文本和URL转为字符串,问题仍未解决。

相关代码

if (luckyButtonNews != None):
    print("AAAAA",luckyButtonNews[0][0])
    print("BBBBBBB",luckyButtonNews[0][1])
    # keyboard = [[Button.url(luckyButtonNews[0][0],luckyButtonNews[0][1])]]
    keyboard = [[Button.url(str(luckyButtonNews[0][0]),str(luckyButtonNews[0][1]))]]
else:
    keyboard = [[Button.url('Advertise your project here 📞', "https://t.me/contractchecker")]]

chat = await BOT.get_entity(chatId)

await BOT.send_file(chat, 'giphy.gif', caption= text,buttons=keyboard, parse_mode = 'HTML')
else:
    print("Waiting for the next update")

报错信息

telethon.errors.rpcerrorlist.ButtonUrlInvalidError: Button URL invalid (caused by SendMediaRequest)
排查方向与解决办法
  • 检查URL格式合法性:Telegram要求按钮URL必须以http://或https://开头,不能是无协议的网址(如t.me/xxx)、相对路径,也不能包含空格、换行符、制表符等非法字符。
  • 打印URL原始字符:把打印语句改成print("BBBBBBB", repr(luckyButtonNews[0][1])),repr()会显示所有隐藏字符,排查是否存在肉眼不可见的非法内容。
  • 验证URL有效性:将luckyButtonNews[0][1]的内容复制到浏览器测试能否正常访问;也可以用代码解析验证:
    from urllib.parse import urlparse
    url = str(luckyButtonNews[0][1])
    parsed = urlparse(url)
    # 正常URL需满足scheme为http/https,且域名不为空
    print(parsed.scheme in ['http', 'https'], parsed.netloc)
    
  • 排除空值/空白字符:确认luckyButtonNews[0][1]不是空字符串、仅含空格的字符串,这类内容会被判定为无效URL。

内容的提问来源于stack exchange,提问作者Bartu Bozkurt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 06:11:14