Skip to content

Телеграм-Бот проект для Яндекс Лицея 2022/2023

License

Notifications You must be signed in to change notification settings

K1rL3s/Telegram-Chess-Bot

Repository files navigation

Telegram-Chess-Bot

Телеграм-Бот проект для Яндекс Лицея 2022/2023, работающий на Шахматном API.
Бот позволяет играть в шахматы с движком Stockfish в Telegram.

Функционал

  • Асинхронная работа за счёт библиотеки aiogram
  • Интерфейс с помощью inline-кнопок
  • Гибкая настройка уровня игры движка
  • Кастомизация изображения доски
  • Хранение информации о пользователе при помощи sqlalchemy
  • Личная и глобальная статистика побед, поражений и ничьей
  • Возможность получить подсказку и сдаться

Запуск

  1. Склонировать репозиторий и перейти в него:

    git clone https://github.com/K1rL3s/Telegram-Chess-Bot.git
    cd ./Telegram-Chess-Bot
    
  2. Создать и заполнить файл .env в корневой папке (пример: .env.example):

    CHESS_TG_TOKEN=<tg-bot-token>
    API_URL=http://ip:port/api/chess/
    API_AUTH_KEY=<token>
    LOG_CHAT=<chat-id>
    UPS=<int>
    CACHE_LIMIT_REQUEST=<int>
    CACHE_GLOBAL_TOP=<int>
    GLOBAL_TOP=<int>
    
  • Docker

  1. Иметь установленный Docker Engine

  2. Собрать и запустить:

    docker compose up -d --build
    
  • У себя

  1. Установить python версии 3.10 (Тестировалось на версии 3.10.8)

  2. Создать и активировать виртуальное окружение:

    # Windows:
    python -m venv venv
    venv\Scripts\activate.bat
    
    # Linux:
    virtualenv venv --no-setuptools
    source venv\Scripts\activate
    curl -O https://bootstrap.pypa.io/get-pip.py
    python ./get-pip.py
    
  3. Установить все нужные библиотеки.

    # Windows:
    pip install -r ./requirements.txt
    
    # Linux:
    python -m pip install -r ./requirements.txt
    
  4. Запустить бота:

    python ./main.py
    

Скриншоты работы

Telegram_WIFil9xgVJ Telegram_uX4z1D1z0H Telegram_FaI7A4F93h chess_diagram

Пояснительная часть

Проект "Шахматный Телеграм Бот" был разработан Лесовым Кириллом по программе второго года Яндекс Лицея.
Идея сделать бота возникла после создания шахматного API, которое использовалось на хакатоне ИТМО и Яндекса по созданию навыков для Алисы.
Проект реализован при помощи асинхронной библиотеки aiogram, что позволило сделать такую интересную фичу, как "загружающееся сообщение" - те точки, которые обновляются в конце сообщения во время загрузки.
Для всех вычислений и изображений используется шахматное API, про которое написано подробнее в нём самом.

Releases

No releases published

Packages

No packages published

Languages