Бот для записи на игры с лимитом участников, листом ожидания и штрафами за неявку.
- Лимит участников — в основную запись попадают первые N человек (по умолчанию 15).
- Лист ожидания — кто не успел, попадает в очередь; при освобождении места приходит уведомление и автоматический перевод в основную запись.
- Штраф за неявку — если организатор отмечает участника как не пришедшего, тому назначается штраф: в течение 2 недель (настраивается) он может записываться только в лист ожидания.
Бота можно добавить в групповой чат: один и тот же бот работает и в личке, и в группе. В группе у чата свой список игр: команды /games и /create относятся к этому чату. В личке — к твоему личному списку. Команда /my показывает все твои записи по всем чатам.
Чат не засоряется: в группе в общем доступе только список игр с кнопками «Записаться». Подтверждения («Ты записан», «В листе ожидания» и т.п.) приходят во всплывающем уведомлении, после нажатия список в чате просто обновляется. Ответ на /my в группе бот отправляет в личку; если пользователь не открывал бота в личке — ответ придёт в группу.
Кто может создавать игры: по умолчанию любой. Можно ограничить: в .env задать ALLOWED_CREATORS=user_id1,user_id2 (только эти пользователи) и/или CREATOR_GROUP_ADMINS=1 (в группе создавать могут только админы группы). Узнать свой user_id можно через бота @userinfobot.
| Команда | Описание |
|---|---|
/start |
Приветствие и краткая справка |
/games |
Список предстоящих игр и кнопки «Записаться» |
/create |
Создать новую игру (ввести только название) |
/my |
Мои записи и кнопки «Отписаться» |
/no_show <ID игры> |
Отметить неявку (только создатель игры) — затем выбрать участника в кнопках |
Бот написан на aiogram 3 (async). Нужен Python 3.10+.
- Создай бота в Telegram через @BotFather и получи токен.
- Клонируй репозиторий и установи зависимости:
cd witches-bot
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt- Задай переменные окружения (или создай файл
.envи подгружай его):
export BOT_TOKEN=твой_токен_от_BotFather- Запуск:
python main.pyИли одной командой (создаст venv и установит зависимости при первом запуске):
chmod +x run.sh && ./run.sh| Переменная | По умолчанию | Описание |
|---|---|---|
BOT_TOKEN |
— | Токен бота (обязательно) |
MAX_PARTICIPANTS |
15 | Максимум человек в основной записи на одну игру |
PENALTY_DAYS |
14 | Дней штрафа (только лист ожидания) за неявку |
DATABASE_PATH |
bot_data.db | Путь к файлу SQLite |
ALLOWED_CREATORS |
— | Через запятую user_id тех, кто может создавать игры (пусто = все) |
CREATOR_GROUP_ADMINS |
0 | В группе только админы группы могут создавать игры (1/true = да) |
Скопируй .env.example в .env и подставь свой токен:
cp .env.example .env
# Отредактируй .envПри запуске можно подгружать .env вручную или через python-dotenv (добавить в проект при необходимости).