- Бот для игры в Тайного Санту через Telegram бота
Схема: https://miro.com/app/board/uXjVNxWmMtE=/?share_link_id=603886678614
Поддержка 4-х языков, перевод был осуществлен машинным способом. Включенные языки:
-
RU
-
ENG
-
KAZ
-
UK
-
-
Каждый желающий может создать комнату для неограниченного количества людей.
- При создании нужно указать:
- Имя комнаты
- Бюджет для своей компании игроков
- Свои пожелания для подарка
Переменная окружения USER_ROOMS_LIMIT задает лимит колличества комнат, которыми может управлять один игрок.
При создании комнаты, генерируется случайный уникальный номер, длина номеера задается параметром ROOM_NUBER_LENGTH.
- При создании нужно указать:
-
-
- Бот позволяет внести и изменить такие данные как:
- Имя и Фамилия
- Домашний Адрес
- Номер Телефона
- Часовой пояс
- Разрешено полное удаление внесенных данных
Адрес и номер телефона шифруется в базе Fernet алгоритмом в целях безопасности.
- Бот позволяет внести и изменить такие данные как:
-
-
Меню управления комнатами для обычного пользователя:
- Выйти из комнаты
- Изменить пожелания
-
Меню управления комнатами для владельца:
- Начать игру - позволяет установить время рассылки
- Указать часовой пояс - Установить часовой пояс для конкретной зоны
- Изменить пожелания
- Настройки
- Удалить комнату
- Изменить имя комнаты
- Изменить владельца
- Изменить бюджет комнаты
Администратор комнаты не может выйти из нее, пока не передаст управление другому. Комната может быть только окончательно удалена.
Если при жеребьевке не оказалось нужного колличества игроков, комнату можно активировать повторно.
- Начать игру - позволяет установить время рассылки
-
-
После разыгрывания ролей в игре, в комнатах доступны 2 опции, позволяющие коммуницировать анонимно между получателем и отправителем посредством бота.
- Отправка сообщения Тайному Санте
- Отправка сообщения получателю
-
- Покрытие тестами
- Aiogram 3
- FastAPI
- SQLAlchemy 2
- Alemnic
- PostgreSQL
- Redis
- Установить PostgreSQL и Redis, сконфигурировать и создать БД.
- Redis требует включения доступа по паролю:
sudo nano /etc/redis/redis.conf # requirepass foobared
- Создать свой .env файл по шаблону .env.example
pip install -r requirements
alembic upgrade head
uvicorn app.cli:create_app --reload
- Redis требует включения доступа по паролю:
-
Установить Docker https://docs.docker.com/engine/install/ubuntu/
- Создать свой .env файл по шаблону .env.example
-
Запуск Docker Compose
docker-compose up -d
-
Пересборка при обновлении кода
docker-compose build
-
Перезапуск контейнеров с пересобранными образами:
docker-compose up -d --build
Миграции
docker exec -t <backend container> alembic upgrade head
-
Что бы добавить Superuser права пользователю, выполните:
python .\manage.py set_superuser <telegram_user_id>
-
Что бы удалить их, выполните ****
python .\manage.py remove_superuser <telegram_user_id>
-
python .\manage.py register_webhook
Или сформируйте и сделайте GET запрос
https://api.telegram.org/bot{telegram_token}/setWebhook?url=https://{domain_name}/bot/
Пример:
https://api.telegram.org/bot1234567890:AAABBBCCCDDDEEEFFF0000000_FFFFF/setWebhook?url=https://e87d-5-76-101-111.ngrok-free.app/bot/
-
Так же, для работы Telegram Login Widget, требуется зарегистрировать домен вашего сайта в @BotFather используя команду /setdomain
Бекапить базу данных можно с помощью команды ниже, добавленной в cron:
docker exec -t <имя_контейнера> pg_dump -U <имя_пользователя> <имя_базы_данных> > <имя_файла>.sql
Или добавить готовый скрипт в cron находящийся в deploy\backup. Нужно будет внести настройки под себя.