Telegram Bot 收不到普通群聊消息的问题
当我们写好一个 Telegram Bot 之后, 把它拉到一个群里, 然后在群里发一条命令, 机器人马上就收到了命令.但是我们在群里发送一个普通消息(不以 / 开头的消息), 我们发现机器人没有收到这条消息.以下是我的代码
public class DoipayHandlers extends TelegramLongPollingBot implements TelegramTemplate {
@Override
public String getBotUsername() {
return "userName";
}
@Override
public String getBotToken() {
return "token";
}
@Override
public void onUpdateReceived(Update update) {
// update里封装的有我们群聊里的消息,默认只能收到以"/"开头的消息
log.info("接收到的tg消息={}",JSONObject.toJSONString(update.getMessage().getText()));
}
}
我们私聊机器人, 机器人是能收到消息的. 换一个群, 依然收不到普通群聊消息, 但是能收到群里发的命令(命令一定是以 / 开头的).
这个问题是由于 Telegram Bot 的 privacy 设置问题导致的. 详见https://core.telegram.org/bots#privacy-mode
更改 privacy mode 非常简单, 首先我们联系 BotFather https://telegram.me/BotFather
然后输入命令
/setprivacy
注意:选择自己的机器人, 一定是要自己创建的,否则会报 Invalid bot selected.
然后选择 Disable.就可以将自己的机器人的 privacy mode 设置为 DISABLED.但是我们发现我们的机器人依然收不到消息.我们将机器人踢出群, 再拉进群, 就可以收到消息了,我在群聊发了11,此时再看下日志打印的消息
明显能看到正常收到消息了