mirror of
				https://github.com/InsanusMokrassar/TelegramBotAPI-bot_template.git
				synced 2025-10-30 19:50:27 +00:00 
			
		
		
		
	Compare commits
	
		
			92 Commits
		
	
	
		
			0.32.5-upd
			...
			faa77ef5ac
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| faa77ef5ac | |||
| 607bd00a3c | |||
| 0c5bbd5bb1 | |||
| 3ee9f9c46b | |||
| f7ff501e58 | |||
| 353c28657d | |||
| dfe0b475b4 | |||
| ff63fad928 | |||
| 9538d320cf | |||
| 8d9be29f6e | |||
| 99a4ea2b12 | |||
| 0c66784ab7 | |||
| df25274079 | |||
| 6cd6489cb2 | |||
| 5c6ad721d2 | |||
| 2acf32ec62 | |||
|  | d0905c6d17 | ||
| b243a19cdf | |||
| ec944a3e68 | |||
| 4becd4fe60 | |||
| acd13ea731 | |||
| 00363fd506 | |||
| 59b948bece | |||
| 8a857d3109 | |||
| 6ffe47d645 | |||
| 6088f79cc6 | |||
| 4747b48df4 | |||
| f0aebfa800 | |||
| 04467a2416 | |||
| a2e97be75a | |||
| 6a203863c7 | |||
| dcb3665adc | |||
| 699b58f952 | |||
| ea4a906e9a | |||
| 1bbd3b2ea1 | |||
| 5f2924c21b | |||
| 873e495daa | |||
| 7c2115739a | |||
| 50d5718ba0 | |||
| 12d345b067 | |||
| a443205237 | |||
| 2afd9bb156 | |||
| f41f756107 | |||
| 9b3a01a50b | |||
| d5379b02e7 | |||
| bf31c92bf1 | |||
| ee93a83ed5 | |||
| 285afbe942 | |||
| 1e3cfeebcc | |||
| e6b75e5000 | |||
| 4a71d78aba | |||
| 6e7210326a | |||
| 25583c6947 | |||
| c7a5631184 | |||
| 9f1ae5bd17 | |||
| 1f2bd0b14a | |||
| 18ff841e9a | |||
| a103cfb0f3 | |||
| cbaf7277b0 | |||
| ede5d944d5 | |||
| 0b08886be1 | |||
| 0487b44a3e | |||
| ed12f41336 | |||
| 171a4a5060 | |||
| 0477319f12 | |||
| fcc0b49576 | |||
| e86d07d25d | |||
| 2c1f4e8202 | |||
| 14ce90d323 | |||
| fbbc7d8cc0 | |||
| c543f7ff6c | |||
| 77b61dff04 | |||
| be4cefb875 | |||
| 97731ea814 | |||
| 6db81e1cb4 | |||
| 5428b048b8 | |||
| 86d535a1dc | |||
| cf91388eef | |||
| 72e1e2feab | |||
| dc1c783df3 | |||
| df5c32a194 | |||
| 3181e7c985 | |||
| 0d9965f953 | |||
| e2626f4163 | |||
| f46b976f52 | |||
| cfe4a79b19 | |||
| 31b5a18354 | |||
| 439d51cdfe | |||
| 84677466f2 | |||
| 28e5b337f2 | |||
| 25b264d8ed | |||
| 558c047d26 | 
							
								
								
									
										4
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							| @@ -8,9 +8,9 @@ jobs: | ||||
|  | ||||
|     steps: | ||||
|       - uses: actions/checkout@v2 | ||||
|       - name: Set up JDK 1.8 | ||||
|       - name: Set up JDK 11 | ||||
|         uses: actions/setup-java@v1 | ||||
|         with: | ||||
|           java-version: 1.8 | ||||
|           java-version: 11 | ||||
|       - name: Build with Gradle | ||||
|         run: ./gradlew build | ||||
|   | ||||
							
								
								
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -9,5 +9,6 @@ settings.xml | ||||
| build/ | ||||
| out/ | ||||
|  | ||||
| local.properties | ||||
| local.* | ||||
| local.*/ | ||||
| secret.gradle | ||||
|   | ||||
							
								
								
									
										8
									
								
								Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| FROM adoptopenjdk/openjdk11 | ||||
|  | ||||
| USER 1000 | ||||
|  | ||||
| ENTRYPOINT ["/telegram_bot/bin/telegram_bot", "/telegram_bot/local.config.json"] | ||||
|  | ||||
| ADD ./build/distributions/telegram_bot.tar / | ||||
| ADD ./local.config.json /telegram_bot/ | ||||
							
								
								
									
										19
									
								
								Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								Makefile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| #!make | ||||
|  | ||||
| .ONESHELL: | ||||
| .PHONY: | ||||
|  | ||||
| clean: | ||||
| 	./gradlew clean | ||||
|  | ||||
| build: | ||||
| 	./gradlew build | ||||
|  | ||||
| start: | ||||
| 	./gradlew run | ||||
|  | ||||
| startCompose: | ||||
| 	docker-compose build && docker-compose up | ||||
|  | ||||
| buildAndStartCompose: | ||||
| 	make clean build startCompose | ||||
							
								
								
									
										11
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								README.md
									
									
									
									
									
								
							| @@ -9,14 +9,19 @@ it was described [here](https://github.com/InsanusMokrassar/TelegramBotAPI#ok-wh | ||||
|  | ||||
| ## Default | ||||
|  | ||||
| Since you have used this repo as a template you can simply run command `./gradlew run --args="BOT_TOKEN"` (of course, | ||||
| replace here `BOT_TOKEN` with your telegram bot token like `1234567890:ABCDEFGHIJKLM_OPqrstuvwxyz012345678`). As an | ||||
| output you will get your bot information like: | ||||
| Since you have used this repo as a template you can copy file `example.config.json` as `local.config.json`, put there your bot token and simply run command `./gradlew run --args="local.config.json"`. As an output you will get your bot information like: | ||||
|  | ||||
| ```bash | ||||
| ExtendedBot(id=ChatId(chatId=1234567890), username=Username(username=@username_of_your_bot), firstName=Name of bot, lastName=, canJoinGroups=(some boolean), canReadAllGroupMessages=(some boolean), supportsInlineQueries=(some boolean)) | ||||
| ``` | ||||
|  | ||||
| ### Docker | ||||
|  | ||||
| In this template there is template-like [docker-compose](docker-compose.yml) and [docker](Dockerfile) files. Besides, | ||||
| there is [Makefile](Makefile) and you may use something like `make buildAndStartCompose` to start your bot. | ||||
|  | ||||
| It is important to replace `"TOKEN"` in [Dockerfile](Dockerfile) or remove and add some config as a volume. | ||||
|  | ||||
| ## What next? | ||||
|  | ||||
| There are several ways to continue: | ||||
|   | ||||
							
								
								
									
										45
									
								
								build.gradle
									
									
									
									
									
								
							
							
						
						
									
										45
									
								
								build.gradle
									
									
									
									
									
								
							| @@ -1,31 +1,36 @@ | ||||
| buildscript { | ||||
|     repositories { | ||||
|         jcenter() | ||||
|     } | ||||
|  | ||||
|     dependencies { | ||||
|         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" | ||||
|         classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version" | ||||
|     } | ||||
| } | ||||
|  | ||||
| plugins { | ||||
|     id 'org.jetbrains.kotlin.jvm' version "$kotlin_version" | ||||
|     id "org.jetbrains.kotlin.plugin.serialization" version "$kotlin_version" | ||||
|     id 'application' | ||||
| } | ||||
|  | ||||
| repositories { | ||||
|     jcenter() | ||||
|         mavenCentral() | ||||
|     } | ||||
|  | ||||
|     dependencies { | ||||
|     implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" | ||||
|         classpath libs.kotlin.gradle.plugin | ||||
|         classpath libs.kotlin.serialization.plugin | ||||
|     } | ||||
| } | ||||
|  | ||||
|     implementation "dev.inmo:tgbotapi:$tgbotapi_version" | ||||
| plugins { | ||||
|     alias libs.plugins.kotlin.jvm | ||||
|     alias libs.plugins.kotlin.serialization | ||||
|     id 'application' | ||||
| } | ||||
|  | ||||
| repositories { | ||||
|     mavenCentral() | ||||
|     maven { url "https://git.inmo.dev/api/packages/InsanusMokrassar/maven" } | ||||
| } | ||||
|  | ||||
| dependencies { | ||||
|     implementation libs.kotlin | ||||
|  | ||||
|     implementation libs.tgbotapi | ||||
| } | ||||
|  | ||||
| application { | ||||
|     mainClassName = 'telegram_bot.AppKt' | ||||
|     mainClassName = 'AppKt' | ||||
| } | ||||
|  | ||||
| java { | ||||
|     sourceCompatibility = JavaVersion.VERSION_11 | ||||
|     targetCompatibility = JavaVersion.VERSION_11 | ||||
| } | ||||
|   | ||||
							
								
								
									
										6
									
								
								docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| version: "3.4" | ||||
|  | ||||
| services: | ||||
|   server: | ||||
|     build: . | ||||
|     restart: unless-stopped | ||||
							
								
								
									
										3
									
								
								example.config.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								example.config.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| { | ||||
|   "token": "your bot token" | ||||
| } | ||||
| @@ -3,6 +3,3 @@ kotlin.code.style=official | ||||
| org.gradle.parallel=true | ||||
| kotlin.js.generate.externals=true | ||||
| kotlin.incremental=true | ||||
|  | ||||
| kotlin_version=1.4.30 | ||||
| tgbotapi_version=0.32.5 | ||||
|   | ||||
							
								
								
									
										19
									
								
								gradle/libs.versions.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								gradle/libs.versions.toml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| [versions] | ||||
|  | ||||
| kotlin = "1.7.22" | ||||
| tgbotapi = "4.2.2" | ||||
|  | ||||
| [libraries] | ||||
|  | ||||
| kotlin = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" } | ||||
| tgbotapi = { module = "dev.inmo:tgbotapi", version.ref = "tgbotapi" } | ||||
|  | ||||
| # Libs for classpath | ||||
| kotlin-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } | ||||
| kotlin-serialization-plugin = { module = "org.jetbrains.kotlin:kotlin-serialization", version.ref = "kotlin" } | ||||
|  | ||||
| [plugins] | ||||
|  | ||||
| kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } | ||||
| kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } | ||||
|  | ||||
							
								
								
									
										2
									
								
								gradle/wrapper/gradle-wrapper.properties
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								gradle/wrapper/gradle-wrapper.properties
									
									
									
									
										vendored
									
									
								
							| @@ -1,5 +1,5 @@ | ||||
| distributionBase=GRADLE_USER_HOME | ||||
| distributionPath=wrapper/dists | ||||
| distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.2-bin.zip | ||||
| distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.0-bin.zip | ||||
| zipStoreBase=GRADLE_USER_HOME | ||||
| zipStorePath=wrapper/dists | ||||
|   | ||||
| @@ -1 +1,3 @@ | ||||
| rootProject.name = 'telegram_bot' | ||||
|  | ||||
| enableFeaturePreview("VERSION_CATALOGS") | ||||
|   | ||||
| @@ -1,24 +1,28 @@ | ||||
| package telegram_bot | ||||
| 
 | ||||
| import dev.inmo.tgbotapi.bot.Ktor.telegramBot | ||||
| import dev.inmo.tgbotapi.bot.ktor.telegramBot | ||||
| import dev.inmo.tgbotapi.extensions.api.bot.getMe | ||||
| import dev.inmo.tgbotapi.extensions.api.send.reply | ||||
| import dev.inmo.tgbotapi.extensions.behaviour_builder.buildBehaviour | ||||
| import dev.inmo.tgbotapi.extensions.behaviour_builder.buildBehaviourWithLongPolling | ||||
| import dev.inmo.tgbotapi.extensions.behaviour_builder.triggers_handling.onCommand | ||||
| import java.io.File | ||||
| import kotlinx.coroutines.* | ||||
| import kotlinx.serialization.json.Json | ||||
| 
 | ||||
| /** | ||||
|  * This method by default expects one argument in [args] field: telegram bot token | ||||
|  * This method by default expects one argument in [args] field: telegram bot configuration | ||||
|  */ | ||||
| suspend fun main(args: Array<String>) { | ||||
|     // create json to decode config | ||||
|     val json = Json { ignoreUnknownKeys = true } | ||||
|     // decode config | ||||
|     val config: Config = json.decodeFromString(Config.serializer(), File(args.first()).readText()) | ||||
|     // that is your bot | ||||
|     val bot = telegramBot(args.first()) | ||||
|     val bot = telegramBot(config.token) | ||||
| 
 | ||||
|     // that is kotlin coroutine scope which will be used in requests and parallel works under the hood | ||||
|     val scope = CoroutineScope(Dispatchers.Default) | ||||
| 
 | ||||
|     // here should be main logic of your bot | ||||
|     bot.buildBehaviour(scope) { | ||||
|     bot.buildBehaviourWithLongPolling(scope) { | ||||
|         // in this lambda you will be able to call methods without "bot." prefix | ||||
|         val me = getMe() | ||||
| 
 | ||||
| @@ -27,7 +31,9 @@ suspend fun main(args: Array<String>) { | ||||
|             // simply reply :) | ||||
|             reply(it, "Hello, I am ${me.firstName}") | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     scope.coroutineContext.job.join() | ||||
|         // That will be called on the end of bot initiation. After that println will be started long polling and bot will | ||||
|         // react on your commands | ||||
|         println(me) | ||||
|     }.join() | ||||
| } | ||||
							
								
								
									
										6
									
								
								src/main/kotlin/Config.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								src/main/kotlin/Config.kt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| import kotlinx.serialization.Serializable | ||||
|  | ||||
| @Serializable | ||||
| data class Config( | ||||
|     val token: String | ||||
| ) | ||||
		Reference in New Issue
	
	Block a user