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

使用python_telegram_bot库通过Telegram ID发消息遇chat not found问题求助

解决python_telegram_bot发送消息提示"chat not found"的问题

核心原因

Telegram的Bot有个硬性规则:Bot无法主动给从未和它发起过对话的用户发消息。你能给自己发消息,是因为你已经和Bot产生过交互(比如发过消息、启动过Bot),而其他用户没和你的Bot聊过,所以Bot找不到对应的会话。

其他可能原因及排查方法

  • Chat ID错误
    • 别把用户的用户名(比如@xxx)当成chat ID,正确的chat ID是纯数字格式。可以让目标用户给Bot发一条消息,再通过代码获取正确的数字ID。
  • 用户屏蔽了Bot
    • 如果用户之前屏蔽过你的Bot,哪怕之前聊过,也会触发这个错误,需要用户解除屏蔽后重新和Bot交互。
  • Bot隐私模式限制
    • 若Bot开启了隐私模式,可能无法给非交互用户发消息。可以给BotFather发/setprivacy,选择Disable关闭隐私模式。

具体解决步骤

  1. 让目标用户先给你的Bot发送任意消息(比如/start),建立会话关系。
  2. 添加代码获取用户的正确数字ID:
    from telegram.ext import MessageHandler, Filters
    
    def get_chat_id(update, context):
        print(f"用户Chat ID:{update.effective_chat.id}")
    
    updater.dispatcher.add_handler(MessageHandler(Filters.text, get_chat_id))
    updater.start_polling()
    
  3. 使用获取到的纯数字ID调用发送接口:
    updater = Updater(mybot_token, use_context=True)
    updater.bot.send_message(chat_id=获取到的数字ID, text="welcome")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 04:54:16