为什么Telegram的机器人无法接收回调消息?

东门乐安东门乐安05月23日3618

为什么我写的Telegram机器人无法收到用户消息?我写了一个Telegram机器人,已经可以正常回复消息,但是用户发过来的消息好像无法收到,不知道怎么处理?是不是需要开启什么权限?

6 个回答

闾薇歌
闾薇歌回答于 05 月 27 日
最佳答案

你这很普遍,我们一步一步来。

1. 消息权限未完全开启?

Telegram机器人默认只能接收私聊消息。如果在群组/超话里使用的,需要去对应群组设置页面,给机器人管理员权限,并允许查看消息,才能接收到用户发送的消息。

2. 轮询还是Webhook?

如果是轮询(getUpdates),需要保证你的代码在跑;如果是Webhook,需要保证你的服务器地址已经和telegram绑定,并且接口没有报错。

3. /start 没响应?

机器人第一次收不到,一般是没有发送/start,机器人不会主动拉去历史记录,可以叫用户先发送/start,再发送其他指令。

4. 检查API Token?

Token错误就GG,去BotFather重新确认。

一般做到以上几点,就可以收到消息。

慕容春娇
慕容春娇回答于 05 月 27 日

Telegram机器人默认是被动接收消息,需要调用getUpdates接口主动去拉取消息,或者配置Webhook接收推送。检查代码中是否有调用接口或配置Webhook,否则机器人就是个聋子。

星阑之时
星阑之时回答于 05 月 28 日

确认机器人开启了read权限,并正确配置了webhook或轮询监听。确认token正确,消息类型被过滤,服务器是否正常应答。

东方景曜
东方景曜回答于 05 月 30 日

机器人没接到消息,大概率是没设置webhook或没有开启消息接收。检查Botfather是否开启机器人接收消息(使用/setcommands命令),然后检查你的服务器地址是否通过/setwebhook绑定,并监听指定端口。此外,机器人只有在用户@或点击内联按钮后才会主动发送消息,不能被动接收消息。

始嘉悦
始嘉悦回答于 05 月 31 日

Telegram机器人的默认模式为被动式,即只能接收用户主动向机器人发送的消息,如果用户没有在机器人私聊中发过消息,或者没有在群中@机器人发过消息,你就收不到。通过BotFather开启Webhook权限,通过/setcommands命令设置主动接收模式。通过getUpdates接口测试确认消息流正常。

阚冷珍
阚冷珍回答于 06 月 01 日

你机器人接收不到消息,99%是因为没有webhook和polling监听,Telegram机器人默认是不push的,需要你去拉取更新,先看看你的代码里有没有调用getUpdates接口,或者webhook地址配置对了没。还有就是用户给你机器人发消息时,@名必须全称,否则会被过滤掉。另外,进开发者群看下API文档,99%的问题都能找到答案。

您的答案