Skip to content

Long polling

Long polling is a technology of getting updates for cases you do not have some dedicated server or you have no opportunity to receive updates via webhooks. More about this you can read in wiki.

Long polling in this library

There are a lot of ways to include work with long polling:

  • RequestsExecutor#longPollingFlow Is the base way to get all updates cold Flow. Remember, that this flow will not be launched automatically
    • RequestsExecutor#startGettingOfUpdatesByLongPolling Old and almost deprecated way
    • RequestsExecutor#longPolling Works like startGettingOfUpdatesByLongPolling but shorted in a name :)
  • RequestsExecutor#createAccumulatedUpdatesRetrieverFlow Works like longPollingFlow, but flow inside will return only the updates accumulated at the moment of calls (all new updates will not be passed throw this flow)
    • RequestsExecutor#retrieveAccumulatedUpdates Use createAccumulatedUpdatesRetrieverFlow to perform all accumulated updates
    • RequestsExecutor#flushAccumulatedUpdates Works like retrieveAccumulatedUpdates but perform all updates directly in a place of calling
  • By yourself with GetUpdates request or RequestsExecutor#getUpdates extension

longPolling

longPolling is a simple way to start getting updates and work with bot:

val bot = telegramBot(token)
bot.longPolling(
  textMessages().subscribe(scope) { // here "scope" is a CoroutineScope
    println(it) // will be printed each update from chats with messages
  }
)

startGettingOfUpdatesByLongPolling

The main aim of startGettingOfUpdatesByLongPolling extension was to provide more simple way to get updates in automatic mode:

val bot = telegramBot(token)
bot.startGettingOfUpdatesByLongPolling(
  {
    println(it) // will be printed each update from chats with messages
  }
)

The other way is to use the most basic startGettingOfUpdatesByLongPolling extension:

val bot = telegramBot(token)
bot.startGettingOfUpdatesByLongPolling {
  println(it) // will be printed each update
}

See also