gpt4 book ai didi

java - 如何让 Telegram Bot 从提及中获取用户信息

转载 作者:行者123 更新时间:2023-12-02 11:02:28 27 4
gpt4 key购买 nike

我刚刚开始研究 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com