Этот бот поможет запланировать очередь на определённую дату и время, своевременно запустить её в вашем групповом чате!
Попробуйте @iu8_queue_bot сами, а если возникли вопросы, смотрите, как пользоваться ботом, ниже.
Нужен Python 3.12+ (рекомендуется 3.13).
Зависимости управляются через Poetry (2.2+),
версии зафиксированы в poetry.lock.
poetry install --only main
cp .env.example .env # и укажите TELE_API_TOKEN
poetry run python -m queue_botИли в Docker:
docker build -t queue-bot .
docker run -d --env-file .env -v queue-bot-data:/data queue-botДеплой на сервер (GitHub Actions → Docker → сервер по SSH, запуск вручную) описан в deploy/README.md.
Для разработки: poetry install, затем poetry run ruff check ., poetry run mypy
и poetry run pytest. Обновить зависимости: poetry update (или poetry add <пакет>).
queue_bot/
├── app.py # сборка Bot/Dispatcher, запуск и остановка
├── config.py # настройки из переменных окружения
├── models.py # доменные модели
├── db/
│ ├── database.py # одно соединение aiosqlite, сериализованные транзакции
│ ├── migrations.py # схема (PRAGMA user_version) и импорт данных старой версии
│ └── repository.py # весь SQL; каждая операция с очередью — одна транзакция
├── services/
│ ├── scheduler.py # запуск запланированных очередей (переживает перезапуск)
│ ├── updater.py # объединяющее обновление сообщения очереди
│ ├── planning.py # разбор времени запуска
│ └── rendering.py # тексты сообщений
├── handlers/ # обработчики aiogram 3 (клиент, админ, события чата, ошибки)
└── keyboards/ # клавиатуры и календарь
Состав очереди хранится в БД (queue_members):
каждое нажатие кнопки атомарно применяется к актуальному состоянию, поэтому
одновременные нажатия не затирают друг друга. Сообщение очереди редактируется
фоновой задачей, которая объединяет все нажатия за интервал
QUEUE_EDIT_INTERVAL в одно редактирование — бот не упирается в лимиты
Telegram, даже когда в очередь встают десятки людей одновременно.
