.github/workflows | ||
gradle | ||
src/main/kotlin | ||
.gitattributes | ||
.gitignore | ||
build.gradle | ||
docker-compose.yml | ||
Dockerfile | ||
example.config.json | ||
gradle.properties | ||
gradlew | ||
gradlew.bat | ||
LICENSE | ||
Makefile | ||
README.md | ||
settings.gradle |
Telegram Bot Template
That is template for telegram bots based on next stack of technologies:
- Kotlin Coroutines
- Kotlin Serialization
- Telegram Bot API Library (by default everything is included like it was described here)
Default
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:
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 and docker files. Besides,
there is Makefile and you may use something like make buildAndStartCompose
to start your bot.
It is important to replace "TOKEN"
in Dockerfile or remove and add some config as a volume.
Config
But you may set up several things for your bot. You should start with adding client object:
{
"token": "your bot token",
"client": {
"connectionTimeoutMillis": 10000,
"requestTimeoutMillis": 10000,
"responseTimeoutMillis": 10000,
"proxy": {
"hostname": "127.0.0.1",
"port": 1080,
"type": "socks",
"username": "username",
"password": "password"
}
}
}
Required fields:
token
client/proxy/hostname
(if you passclient
andproxy
fields) - hostname of proxy serverclient/proxy/password
- password for authentication on proxy server, required ifclient/proxy/type
issocks
andclient/proxy/username
passed
Optional fields:
client
- object with client configsclient/connectionTimeoutMillis
- timeout for connection to the serverclient/requestTimeoutMillis
- timeout for request complete (when request taken on server)client/responseTimeoutMillis
- timeout for getting a response after request taken on serverclient/proxy
- proxy settingsclient/proxy/port
- port of proxy serverclient/proxy/type
- type of proxy server (can besocks
orhttp
)client/proxy/username
- username for authentication on proxy serverclient/proxy/password
- password for authentication on proxy server
Basically, your config looks like an object with token:
{
"token": "your bot token"
}
What next?
There are several ways to continue:
In other words, this template (and TelegramBotAPI library) does not limit you on choosing of way to continue 😊