mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI-examples.git
synced 2025-12-06 06:15:39 +00:00
Compare commits
29 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9ec9f7a68c | |||
| 0f2829945f | |||
| 4eb80ea53c | |||
| 17cff21847 | |||
| 431069d190 | |||
|
|
fdbac78603 | ||
| da73acd379 | |||
|
|
6e3880f152 | ||
| 1ede6e58e6 | |||
| 0e46f176fb | |||
|
|
2bd449b8b8 | ||
| 82f9da0529 | |||
| 78b7d468f2 | |||
|
|
08059f8174 | ||
|
|
16766046d7 | ||
| 91ea20a269 | |||
| 11e280d177 | |||
| a8d4a307ef | |||
| 2bd2328a38 | |||
| 139de35db9 | |||
|
|
5dd22e1da2 | ||
| 4186ab8270 | |||
| 5aa69d7990 | |||
|
|
df952c69b2 | ||
| 9a03a02bac | |||
| 0e7c050e9e | |||
|
|
bdec902b58 | ||
|
|
cc3c87590d | ||
| 910f892b89 |
@@ -8,7 +8,7 @@ import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.*
|
||||
import dev.inmo.tgbotapi.extensions.utils.extensions.parseCommandsWithParams
|
||||
import dev.inmo.tgbotapi.extensions.utils.extensions.sameThread
|
||||
import dev.inmo.tgbotapi.extensions.utils.formatting.*
|
||||
import dev.inmo.tgbotapi.types.ChatId
|
||||
import dev.inmo.tgbotapi.types.IdChatIdentifier
|
||||
import dev.inmo.tgbotapi.types.MessageThreadId
|
||||
import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage
|
||||
import dev.inmo.tgbotapi.types.message.content.TextContent
|
||||
@@ -19,8 +19,8 @@ import kotlinx.coroutines.flow.filter
|
||||
import kotlinx.coroutines.flow.first
|
||||
|
||||
sealed interface BotState : State
|
||||
data class ExpectContentOrStopState(override val context: Pair<ChatId, MessageThreadId?>, val sourceMessage: CommonMessage<TextContent>) : BotState
|
||||
data class StopState(override val context: Pair<ChatId, MessageThreadId?>) : BotState
|
||||
data class ExpectContentOrStopState(override val context: IdChatIdentifier, val sourceMessage: CommonMessage<TextContent>) : BotState
|
||||
data class StopState(override val context: IdChatIdentifier) : BotState
|
||||
|
||||
suspend fun main(args: Array<String>) {
|
||||
val botToken = args.first()
|
||||
@@ -43,8 +43,7 @@ suspend fun main(args: Array<String>) {
|
||||
) {
|
||||
strictlyOn<ExpectContentOrStopState> {
|
||||
send(
|
||||
it.context.first,
|
||||
threadId = it.context.second
|
||||
it.context,
|
||||
) {
|
||||
+"Send me some content or " + botCommand("stop") + " if you want to stop sending"
|
||||
}
|
||||
@@ -57,13 +56,13 @@ suspend fun main(args: Array<String>) {
|
||||
when {
|
||||
content is TextContent && content.parseCommandsWithParams().keys.contains("stop") -> StopState(it.context)
|
||||
else -> {
|
||||
execute(content.createResend(it.context.first, messageThreadId = it.context.second))
|
||||
execute(content.createResend(it.context))
|
||||
it
|
||||
}
|
||||
}
|
||||
}
|
||||
strictlyOn<StopState> {
|
||||
send(it.context.first, threadId = it.context.second) { +"You have stopped sending of content" }
|
||||
send(it.context) { +"You have stopped sending of content" }
|
||||
|
||||
null
|
||||
}
|
||||
@@ -71,7 +70,7 @@ suspend fun main(args: Array<String>) {
|
||||
command(
|
||||
"start"
|
||||
) {
|
||||
startChain(ExpectContentOrStopState(it.chat.id to it.threadIdOrNull, it))
|
||||
startChain(ExpectContentOrStopState(it.chat.id, it))
|
||||
}
|
||||
}.second.join()
|
||||
}
|
||||
|
||||
9
TopicsHandling/README.md
Normal file
9
TopicsHandling/README.md
Normal file
@@ -0,0 +1,9 @@
|
||||
# HelloBot
|
||||
|
||||
The main purpose of this bot is just to answer "Oh, hi, " and add user mention here
|
||||
|
||||
## Launch
|
||||
|
||||
```bash
|
||||
../gradlew run --args="BOT_TOKEN"
|
||||
```
|
||||
21
TopicsHandling/build.gradle
Normal file
21
TopicsHandling/build.gradle
Normal file
@@ -0,0 +1,21 @@
|
||||
buildscript {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
}
|
||||
}
|
||||
|
||||
apply plugin: 'kotlin'
|
||||
apply plugin: 'application'
|
||||
|
||||
mainClassName="TopicsHandlingKt"
|
||||
|
||||
|
||||
dependencies {
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
||||
|
||||
implementation "dev.inmo:tgbotapi:$telegram_bot_api_version"
|
||||
}
|
||||
145
TopicsHandling/src/main/kotlin/TopicsHandling.kt
Normal file
145
TopicsHandling/src/main/kotlin/TopicsHandling.kt
Normal file
@@ -0,0 +1,145 @@
|
||||
import com.benasher44.uuid.uuid4
|
||||
import dev.inmo.micro_utils.common.repeatOnFailure
|
||||
import dev.inmo.micro_utils.coroutines.runCatchingSafely
|
||||
import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions
|
||||
import dev.inmo.tgbotapi.extensions.api.bot.setMyCommands
|
||||
import dev.inmo.tgbotapi.extensions.api.chat.forum.closeForumTopic
|
||||
import dev.inmo.tgbotapi.extensions.api.chat.forum.closeGeneralForumTopic
|
||||
import dev.inmo.tgbotapi.extensions.api.chat.forum.createForumTopic
|
||||
import dev.inmo.tgbotapi.extensions.api.chat.forum.deleteForumTopic
|
||||
import dev.inmo.tgbotapi.extensions.api.chat.forum.editForumTopic
|
||||
import dev.inmo.tgbotapi.extensions.api.chat.forum.editGeneralForumTopic
|
||||
import dev.inmo.tgbotapi.extensions.api.chat.forum.hideGeneralForumTopic
|
||||
import dev.inmo.tgbotapi.extensions.api.chat.forum.reopenForumTopic
|
||||
import dev.inmo.tgbotapi.extensions.api.chat.forum.reopenGeneralForumTopic
|
||||
import dev.inmo.tgbotapi.extensions.api.chat.forum.unhideGeneralForumTopic
|
||||
import dev.inmo.tgbotapi.extensions.api.send.reply
|
||||
import dev.inmo.tgbotapi.extensions.behaviour_builder.telegramBotWithBehaviourAndLongPolling
|
||||
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onCommand
|
||||
import dev.inmo.tgbotapi.extensions.utils.updates.retrieving.flushAccumulatedUpdates
|
||||
import dev.inmo.tgbotapi.types.BotCommand
|
||||
import dev.inmo.tgbotapi.types.ForumTopic
|
||||
import dev.inmo.tgbotapi.types.commands.BotCommandScope
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.delay
|
||||
|
||||
suspend fun main(vararg args: String) {
|
||||
telegramBotWithBehaviourAndLongPolling(
|
||||
args.first(),
|
||||
CoroutineScope(Dispatchers.Default),
|
||||
defaultExceptionsHandler = {
|
||||
it.printStackTrace()
|
||||
}
|
||||
) {
|
||||
flushAccumulatedUpdates()
|
||||
allUpdatesFlow.subscribeSafelyWithoutExceptions(this) {
|
||||
println(it)
|
||||
}
|
||||
onCommand("start_test_topics") {
|
||||
val forumTopic = createForumTopic(
|
||||
it.chat,
|
||||
"Test",
|
||||
ForumTopic.GREEN
|
||||
)
|
||||
|
||||
reply(it, "Test topic has been created")
|
||||
|
||||
delay(1000L)
|
||||
editForumTopic(
|
||||
it.chat.id,
|
||||
forumTopic.messageThreadId,
|
||||
"Test 01"
|
||||
)
|
||||
|
||||
reply(it, "Test topic has changed its name to Test 01")
|
||||
|
||||
delay(1000L)
|
||||
closeForumTopic(
|
||||
it.chat.id,
|
||||
forumTopic.messageThreadId,
|
||||
)
|
||||
|
||||
reply(it, "Test topic has been closed")
|
||||
|
||||
delay(1000L)
|
||||
reopenForumTopic(
|
||||
it.chat.id,
|
||||
forumTopic.messageThreadId,
|
||||
)
|
||||
|
||||
reply(it, "Test topic has been reopened")
|
||||
|
||||
delay(1000L)
|
||||
deleteForumTopic(
|
||||
it.chat.id,
|
||||
forumTopic.messageThreadId,
|
||||
)
|
||||
|
||||
reply(it, "Test topic has been deleted")
|
||||
|
||||
delay(1000L)
|
||||
hideGeneralForumTopic(
|
||||
it.chat.id,
|
||||
)
|
||||
|
||||
reply(it, "General topic has been hidden")
|
||||
|
||||
delay(1000L)
|
||||
unhideGeneralForumTopic(
|
||||
it.chat.id
|
||||
)
|
||||
|
||||
reply(it, "General topic has been shown")
|
||||
|
||||
delay(1000L)
|
||||
runCatchingSafely(
|
||||
{ _ ->
|
||||
reopenGeneralForumTopic(
|
||||
it.chat.id
|
||||
)
|
||||
|
||||
closeGeneralForumTopic(
|
||||
it.chat.id
|
||||
)
|
||||
}
|
||||
) {
|
||||
closeGeneralForumTopic(
|
||||
it.chat.id
|
||||
)
|
||||
}
|
||||
|
||||
reply(it, "General topic has been closed")
|
||||
|
||||
delay(1000L)
|
||||
reopenGeneralForumTopic(
|
||||
it.chat.id
|
||||
)
|
||||
|
||||
reply(it, "General topic has been opened")
|
||||
|
||||
delay(1000L)
|
||||
editGeneralForumTopic(
|
||||
it.chat.id,
|
||||
uuid4().toString().take(10)
|
||||
)
|
||||
|
||||
reply(it, "General topic has been renamed")
|
||||
|
||||
delay(1000L)
|
||||
editGeneralForumTopic(
|
||||
it.chat.id,
|
||||
"Main topic"
|
||||
)
|
||||
|
||||
reply(it, "General topic has been renamed")
|
||||
|
||||
delay(1000L)
|
||||
}
|
||||
|
||||
setMyCommands(
|
||||
BotCommand("start_test_topics", "start test topics"),
|
||||
scope = BotCommandScope.AllGroupChats
|
||||
)
|
||||
}.second.join()
|
||||
}
|
||||
@@ -22,5 +22,7 @@ allprojects {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
maven { url "https://git.inmo.dev/api/packages/InsanusMokrassar/maven" }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,8 +4,8 @@ org.gradle.parallel=true
|
||||
org.gradle.jvmargs=-Xmx768m
|
||||
|
||||
|
||||
kotlin_version=1.7.20
|
||||
telegram_bot_api_version=4.0.0
|
||||
micro_utils_version=0.13.2
|
||||
kotlin_version=1.7.22
|
||||
telegram_bot_api_version=5.0.0
|
||||
micro_utils_version=0.16.4
|
||||
serialization_version=1.4.1
|
||||
ktor_version=2.1.3
|
||||
ktor_version=2.2.1
|
||||
|
||||
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
|
||||
|
||||
@@ -26,3 +26,5 @@ include ":ChatAvatarSetter"
|
||||
include ":WebApp"
|
||||
|
||||
include ":FSMBot"
|
||||
|
||||
include ":TopicsHandling"
|
||||
|
||||
Reference in New Issue
Block a user