Telegram-бот для переклички студентов в групповых чатах. Староста запускает перекличку, студенты отвечают кнопками, результат приходит старосте в личные сообщения.
- Java 21
./gradlew build
Готовый jar со всеми зависимостями: build/libs/RollcallBot.jar.
Переменные окружения:
| Переменная | Назначение |
|---|---|
rollcall_bot_token |
Токен бота от @BotFather, обязательна |
rollcall_bot_timezone |
Часовой пояс, например Europe/Moscow. По умолчанию системный. Влияет на время поздравлений и разбор дат |
java -jar RollcallBot.jar
В рабочей директории бот создаёт:
storage/— данные чатов в YAML, по файлу на чат, список чатов вconfig.ymllogs/— логrollcallbot.logс ежедневной ротацией, архивы хранятся 30 дней
Команда stop в stdin завершает бота. Сигнал SIGTERM (systemd, Docker) тоже останавливает его корректно.
docker compose up -d --build
Токен берётся из переменной окружения или файла .env рядом с docker-compose.yml:
rollcall_bot_token=123456:ABC...
rollcall_bot_timezone=Europe/Moscow
Папки storage/ и logs/ монтируются из текущей директории.
/etc/systemd/system/rollcallbot.service:
[Unit]
Description=RollcallBot
After=network-online.target
[Service]
User=rollcallbot
WorkingDirectory=/opt/rollcallbot
Environment=rollcall_bot_token=123456:ABC...
Environment=rollcall_bot_timezone=Europe/Moscow
ExecStart=/usr/bin/java -jar /opt/rollcallbot/RollcallBot.jar
Restart=on-failure
[Install]
WantedBy=multi-user.target
systemctl enable --now rollcallbot
В групповом чате, только для администраторов чата. Команды можно писать через / или .:
| Команда | Действие |
|---|---|
.перекличка (.п) [текст] |
Начать перекличку, упомянуть всех студентов. Текст необязателен |
.перекличкавсё (.пв) |
Завершить перекличку досрочно |
.позвать (.все) |
Упомянуть всех студентов |
.игнор |
Упомянуть тех, кто ещё не ответил. Сообщение удаляется через 2 минуты |
.студент (.с) дд.ММ.гггг Фамилия Имя |
Добавить или обновить студента. Отправляется ответом на его сообщение |
.помощь |
Список команд |
В личных сообщениях с ботом:
| Команда | Действие |
|---|---|
/settings |
Меню настроек чатов, где вы администратор |
/help |
Список команд |
- Перекличка идёт в том топике, где запущена. В одном топике одновременно одна перекличка.
- Ответ можно поменять не чаще раза в минуту.
- Автозавершение через 30–90 минут по настройке чата, либо когда ответили все. За 30, 15 и 5 минут до конца бот напоминает тем, кто не ответил.
- При включённой настройке бот поздравляет студентов с днём рождения в 07:00.
- Список админов кэшируется и обновляется автоматически при первом отказе в доступе, либо кнопкой в настройках.