首页 > 解决方案 > 告诉我一些关于 Telegram API 的事情,例如:聊天 ID、用户 ID

问题描述

我有一个 Telegram 机器人。它的功能非常简单。我所需要的只是机器人向我发送人们发送给他的所有消息。

但要准确地向我发送消息,需要聊天 ID。我明白了,但问题如下:这个聊天 ID - 唯一且恒定的值,是否完全属于我的电报帐户,如果不是,实际上是什么聊天 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);
}

等待回复。

标签: botstelegram

解决方案


Chat.id唯一标识聊天,同时User.id唯一标识用户。

在私人聊天中,这两个值是一致的,因此您可以通过以下两种方式获取该信息,而在群聊中,只有第一个会为您提供实际的发件人 ID,而第二个将为您提供群组的 ID

update.getMessage().getFrom().getId();
update.getMessage().getChat().getId();

在您报告的代码段中,您正在使用一个名为sendMessage()但在您正在使用的 rubenlagus 的 java 库中已弃用的方法。相反,您应该执行以下操作:

SendMessage replyMessage = new SendMessage()
            .setChatId(arthurChat)
            .setText(whateverTextYouWantToSend);
execute(replyMessage);

推荐阅读