Skip to content

Commit 81ba583

Browse files
add suggested posts sample
1 parent 0b9c715 commit 81ba583

4 files changed

Lines changed: 117 additions & 0 deletions

File tree

SuggestedPosts/README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# StickerSetHandler
2+
3+
Send sticker to this bot to form your own stickers set. Send /delete to delete this sticker set
4+
5+
## How to run
6+
7+
```bash
8+
./gradlew run --args="TOKEN"
9+
```

SuggestedPosts/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="SuggestedPostsBotKt"
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: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
import dev.inmo.kslog.common.KSLog
2+
import dev.inmo.kslog.common.LogLevel
3+
import dev.inmo.kslog.common.defaultMessageFormatter
4+
import dev.inmo.kslog.common.setDefaultKSLog
5+
import dev.inmo.micro_utils.coroutines.runCatchingLogging
6+
import dev.inmo.micro_utils.coroutines.subscribeLoggingDropExceptions
7+
import dev.inmo.micro_utils.coroutines.subscribeSafelyWithoutExceptions
8+
import dev.inmo.tgbotapi.extensions.api.bot.getMe
9+
import dev.inmo.tgbotapi.extensions.api.bot.getMyStarBalance
10+
import dev.inmo.tgbotapi.extensions.api.chat.get.getChat
11+
import dev.inmo.tgbotapi.extensions.api.send.reply
12+
import dev.inmo.tgbotapi.extensions.api.send.resend
13+
import dev.inmo.tgbotapi.extensions.api.send.send
14+
import dev.inmo.tgbotapi.extensions.api.suggested.approveSuggestedPost
15+
import dev.inmo.tgbotapi.extensions.behaviour_builder.BehaviourContextData
16+
import dev.inmo.tgbotapi.extensions.behaviour_builder.buildSubcontextInitialAction
17+
import dev.inmo.tgbotapi.extensions.behaviour_builder.telegramBotWithBehaviourAndLongPolling
18+
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onChannelDirectMessagesConfigurationChanged
19+
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onCommand
20+
import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onContentMessage
21+
import dev.inmo.tgbotapi.extensions.utils.channelDirectMessagesContentMessageOrNull
22+
import dev.inmo.tgbotapi.extensions.utils.previewChannelDirectMessagesChatOrNull
23+
import dev.inmo.tgbotapi.extensions.utils.suggestedChannelDirectMessagesContentMessageOrNull
24+
import dev.inmo.tgbotapi.types.message.SuggestedPostParameters
25+
import dev.inmo.tgbotapi.types.message.abstracts.CommonMessage
26+
import dev.inmo.tgbotapi.types.update.abstracts.Update
27+
import kotlinx.coroutines.CoroutineScope
28+
import kotlinx.coroutines.Dispatchers
29+
import kotlinx.coroutines.delay
30+
31+
/**
32+
* This place can be the playground for your code.
33+
*/
34+
suspend fun main(vararg args: String) {
35+
val botToken = args.first()
36+
37+
val isDebug = args.any { it == "debug" }
38+
val isTestServer = args.any { it == "testServer" }
39+
40+
if (isDebug) {
41+
setDefaultKSLog(
42+
KSLog { level: LogLevel, tag: String?, message: Any, throwable: Throwable? ->
43+
println(defaultMessageFormatter(level, tag, message, throwable))
44+
}
45+
)
46+
}
47+
48+
telegramBotWithBehaviourAndLongPolling(
49+
botToken,
50+
CoroutineScope(Dispatchers.Default),
51+
testServer = isTestServer,
52+
) {
53+
// start here!!
54+
val me = getMe()
55+
println(me)
56+
57+
onCommand("start") {
58+
println(getChat(it.chat))
59+
}
60+
61+
onContentMessage {
62+
val message = it.channelDirectMessagesContentMessageOrNull() ?: return@onContentMessage
63+
64+
resend(
65+
message.chat.id,
66+
message.content,
67+
suggestedPostParameters = SuggestedPostParameters()
68+
)
69+
}
70+
71+
onContentMessage {
72+
val suggestedPost = it.suggestedChannelDirectMessagesContentMessageOrNull() ?: return@onContentMessage
73+
74+
for (i in 0 until 3) {
75+
delay(1000L)
76+
send(suggestedPost.chat, "${3 - i}")
77+
}
78+
approveSuggestedPost(suggestedPost)
79+
}
80+
81+
allUpdatesFlow.subscribeLoggingDropExceptions(this) {
82+
println(it)
83+
}
84+
}.second.join()
85+
}

settings.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,3 +59,5 @@ include ":CustomBot"
5959
include ":MemberUpdatedWatcherBot"
6060

6161
include ":WebHooks"
62+
63+
include ":SuggestedPosts"

0 commit comments

Comments
 (0)