- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚刚开始研究 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
不应该。
那么主要问题是:我该如何解决这个问题?
最佳答案
目前没有正确的方法可以做到这一点。
对于此类功能,您可以使用 TdLib 。这里是Java examples
如果用户在提到的组中,您可以使用此类方法来获取用户列表并按用户名查找:
//@description Return recently joined users in reverse chronological order
channelParticipantsRecent = ChannelParticipantsFilter;
//@description Return privileged participants
channelParticipantsAdmins = ChannelParticipantsFilter;
//@description Return kicked from the channel
channelParticipantsKicked = ChannelParticipantsFilter;
//@description Return bots in the channel
channelParticipantsBots = ChannelParticipantsFilter;
关于java - 如何让 Telegram Bot 从提及中获取用户信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51223524/
我是一名优秀的程序员,十分优秀!