Skip to content

Commit d1791b3

Browse files
add drafts bot
1 parent 0432611 commit d1791b3

4 files changed

Lines changed: 118 additions & 0 deletions

File tree

DraftsBot/README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Drafts bot
2+
3+
The main purpose of this bot is just to answer "Oh, hi, " and add user mention here
4+
5+
## Launch
6+
7+
```bash
8+
../gradlew run --args="BOT_TOKEN"
9+
```

DraftsBot/build.gradle

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
buildscript {
2+
repositories {
3+
mavenCentral()
4+
}
5+
6+
dependencies {
7+
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
8+
}
9+
}
10+
11+
apply plugin: 'kotlin'
12+
apply plugin: 'application'
13+
14+
mainClassName="TopicsHandlingKt"
15+
16+
17+
dependencies {
18+
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
19+
20+
implementation "dev.inmo:tgbotapi:$telegram_bot_api_version"
21+
}
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
import com.benasher44.uuid.uuid4
2+
import dev.inmo.kslog.common.w
3+
import dev.inmo.micro_utils.coroutines.runCatchingLogging
4+
import dev.inmo.micro_utils.coroutines.runCatchingSafely
5+
import dev.inmo.micro_utils.coroutines.subscribeLoggingDropExceptions
6+
import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions
7+
import dev.inmo.tgbotapi.bot.TelegramBot
8+
import dev.inmo.tgbotapi.extensions.api.bot.getMe
9+
import dev.inmo.tgbotapi.extensions.api.bot.setMyCommands
10+
import dev.inmo.tgbotapi.extensions.api.chat.forum.*
11+
import dev.inmo.tgbotapi.extensions.api.send.reply
12+
import dev.inmo.tgbotapi.extensions.api.send.send
13+
import dev.inmo.tgbotapi.extensions.api.send.sendMessageDraftFlow
14+
import dev.inmo.tgbotapi.extensions.api.send.sendMessageDraftFlowWithTexts
15+
import dev.inmo.tgbotapi.extensions.behaviour_builder.telegramBotWithBehaviourAndLongPolling
16+
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onCommand
17+
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onForumTopicClosed
18+
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onForumTopicCreated
19+
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onForumTopicEdited
20+
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onForumTopicReopened
21+
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onGeneralForumTopicHidden
22+
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onGeneralForumTopicUnhidden
23+
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onPrivateForumTopicCreated
24+
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onPrivateForumTopicEdited
25+
import dev.inmo.tgbotapi.extensions.utils.forumChatOrNull
26+
import dev.inmo.tgbotapi.extensions.utils.forumContentMessageOrNull
27+
import dev.inmo.tgbotapi.extensions.utils.privateChatOrNull
28+
import dev.inmo.tgbotapi.extensions.utils.privateForumChatOrNull
29+
import dev.inmo.tgbotapi.extensions.utils.updates.retrieving.flushAccumulatedUpdates
30+
import dev.inmo.tgbotapi.types.BotCommand
31+
import dev.inmo.tgbotapi.types.ForumTopic
32+
import dev.inmo.tgbotapi.types.chat.PrivateChat
33+
import dev.inmo.tgbotapi.types.commands.BotCommandScope
34+
import io.ktor.client.plugins.*
35+
import kotlinx.coroutines.CoroutineScope
36+
import kotlinx.coroutines.Dispatchers
37+
import kotlinx.coroutines.delay
38+
import kotlinx.coroutines.flow.flow
39+
import kotlinx.coroutines.isActive
40+
41+
const val testText = """
42+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
43+
"""
44+
45+
suspend fun main(vararg args: String) {
46+
telegramBotWithBehaviourAndLongPolling(
47+
args.first(),
48+
CoroutineScope(Dispatchers.Default),
49+
defaultExceptionsHandler = {
50+
it.printStackTrace()
51+
},
52+
builder = {
53+
client = client.config {
54+
install(HttpTimeout) {
55+
requestTimeoutMillis = 30000
56+
socketTimeoutMillis = 30000
57+
connectTimeoutMillis = 30000
58+
}
59+
}
60+
}
61+
) {
62+
onCommand("test_draft_flow") {
63+
sendMessageDraftFlowWithTexts(
64+
it.chat.id,
65+
flow<String> {
66+
val step = 50
67+
var currentLength = step
68+
while (isActive && testText.length > currentLength) {
69+
delay(500L)
70+
emit(testText.take(currentLength))
71+
currentLength += step
72+
}
73+
},
74+
)
75+
send(it.chat, testText)
76+
}
77+
78+
setMyCommands(
79+
BotCommand("test_draft_flow", "Start draft testing with flow"),
80+
scope = BotCommandScope.AllGroupChats
81+
)
82+
allUpdatesFlow.subscribeLoggingDropExceptions(this) {
83+
println(it)
84+
}
85+
}.second.join()
86+
}

settings.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,5 @@ include ":WebHooks"
6363
include ":SuggestedPosts"
6464

6565
include ":ChecklistsBot"
66+
67+
include ":DraftsBot"

0 commit comments

Comments
 (0)