6

我想实现一些功能,例如用户向我发送消息,然后我用聊天记录中的(机器人)最新消息回复他。

4

2 回答 2

2

正如您在Telegram Bot API 文档中看到的,您可以使用sendMessage它向用户发送消息。

当您收到消息时,在 JSON 中查找chatfrom参数(取决于您是否要在群聊时回复此人)。您可以使用or的id参数来发送消息。chatfrom

所以你的 sendMessage 的第一个参数是chat_id=message.chat.id

对于此示例,您不需要parse_mode,disable_web_page_preview和。reply_markup

当您想回复用户的消息时,您可能需要将 设置为reply_to_message_id接收到的消息的 id。

reply_to_message_id = message.message_id

最后但并非最不重要的一点是,您要设置text参数。如果我理解正确,您的程序会将最后收到的信息发送message.text给用户。

所以你要做的是,一旦你收到一条消息,就保存它。

Message oldMessage = message

当您向用户发送消息时,使用旧消息text属性作为文本。

text = oldMessage.text

好吧,在这里总结一下,只要你收到一条消息就会发生的函数的伪代码:

Message oldMessage = null;

public void NewMessage(Message message){

    int chat_id = message.chat.id;
    int reply_to_message_id = message.message_id;

    String text = "There is no old Message"; //fallback value

    if(oldMessage != null){
        text = oldMessage.text;
    }

    //Send Message in this example only has 3 parameters, and ignores the 
    //not used ones
    SendMessage(chat_id,text,reply_to_message_id);

    oldMessage = message; //store the received message for future answering

}

当您存储整个消息时,oldMessage您还可以将要发送的文本设置为:

String text = oldMessage.from.first_name+": "+oldMessage.text;
于 2015-09-30T13:18:05.667 回答
0

如果您只是想回复用户消息,则需要此功能:

public void sendMsg(Message message, String text){
    SendMessage sendMessage = new SendMessage();
    sendMessage.enableMarkdown(true);
    sendMessage.setChatId(message.getChatId().toString());
    sendMessage.setReplyToMessageId(message.getMessageId());
    sendMessage.setText(text);
    try{
        setButtons(sendMessage);
        sendMessage(sendMessage);
    }catch (TelegramApiException e){
        e.printStackTrace();
    }
}
于 2020-04-23T11:58:47.510 回答