Skip to content

Repository files navigation

RollcallBot

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.yml
  • logs/ — лог rollcallbot.log с ежедневной ротацией, архивы хранятся 30 дней

Команда stop в stdin завершает бота. Сигнал SIGTERM (systemd, Docker) тоже останавливает его корректно.

Docker

docker compose up -d --build

Токен берётся из переменной окружения или файла .env рядом с docker-compose.yml:

rollcall_bot_token=123456:ABC...
rollcall_bot_timezone=Europe/Moscow

Папки storage/ и logs/ монтируются из текущей директории.

systemd

/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.
  • Список админов кэшируется и обновляется автоматически при первом отказе в доступе, либо кнопкой в настройках.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages