Бот для одного клана Clash of Clans с регистрацией игроков через ЛС и сбором статистики через официальный API.
- Регистрация через /register (только в ЛС, в группе — ссылка на ЛС).
- Проверка владельца через
/players/{tag}/verifytoken. - Статистика игрока и админская статистика.
- Уведомления (ЛС или общий чат) + ежедневные времена (
/notify 09:00,18:00). - Выбор целей на подготовке КВ/ЛВК (
/targets). - Админская очистка данных через
/wipe.
- Бот может менять custom admin title только для админов Telegram, если есть права.
- Для обычных участников Telegram не позволяет менять роли/ники через бота.
- Поэтому используется команда
/whoisдля отображения соответствий Telegram -> CoC.
- Python 3.11+
- PostgreSQL
- Clash of Clans Developer API key
-
Скопируйте примеры конфигов:
cp .env.example .env cp config.example.yml config.yml
-
Заполните
.envиconfig.yml:BOT_TOKEN— токен Telegram бота.COC_API_TOKEN— токен Clash of Clans API.CLAN_TAG— тег клана.MAIN_CHAT_ID— id главного чата.ADMIN_TELEGRAM_IDS— список Telegram user_id админов только в конфиге.
-
Запуск:
docker-compose up --build
-
Применение миграций:
docker-compose run --rm bot alembic upgrade head
Если бот запущен через Docker Compose, остановить его можно так:
docker compose stopПолностью остановить и удалить контейнеры/сеть (данные БД сохранятся в volume):
docker compose downЕсли alembic heads показывает две версии, но локально старого файла нет, скорее
всего старый файл остался внутри Docker-образа. Сделайте пересборку без кеша и
проверьте головы снова:
docker compose build --no-cache bot
docker compose run --rm bot alembic headsДолжна остаться только одна голова. После этого можно применить миграции:
docker compose run --rm bot alembic upgrade head- Напишите @BotFather
- Создайте бота и получите токен
- Создайте ключ: https://developer.clashofclans.com
- Добавьте IP в allowlist (для Docker — IP хоста)
- Сохраните
COC_API_TOKENв.env
Для корректной работы в главном чате:
- Send messages
- Delete messages (если нужно)
- Manage chat (для изменения custom admin title)
/start— справка + кнопки/register— регистрация в ЛС/me— связь Telegram -> CoC/mystats— личная статистика/stats— админская статистика/season— список сезонов и выбор периода/notify— настройки уведомлений (время можно задать как/notify 09:00,18:00)/targets— выбор целей во время подготовки/whois— соответствия Telegram -> CoC/wipe— админская очистка данных
- Нет команды выдачи админов — админы только в конфиге
ADMIN_TELEGRAM_IDS. - Секреты не логируются и не хранятся в репозитории.