【发布时间】:2018-12-15 20:06:20
【问题描述】:
我刚开始学习 Telegram Bot API,以了解如何通过 Java 编写 Bot。
我不明白该机器人如何识别通过@<username> 提及的用户并获取有关他的信息。
例如,假设我希望我的机器人能够计算并存储用户被提及到组中的次数。他需要的是被标记用户的id。
我可以解析传入消息以使用update.getMessage().getEntities() 检测实体,然后使用MessageEntity.getType() 获取实体类型。现在,如果我理解的话,有两种类型的提及:mention 用于提及通过@<username> 进行的提及,text_mention 用于提及没有用户名的用户。
问题来了,因为我希望机器人能够检索有关具有用户名的用户的更多信息,因为它是可编辑但唯一的,而不是没有用户名的用户,因为他是使用他保存的名称“标记”的在发件人的联系人列表中。
相反,只有text_mention 类型MessageEntity 对象包含User 对象,我可以从中获取用户的id,正如我在Telegram Bot API documentation 中阅读的那样。从mention 输入MessageEntity 对象我可以只获取用户名本身,因为它是文本,但这还不够,因为它可以更改。
所以我的第一个问题是:为什么?我真的不明白为什么text_mention 应该携带有关标记用户的信息,而mention 不应该。
那么主要的问题是:我该如何解决这个问题?
【问题讨论】:
标签: java telegram telegram-bot