Как заставить бота телеграм удалять свои же сообщения?

166
31 мая 2021, 18:20

Хочу, чтобы бот (TelegramLongPollingBot) периодически писал в беседу, что он онлайн и при этом удалял прошлое такое свое оповещение. Код для удаления старого сообщения:

public void onUpdateReceived(Update update) {   
   if (update.getMessage().getText().equals("Bot is online"))
      {
         //пауза несколько минут
         DeleteMessage deleteMessage = new DeleteMessage();
         deleteMessage.setChatId(update.getMessage().getChatId());
         deleteMessage.setMessageId(update.getMessage().getMessageId());
         execute(deleteMessage);
      }
}

Оказалось, что метод onUpdateReceived() вообще не перехватывает сообщения самого бота (но мои сообщения "Bot is online" удаляются).

upd. В мануале нашел: Why doesn't my bot see messages from other bots? Bots talking to each other could potentially get stuck in unwelcome loops. To avoid this, we decided that bots will not be able to see messages from other bots regardless of mode.

Но ведь для удаления сообщения нужно знать его id, а до отправки id неизвестен. Как мне решить эту проблему?

Answer 1

Можно узнать id сообщения при его отправке. Решение:

public void sendMsg(String text) 
    {
        SendMessage message = new SendMessage().setChatId(chatId).setText(text);        
            Message sentOutMessage=execute(message);
            if (text.equals("Bot is online")) 
              {
                DeleteMessage deleteMessage = new DeleteMessage();
                deleteMessage.setChatId(sentOutMessage.getChatId());
                deleteMessage.setMessageId(sentOutMessage.getMessageId());                
                //пауза
                execute(deleteMessage);
              }       
    }
READ ALSO
не работают кнопки на java для андроид приложения

не работают кнопки на java для андроид приложения

не могу понять почему не работает, делаю приложение на андроид 44 в java, три кнопки и текст на экране, каждая кнопка меняет текст, но почему то не работает,...

191
UDP или Websocket

UDP или Websocket

Хочу организовать программу в которой ~1-3 секунды пользователь отсылает запрос на сервер который должен обработать быстро информацию и отправить...

88
Вызов MainActivity.this из класса не MainActivity. Как?

Вызов MainActivity.this из класса не MainActivity. Как?

пытаюсь вызвать MainActivitythis

92
Как отлавливать бездействие на сайте?

Как отлавливать бездействие на сайте?

Хочу на страницах создаваемого сайта отлавливать сабж (допустим 30 сек ни мышки, ни клавы, ни тачпада, ни ресайза) и запускать какую-нибудь...

112