Bot api,我怎么能得到最后的消息或聊天记录?

时间:2015-09-30 11:57:39

标签: telegram-bot

我希望实现一些功能,比如用户给我发消息,然后用聊天记录中的(bot)最新消息回复他。

2 个答案:

答案 0 :(得分:3)

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

当您收到消息时,请在JSON中查找chatfrom参数(取决于您是否想要在群聊时回答此人)。您可以使用idchat的{​​{1}}参数发送消息。

因此,sendMessage的第一个参数是from

此示例中您不需要chat_id=message.chat.idparse_modedisable_web_page_preview

如果您想回复用户的邮件,您可能需要将reply_markup设置为收到邮件的ID。

reply_to_message_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

答案 1 :(得分: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();
    }
}