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

为何Telegram Bot无法发送消息?附代码及运行环境

Telegram Bot无法发送消息的排查方案
  • getUpdates接口调用问题:你的get_chat_id函数直接取result[0],如果Bot最近没收到任何消息(比如你很久没给Bot发过消息),result会是空列表,这时候会抛出索引错误。另外,调用getUpdates接口官方推荐用GET请求,虽然POST也能工作,但更规范。建议先给Bot发一条消息再运行代码,或者给函数加异常处理:
def get_chat_id(bot_token):
    request = requests.get(f'https://api.telegram.org/bot{bot_token}/getUpdates')
    result = request.json()['result']
    if not result:
        raise ValueError("Bot没有收到任何更新,请先给Bot发一条消息")
    return result[0]['message']['chat']['id']
  • Bot权限与对话限制:

    • 私人聊天:Bot不能主动给未发过消息的用户发消息,必须你先给Bot发一条消息,Bot才能获取到你的chat_id并发送消息。
    • 群组/频道:如果是给群组发消息,要确保Bot已经被添加到群组,并且拥有发送消息的权限(至少要有普通成员的发消息权限,必要时设为管理员)。
  • 库版本与方法名问题:你导入的telegram库如果是python-telegram-bot,不同版本方法名有差异:

    • v13及更早版本用sendMessage
    • v20+版本已改为send_message(小写加下划线)
      先检查库版本:
    pip show python-telegram-bot
    

    如果是v20+,把my_bot.sendMessage改成my_bot.send_message。另外注意,别误装了telegram这个功能有限的库,建议卸载后安装正确的库:

    pip uninstall telegram
    pip install python-telegram-bot
    
  • Token正确性:确认你的bot_token是从BotFather获取的完整正确值,格式应为123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11,不要漏字符或加多余符号。

内容的提问来源于stack exchange,提问作者John Doe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 00:22:05