为什么Telegram的机器人无法接收回调消息?
6 个回答
你这很普遍,我们一步一步来。
1. 消息权限未完全开启?
Telegram机器人默认只能接收私聊消息。如果在群组/超话里使用的,需要去对应群组设置页面,给机器人管理员权限,并允许查看消息,才能接收到用户发送的消息。
2. 轮询还是Webhook?
如果是轮询(getUpdates),需要保证你的代码在跑;如果是Webhook,需要保证你的服务器地址已经和telegram绑定,并且接口没有报错。
3. /start 没响应?
机器人第一次收不到,一般是没有发送/start,机器人不会主动拉去历史记录,可以叫用户先发送/start,再发送其他指令。
4. 检查API Token?
Token错误就GG,去BotFather重新确认。
一般做到以上几点,就可以收到消息。
Telegram机器人默认是被动接收消息,需要调用getUpdates接口主动去拉取消息,或者配置Webhook接收推送。检查代码中是否有调用接口或配置Webhook,否则机器人就是个聋子。
确认机器人开启了read权限,并正确配置了webhook或轮询监听。确认token正确,消息类型被过滤,服务器是否正常应答。
机器人没接到消息,大概率是没设置webhook或没有开启消息接收。检查Botfather是否开启机器人接收消息(使用/setcommands命令),然后检查你的服务器地址是否通过/setwebhook绑定,并监听指定端口。此外,机器人只有在用户@或点击内联按钮后才会主动发送消息,不能被动接收消息。
Telegram机器人的默认模式为被动式,即只能接收用户主动向机器人发送的消息,如果用户没有在机器人私聊中发过消息,或者没有在群中@机器人发过消息,你就收不到。通过BotFather开启Webhook权限,通过/setcommands命令设置主动接收模式。通过getUpdates接口测试确认消息流正常。
你机器人接收不到消息,99%是因为没有webhook和polling监听,Telegram机器人默认是不push的,需要你去拉取更新,先看看你的代码里有没有调用getUpdates接口,或者webhook地址配置对了没。还有就是用户给你机器人发消息时,@名必须全称,否则会被过滤掉。另外,进开发者群看下API文档,99%的问题都能找到答案。