mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2024-11-26 03:58:44 +00:00
fixes, new readme
This commit is contained in:
parent
0db85232d3
commit
d8492ae168
@ -46,7 +46,7 @@
|
|||||||
* Subproject was added
|
* Subproject was added
|
||||||
* `filterByChat` and `filterByChatId` extensions was added
|
* `filterByChat` and `filterByChatId` extensions was added
|
||||||
* `filterExactCommands` and `filterCommandsInsideTextMessages` extensions was added
|
* `filterExactCommands` and `filterCommandsInsideTextMessages` extensions was added
|
||||||
* `asContentMessages`, `asChatEvents` and `asUnknownMessages` extensions was added
|
* `asContentMessagesFlow`, `asChatEventsFlow` and `asUnknownMessagesFlow` extensions was added
|
||||||
* `withContentType` extension was added
|
* `withContentType` extension was added
|
||||||
* `onlyAnimationContentMessages` extension was added
|
* `onlyAnimationContentMessages` extension was added
|
||||||
* `onlyAudioContentMessages` extension was added
|
* `onlyAudioContentMessages` extension was added
|
||||||
|
@ -1,9 +1,7 @@
|
|||||||
# TelegramBotAPI extensions
|
# TelegramBotAPI extensions
|
||||||
|
|
||||||
[![Awesome Kotlin Badge](https://kotlin.link/awesome-kotlin.svg)](https://github.com/KotlinBy/awesome-kotlin)
|
|
||||||
[![Download](https://api.bintray.com/packages/insanusmokrassar/StandardRepository/TelegramBotAPI-extensions-api/images/download.svg) ](https://bintray.com/insanusmokrassar/StandardRepository/TelegramBotAPI-extensions-api/_latestVersion)
|
[![Download](https://api.bintray.com/packages/insanusmokrassar/StandardRepository/TelegramBotAPI-extensions-api/images/download.svg) ](https://bintray.com/insanusmokrassar/StandardRepository/TelegramBotAPI-extensions-api/_latestVersion)
|
||||||
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.github.insanusmokrassar/TelegramBotAPI-extensions-api/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.github.insanusmokrassar/TelegramBotAPI-extensions-api)
|
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.github.insanusmokrassar/TelegramBotAPI-extensions-api/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.github.insanusmokrassar/TelegramBotAPI-extensions-api)
|
||||||
[![Build Status](https://jenkins.insanusmokrassar.com/buildStatus/icon?job=TelegramBotAPI-extensions-api_master__publishing)](https://jenkins.insanusmokrassar.com/job/TelegramBotAPI-extensions-api_master__publishing/)
|
|
||||||
|
|
||||||
## What is it?
|
## What is it?
|
||||||
|
|
||||||
@ -99,3 +97,21 @@ filter.messageFlow.mapNotNull {
|
|||||||
CoroutineScope(Dispatchers.Default)
|
CoroutineScope(Dispatchers.Default)
|
||||||
)
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Alternative way
|
||||||
|
|
||||||
|
There is an alternative way to get updates. In fact it is almost the same, but could be more useful for some cases:
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
val filter = bot.startGettingOfUpdates(
|
||||||
|
scope = CoroutineScope(Dispatchers.Default)
|
||||||
|
) { // Here as reveiver will be FlowsUpdatesFilter
|
||||||
|
messageFlow.mapNotNull {
|
||||||
|
it.data as? ContentMessage<*>
|
||||||
|
}.onEach {
|
||||||
|
println(it)
|
||||||
|
}.launchIn(
|
||||||
|
CoroutineScope(Dispatchers.Default)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
81
TelegramBotAPI-extensions-utils/README.md
Normal file
81
TelegramBotAPI-extensions-utils/README.md
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
# TelegramBotAPI Util Extensions
|
||||||
|
|
||||||
|
[![Download](https://api.bintray.com/packages/insanusmokrassar/StandardRepository/TelegramBotAPI-extensions-api/images/download.svg) ](https://bintray.com/insanusmokrassar/StandardRepository/TelegramBotAPI-extensions-utils/_latestVersion)
|
||||||
|
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.github.insanusmokrassar/TelegramBotAPI-extensions-api/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.github.insanusmokrassar/TelegramBotAPI-extensions-utils)
|
||||||
|
|
||||||
|
## What is it?
|
||||||
|
|
||||||
|
It is wrapper library for [TelegramBotAPI](../TelegramBotAPI/README.md). Currently, this library contains some usefull filters for commands, updates types and different others.
|
||||||
|
|
||||||
|
## How to implement library?
|
||||||
|
|
||||||
|
Common ways to implement this library are presented here. In some cases it will require additional steps
|
||||||
|
like inserting of additional libraries (like `kotlin stdlib`). In the examples will be used variable
|
||||||
|
`telegrambotapi-extensions-utils_version`, which must be set up by developer. Available versions are presented on
|
||||||
|
[bintray](https://bintray.com/insanusmokrassar/StandardRepository/TelegramBotAPI-extensions-utils), next version is last published:
|
||||||
|
|
||||||
|
[![Download](https://api.bintray.com/packages/insanusmokrassar/StandardRepository/TelegramBotAPI-extensions-utils/images/download.svg) ](https://bintray.com/insanusmokrassar/StandardRepository/TelegramBotAPI-extensions-utils/_latestVersion)
|
||||||
|
|
||||||
|
### Maven
|
||||||
|
|
||||||
|
Dependency config presented here:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.github.insanusmokrassar</groupId>
|
||||||
|
<artifactId>TelegramBotAPI-extensions-utils</artifactId>
|
||||||
|
<version>${telegrambotapi-extensions-utils_version}</version>
|
||||||
|
</dependency>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Gradle
|
||||||
|
|
||||||
|
To use last versions you will need to add one line in repositories block of your `build.gradle`:
|
||||||
|
|
||||||
|
`jcenter()` or `mavenCentral()`
|
||||||
|
|
||||||
|
And add next line to your dependencies block:
|
||||||
|
|
||||||
|
```groovy
|
||||||
|
implementation "com.github.insanusmokrassar:TelegramBotAPI-extensions-utils:$telegrambotapi-extensions-utils_version"
|
||||||
|
```
|
||||||
|
|
||||||
|
or for old gradle:
|
||||||
|
|
||||||
|
```groovy
|
||||||
|
compile "com.github.insanusmokrassar:TelegramBotAPI-extensions-utils:$telegrambotapi-extensions-utils_version"
|
||||||
|
```
|
||||||
|
|
||||||
|
## How to use?
|
||||||
|
|
||||||
|
Here will be presented several examples of usage. In all cases it is expected that you have created your bot and filter:
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
val bot: RequestsExecutor = KtorRequestsExecutor(
|
||||||
|
TelegramAPIUrlsKeeper(BOT_TOKEN)
|
||||||
|
)
|
||||||
|
val filter = FlowsUpdatesFilter(64)
|
||||||
|
```
|
||||||
|
|
||||||
|
Alternative way to use the things below:
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
val filter = bot.startGettingUpdates(
|
||||||
|
scope = CoroutineScope(Dispatchers.Default)
|
||||||
|
) {
|
||||||
|
// place code from examples here with replacing of `filter` by `this`
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Getting of only text incoming messages
|
||||||
|
|
||||||
|
```kotlin
|
||||||
|
filter.asContentMessagesFlow().onlyTextContentMessages().onEach {
|
||||||
|
println(it.content)
|
||||||
|
println(it.fullEntitiesList())
|
||||||
|
}.launchIn(
|
||||||
|
CoroutineScope(Dispatchers.Default)
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
As a result, each received message which will be just text message will be printed out with full list of its internal entities
|
@ -0,0 +1,12 @@
|
|||||||
|
package com.github.insanusmokrassar.TelegramBotAPI.extensions.utils
|
||||||
|
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.CallbackQuery.*
|
||||||
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
import kotlinx.coroutines.flow.mapNotNull
|
||||||
|
|
||||||
|
fun <T : CallbackQuery> Flow<T>.onlyMessageDataCallbackQueries() = mapNotNull {
|
||||||
|
it as? MessageDataCallbackQuery
|
||||||
|
}
|
||||||
|
fun <T : CallbackQuery> Flow<T>.onlyInlineMessageIdDataCallbackQueries() = mapNotNull {
|
||||||
|
it as? InlineMessageIdDataCallbackQuery
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
package com.github.insanusmokrassar.TelegramBotAPI.extensions.utils.updates
|
||||||
|
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.CallbackQuery.*
|
||||||
|
import com.github.insanusmokrassar.TelegramBotAPI.types.update.CallbackQueryUpdate
|
||||||
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
import kotlinx.coroutines.flow.mapNotNull
|
||||||
|
|
||||||
|
fun Flow<CallbackQueryUpdate>.asDataCallbackQueryFlow() = mapNotNull {
|
||||||
|
it.data as? DataCallbackQuery
|
||||||
|
}
|
||||||
|
fun Flow<CallbackQueryUpdate>.asGameShortNameCallbackQueryFlow() = mapNotNull {
|
||||||
|
it.data as? GameShortNameCallbackQuery
|
||||||
|
}
|
||||||
|
fun Flow<CallbackQueryUpdate>.asUnknownCallbackQueryFlow() = mapNotNull {
|
||||||
|
it.data as? UnknownCallbackQueryType
|
||||||
|
}
|
@ -9,13 +9,13 @@ import kotlinx.coroutines.flow.filter
|
|||||||
|
|
||||||
fun <T : BaseSentMessageUpdate> Flow<T>.filterExactCommands(
|
fun <T : BaseSentMessageUpdate> Flow<T>.filterExactCommands(
|
||||||
commandRegex: Regex
|
commandRegex: Regex
|
||||||
) = asContentMessages().onlyTextContentMessages().filter { contentMessage ->
|
) = asContentMessagesFlow().onlyTextContentMessages().filter { contentMessage ->
|
||||||
(contentMessage.content.fullEntitiesList().singleOrNull() as? BotCommandTextSource) ?.let { commandRegex.matches(it.command) } == true
|
(contentMessage.content.fullEntitiesList().singleOrNull() as? BotCommandTextSource) ?.let { commandRegex.matches(it.command) } == true
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <T : BaseSentMessageUpdate> Flow<T>.filterCommandsInsideTextMessages(
|
fun <T : BaseSentMessageUpdate> Flow<T>.filterCommandsInsideTextMessages(
|
||||||
commandRegex: Regex
|
commandRegex: Regex
|
||||||
) = asContentMessages().onlyTextContentMessages().filter { contentMessage ->
|
) = asContentMessagesFlow().onlyTextContentMessages().filter { contentMessage ->
|
||||||
contentMessage.content.fullEntitiesList().any {
|
contentMessage.content.fullEntitiesList().any {
|
||||||
(it as? BotCommandTextSource) ?.let { commandRegex.matches(it.command) } == true
|
(it as? BotCommandTextSource) ?.let { commandRegex.matches(it.command) } == true
|
||||||
}
|
}
|
||||||
|
@ -5,14 +5,14 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.update.abstracts.BaseSen
|
|||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.mapNotNull
|
import kotlinx.coroutines.flow.mapNotNull
|
||||||
|
|
||||||
fun <T : BaseSentMessageUpdate> Flow<T>.asContentMessages() = mapNotNull {
|
fun <T : BaseSentMessageUpdate> Flow<T>.asContentMessagesFlow() = mapNotNull {
|
||||||
it.data as? ContentMessage<*>
|
it.data as? ContentMessage<*>
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <T : BaseSentMessageUpdate> Flow<T>.asChatEvents() = mapNotNull {
|
fun <T : BaseSentMessageUpdate> Flow<T>.asChatEventsFlow() = mapNotNull {
|
||||||
it.data as? ChatEventMessage
|
it.data as? ChatEventMessage
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <T : BaseSentMessageUpdate> Flow<T>.asUnknownMessages() = mapNotNull {
|
fun <T : BaseSentMessageUpdate> Flow<T>.asUnknownMessagesFlow() = mapNotNull {
|
||||||
it.data as? UnknownMessageType
|
it.data as? UnknownMessageType
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,7 @@
|
|||||||
# TelegramBotAPI
|
# TelegramBotAPI
|
||||||
|
|
||||||
[![Awesome Kotlin Badge](https://kotlin.link/awesome-kotlin.svg)](https://github.com/KotlinBy/awesome-kotlin)
|
|
||||||
[![Download](https://api.bintray.com/packages/insanusmokrassar/StandardRepository/TelegramBotAPI/images/download.svg) ](https://bintray.com/insanusmokrassar/StandardRepository/TelegramBotAPI/_latestVersion)
|
[![Download](https://api.bintray.com/packages/insanusmokrassar/StandardRepository/TelegramBotAPI/images/download.svg) ](https://bintray.com/insanusmokrassar/StandardRepository/TelegramBotAPI/_latestVersion)
|
||||||
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.github.insanusmokrassar/TelegramBotAPI/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.github.insanusmokrassar/TelegramBotAPI)
|
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.github.insanusmokrassar/TelegramBotAPI/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.github.insanusmokrassar/TelegramBotAPI)
|
||||||
[![Build Status](https://jenkins.insanusmokrassar.com/buildStatus/icon?job=TelegramBotAPI_master__publishing)](https://jenkins.insanusmokrassar.com/job/TelegramBotAPI_master__publishing/)
|
|
||||||
|
|
||||||
## What is it?
|
## What is it?
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user