Telegram Bot 检查该机器人是否在群组中被提及

Telegram Bot check whether the bot is mentioned in Group

提问人:esthrim 提问时间:12/10/2018 更新时间:11/18/2023 访问量:2495

问:

如果我的组中有一个机器人,并且我想让机器人仅在消息中提到时才响应,有什么方法可以实现这一点吗?

java python 报 电 报机器人

评论

1赞 Ali Hashemi 12/10/2018
检查@yourbot是否在任何消息中,如果是,则回复。

答:

5赞 marcopiii 4/26/2019 #1

当消息包含按用户名提及时,Message 对象包含一个等于的 MessageEntity(因为机器人始终具有用户名)。 可以检查以获取实体在消息文本中的位置,然后解析消息文本以检查提到的用户名是否是机器人的用户名。MessageEntity.type'mention'MessageEntity.offset

考虑到默认情况下,机器人在隐私模式下运行

在隐私模式下运行的机器人不会收到以下所有消息: 人们发送到群组。相反,它只会接收:

  • 以斜杠“/”开头的邮件
  • 对机器人自身消息的回复
  • 服务消息(在群组中添加或删除的人员等)
  • 来自其所属频道的消息
0赞 Alex Andreychuk 11/18/2023 #2

例如,只需扩展 @marcopiii 给出的答案 - 检查代码可能如下所示:

context.bot.name in [update.message.text[mention.offset:mention.offset + mention.length] for mention in
                            update.message.entities if mention['type'] == 'mention']

其中 和 是默认消息处理程序参数updatecontext