mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2024-11-22 08:13:47 +00:00
telegramBotWithBehaviour
This commit is contained in:
parent
45b32fd6f7
commit
55b1d3734d
@ -2,6 +2,9 @@
|
|||||||
|
|
||||||
## 0.35.1
|
## 0.35.1
|
||||||
|
|
||||||
|
* `Behaviour Builder`:
|
||||||
|
* New extensions `telegramBotWithBehaviour`
|
||||||
|
|
||||||
## 0.35.0
|
## 0.35.0
|
||||||
|
|
||||||
**ALL PREVIOUS DEPRECATIONS HAVE BEEN REMOVED**
|
**ALL PREVIOUS DEPRECATIONS HAVE BEEN REMOVED**
|
||||||
|
@ -12,7 +12,7 @@ klock_version=2.1.2
|
|||||||
uuid_version=0.3.0
|
uuid_version=0.3.0
|
||||||
ktor_version=1.6.0
|
ktor_version=1.6.0
|
||||||
|
|
||||||
micro_utils_version=0.5.6
|
micro_utils_version=0.5.12
|
||||||
|
|
||||||
javax_activation_version=1.1.1
|
javax_activation_version=1.1.1
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ bot.startGettingFlowsUpdatesByLongPolling {
|
|||||||
This library offer other way to do a lot of routine in more simple way:
|
This library offer other way to do a lot of routine in more simple way:
|
||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
telegramBot(token) {
|
telegramBotWithBehaviour(token) {
|
||||||
onCommand("start".regex) {
|
onCommand("start".regex) {
|
||||||
execute(SendTextMessage(it.chat.id, "This bot can ...")) // replaceable with reply(it, "This bot can ...") when you are using `tgbotapi.extensions.api`
|
execute(SendTextMessage(it.chat.id, "This bot can ...")) // replaceable with reply(it, "This bot can ...") when you are using `tgbotapi.extensions.api`
|
||||||
}
|
}
|
||||||
@ -28,7 +28,7 @@ In terminology of this project the `Triggers` are things which have no initial m
|
|||||||
messages and filter messages for context which will be used in subcontext. Full syntax with `onText` as an example:
|
messages and filter messages for context which will be used in subcontext. Full syntax with `onText` as an example:
|
||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
telegramBot(TOKEN) {
|
telegramBotWithBehaviour(TOKEN) {
|
||||||
onText(
|
onText(
|
||||||
includeFilterByChatInBehaviourSubContext = true, // if false - last lambda will receive all messages instead of filtered by chat messages
|
includeFilterByChatInBehaviourSubContext = true, // if false - last lambda will receive all messages instead of filtered by chat messages
|
||||||
additionalFilter = { message: CommonMessage<TextContent> ->
|
additionalFilter = { message: CommonMessage<TextContent> ->
|
||||||
@ -45,7 +45,7 @@ telegramBot(TOKEN) {
|
|||||||
Waiters targeted to get some content "here and now", they must be used inside some trigger main lambda:
|
Waiters targeted to get some content "here and now", they must be used inside some trigger main lambda:
|
||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
telegramBot(TOKEN) {
|
telegramBotWithBehaviour(TOKEN) {
|
||||||
onCommand("start") { message: CommonMessage<TextContent> ->
|
onCommand("start") { message: CommonMessage<TextContent> ->
|
||||||
val userPhotos = waitPhoto(
|
val userPhotos = waitPhoto(
|
||||||
SendTextMessage(it.chat.id, "Ok, send me some photo, please"), // init request, can be any `Request` object
|
SendTextMessage(it.chat.id, "Ok, send me some photo, please"), // init request, can be any `Request` object
|
||||||
|
@ -0,0 +1,75 @@
|
|||||||
|
package dev.inmo.tgbotapi.extensions.behaviour_builder
|
||||||
|
|
||||||
|
import dev.inmo.tgbotapi.bot.Ktor.KtorRequestsExecutorBuilder
|
||||||
|
import dev.inmo.tgbotapi.bot.Ktor.telegramBot
|
||||||
|
import dev.inmo.tgbotapi.bot.TelegramBot
|
||||||
|
import dev.inmo.tgbotapi.extensions.utils.updates.retrieving.startGettingOfUpdatesByLongPolling
|
||||||
|
import dev.inmo.tgbotapi.updateshandlers.FlowsUpdatesFilter
|
||||||
|
import dev.inmo.tgbotapi.utils.telegramBotAPIDefaultUrl
|
||||||
|
import kotlinx.coroutines.*
|
||||||
|
import kotlin.coroutines.coroutineContext
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create bot using [telegramBot] and start listening for updates using [buildBehaviour].
|
||||||
|
* Use this method in case you wish to make some additional actions with [flowsUpdatesFilter].
|
||||||
|
*
|
||||||
|
* **WARNING** This method WILL NOT launch any listening of updates. Use something like
|
||||||
|
* [startGettingOfUpdatesByLongPolling] or tools for work with webhooks
|
||||||
|
*
|
||||||
|
* @return Created bot which has been used to create [BehaviourContext] via [buildBehaviour]
|
||||||
|
*
|
||||||
|
* @see [BehaviourContext]
|
||||||
|
* @see [buildBehaviour]
|
||||||
|
* @see startGettingOfUpdatesByLongPolling
|
||||||
|
*/
|
||||||
|
suspend fun telegramBotWithBehaviour(
|
||||||
|
token: String,
|
||||||
|
flowsUpdatesFilter: FlowsUpdatesFilter,
|
||||||
|
scope: CoroutineScope? = null,
|
||||||
|
apiUrl: String = telegramBotAPIDefaultUrl,
|
||||||
|
builder: KtorRequestsExecutorBuilder.() -> Unit = {},
|
||||||
|
block: BehaviourContextReceiver<Unit>
|
||||||
|
): TelegramBot = telegramBot(
|
||||||
|
token,
|
||||||
|
apiUrl,
|
||||||
|
builder
|
||||||
|
).apply {
|
||||||
|
buildBehaviour(
|
||||||
|
scope ?: CoroutineScope(coroutineContext),
|
||||||
|
flowsUpdatesFilter,
|
||||||
|
block
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create bot using [telegramBot] and start listening for updates using [buildBehaviour].
|
||||||
|
* Use this method in case you wish to make some additional actions with [flowsUpdatesFilter].
|
||||||
|
*
|
||||||
|
* **WARNING** This method WILL NOT launch any listening of updates. Use something like
|
||||||
|
* [startGettingOfUpdatesByLongPolling] or tools for work with webhooks
|
||||||
|
*
|
||||||
|
* @return Pair of [TelegramBot] and [Job]. This [Job] can be used to stop listening updates in your [block] you passed
|
||||||
|
* here
|
||||||
|
*
|
||||||
|
* @see [BehaviourContext]
|
||||||
|
* @see [buildBehaviour]
|
||||||
|
* @see startGettingOfUpdatesByLongPolling
|
||||||
|
*/
|
||||||
|
suspend fun telegramBotWithBehaviour(
|
||||||
|
token: String,
|
||||||
|
scope: CoroutineScope? = null,
|
||||||
|
apiUrl: String = telegramBotAPIDefaultUrl,
|
||||||
|
builder: KtorRequestsExecutorBuilder.() -> Unit = {},
|
||||||
|
block: BehaviourContextReceiver<Unit>
|
||||||
|
): Pair<TelegramBot, Job> {
|
||||||
|
return telegramBot(
|
||||||
|
token,
|
||||||
|
apiUrl,
|
||||||
|
builder
|
||||||
|
).let {
|
||||||
|
it to it.buildBehaviour(
|
||||||
|
scope ?: CoroutineScope(coroutineContext),
|
||||||
|
block
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user