Telegram Bot на Kotlin: Шпаргалка
Эта статья должна была являться эдаким эпилогом серии статей про ботостроение на базе ktgbotapi и plagubot, но я случайно запилил шаблон для ботов на соответствующих технологиях и, как я считаю, имеет смысл объяснить, как им пользоваться. Потенциально это может сильно сэкономить вам время, если вы будете создавать новые проекты. В оглавлении указано, какие статьи может быть полезно почитать, поскольку они напрямую связаны с формированием шаблона, который мы будем использовать.
В оглавлении указаны другие статьи, которые могут быть полезны для прочтения и понимания аспектов работы с шаблоном.
Оглавление
С чего бы начать…
Пожалуй, со ссылочки на шаблон на GitHub. Из этого шаблона вы сможете легко создать проект и, следуя инструкции, инициализировать для себя. Инструкция простейшая:
Заменяем во всём проекте
project_group
на свою группуЗаменяем во всём проекте
project_name
на своё название проектаКопируем sample.json как
local.config.json
Проект настроен так, что файлы local.*
и папки local
не попадают в гит индекс (см. .gitignore), поэтому созданный local.config.json
не уйдёт в гит без явного указания
Что в конфиге твоём
Базовый конфиг — это json
, который имеет несколько основных секций:
database
— опциональный пункт с настройкой базы данных. Все параметры в нем опциональны, но желательно заполнить хотя бы два из них:driver
иurl
. Подробнее про все параметры:url
—JDBC
URL для соединения с базой данных. Например,jdbc:sqlite:file:test.sqlite
будет использоватьsqlite
драйвер для хранения бд в файлеtest.sqlite
driver
—JDBC
драйвер. Например,org.sqlite.JDBC
— используем sqlite JDBC драйверusername
— имя пользователя для доступа к бд. Может использоваться, например, в postgresqlpassword
— пароль пользователя для доступа к бд. Может использоваться, например, в postgresqlreconnectOptions
— json объект с полямиattempts
иdelay
, отвечающий за первое подключение к бд. При запуске в докере база данных может какое-то время инициализироваться и для проверки может понадобиться больше попыток
botToken
— токен для работы вашего ботаplugins
— массив, состоящий из полных имен плагинов. Например, таким именем будетdev.inmo.plagubot.plugins.commands.CommandsPlugin
Расширяем функционал
В шаблоне есть модуль replier
, который был специально подготовлен как шаблон для плагинов. Как создать свой плагин в проекте:
Копируем папку
replier
с новым именемВ папке заменяем
replier
на название плагинаВ папке заменяем
Replier
на название плагина с большой буквы
В модуле у вас будут: плагин, конфиг и build.gradle
. Далее в плагине можно будет начать писать логику, конфиг наполнять параметрами плагина, а build.gradle
настраивать в плане правил сборки gradle модуля. Подробнее можно прочитать в главе Введение.
Запускаем
Для запуска вам нужно будет актуализировать ваш local.config.json
и запустить следующую команду в терминале:
./gradlew run --args="/полный/путь/до/local.config.json"
Далее вы увидите логи запуска бота. Если вы запускаете проект из Intellij IDEA, можно добавить конфигурацию для запуска через Edit configurations
→ +
→ Gradle
с настройкой запуска. Единственное важное замечание для запуска в IDEA — в поле команды у вас должно быть run --args="/полный/путь/до/local.config.json"
.
Деплоим
Для деплоя в проекте присутствует Dockerfile и deploy.sh. При этом в поледнем можно настроить адрес, куда докер образ будет выгружаться через указание нужного значения в переменной server
. Наиболее интересные варианты:
В остальном весь деплой будет сводиться к запуску ./deploy.sh
Итог
Этот шаблон позволяет быстро начинать разработку нового проекта на базе ботов. Я буду рад предложениям и замечениям как по шаблону, так и по дополнениям статьи :)