Skip to content

About

Бот для создания очередей в групповых чатах мессенджера Телеграм

Topics

Resources

Stars

12 stars

Watchers

1 watching

Forks

Repository files navigation

🚶IU8-QueueBot🚶🚶

Aiogram Deployment Build Status CodeFactor GitHub code size in bytes Stars GitHubWatchers

queue_bot

Python SQLite GitHub Actions Heroku


Телеграм-бот для создания очередей в групповых чатах

Этот бот поможет запланировать очередь на определённую дату и время, своевременно запустить её в вашем групповом чате!

Попробуйте @iu8_queue_bot сами, а если возникли вопросы, смотрите, как пользоваться ботом, ниже.

Как пользоваться?

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, даже когда в очередь встают десятки людей одновременно.

Author

Copyright © 2021, Alexey Alexandrov

Telegram build status

About

Бот для создания очередей в групповых чатах мессенджера Телеграм

Topics

Resources

Stars

12 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages