我有一个 Telegram 机器人。它的功能非常简单。我所需要的只是机器人向我发送人们发送给他的所有消息。
但要准确地向我发送消息,需要聊天 ID。我明白了,但问题如下:这个聊天 ID 是否是唯一且恒定的值,是否完全属于我的 Telegram 帐户?如果不是,那么实际上的聊天 ID 是什么以及它是如何工作的。
我还发现我可以获得发件人的用户 ID。我可以不使用聊天 ID 而是使用也很容易获得的用户 ID 从 Bot 发送消息吗?
顺便说一句,我正在使用Java SDK。谢谢。
我尝试通过向机器人添加一个功能来获取我自己帐户的聊天 ID:将其聊天 ID 发送给发件人。代码如下所示。它有效,但我不确定它是否正确。
if (!update.getMessage().isCommand()) {
String senderId;
User sender = update.getMessage().getFrom();
String messageText = update.getMessage().getText();
if(update.getMessage().getFrom().getUserName() != null) {
senderId = "@" + sender.getUserName();
} else {
senderId = sender.getFirstName() + " " + sender.getLastName();
}
Long arthurChat = 100000001L;
sendMessage(arthurChat, "Message: " + messageText + "\n" + "Sender: " + senderId);
}
Run Code Online (Sandbox Code Playgroud)
等待回复。
Chat.id唯一标识一次聊天,同时User.id唯一标识一个用户。
在私人聊天中,这两个值是一致的,因此您可以通过以下两种方式获取该信息,而在群聊中,只有第一个会给您实际的发件人 ID,而第二个会给您群组的 ID
update.getMessage().getFrom().getId();
update.getMessage().getChat().getId();
Run Code Online (Sandbox Code Playgroud)
在您报告的代码片段中,您正在使用名为 的方法sendMessage(),但在您正在使用的 rubenlagus 的 java 库中已弃用该方法。相反,您应该执行以下操作:
SendMessage replyMessage = new SendMessage()
.setChatId(arthurChat)
.setText(whateverTextYouWantToSend);
execute(replyMessage);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1814 次 |
| 最近记录: |