使用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关闭隐私模式。
- 若Bot开启了隐私模式,可能无法给非交互用户发消息。可以给BotFather发
具体解决步骤
- 让目标用户先给你的Bot发送任意消息(比如
/start),建立会话关系。 - 添加代码获取用户的正确数字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() - 使用获取到的纯数字ID调用发送接口:
updater = Updater(mybot_token, use_context=True) updater.bot.send_message(chat_id=获取到的数字ID, text="welcome")
内容的提问来源于stack exchange,提问作者mingxingwang
相关产品推荐
相关产品推荐

