Bot api,如何获取最后一条消息或聊天记录?
Bot api, how i can get last message or chat history?
我想实现一些功能,例如用户向我发送消息,然后我用聊天记录中的(机器人)最新消息回复他。
如您在 Telegram Bot API Documentation 中所见,您可以使用 sendMessage
向用户发送消息。
当你收到消息时,在JSON中查找chat
或from
参数(取决于你是否想在群聊或不是)。您可以使用 chat
或 from
的 id
参数来发送消息。
因此您的 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;
如果您只想回复用户消息,则需要此功能:
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();
}
}
我想实现一些功能,例如用户向我发送消息,然后我用聊天记录中的(机器人)最新消息回复他。
如您在 Telegram Bot API Documentation 中所见,您可以使用 sendMessage
向用户发送消息。
当你收到消息时,在JSON中查找chat
或from
参数(取决于你是否想在群聊或不是)。您可以使用 chat
或 from
的 id
参数来发送消息。
因此您的 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;
如果您只想回复用户消息,则需要此功能:
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();
}
}