This repository has been archived on 2025-09-07. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
MouseyBot/README.md

61 lines
5.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Школьный бот - Мышонок 🐭
![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54)
![Babel](https://img.shields.io/badge/Babel-F9DC3e?style=for-the-badge&logo=babel&logoColor=black)
![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge&logo=docker&logoColor=white)
![Nix](https://img.shields.io/badge/NIX-5277C3.svg?style=for-the-badge&logo=NixOS&logoColor=white)
- Школьный Telegram бот, для общения с учениками и проведенния различных мероприятий онлайн.
Бот имеет полностью настроенный функционал для работы в качестве предложки школьной группы. Также в нем есть инструменты администрирования, статистика.
- С помощью бота вы также можете получить доступ к эксклюзивным стикерам школы.
- Также это хороший проект для того, чтобы позаимствовать из него некоторый штучки.
Например, его структуру (работа с роутерами, разделение по директориям для удобного масштабирования), админ-панель, работу с БД и ее настройка, всякие фильтры, мидлвари и состояния тоже присутствуют и могут помочь в ваших проектах.
- Ну и конечно не забываем про локализацию и использование Docker.
- Бот распространяется под свободной лицензией, берите что хотите и используйте как вам нужно.
## Техническая часть 📃
- Бот написан на Python 3.11 с применением асинхронной библиотеки Aiogram (States, Middlewares, Custom Filters).
- При локальной разработке во время запуска в основной Python скрипт можно передавать параметры для очистки базы данных или обновления профиля бота из настроек в папке Mousey/Bot. При развертке с помощью Docker бот автоматически обновит свой профиль.
- База данных - PostgreSQL, взаимодействие осуществляется с помощью библиотеки SQLAlchemy.
- Также используется асинхронный клиент Redis для машины состояний (подробнее в документации Aiogram: States).
- Весь текст для диалогов бота находится в отдельном файле локализации (для локализации используется Babel и i18n мидлвари aiogram'a).
- Логирование главный событий + настройки для логов (автоудаление логов, сжатие файлов логов) осуществляется с помощью loguru.
- Бот развертывается с помощью Docker Compose или Podman Compose.
- Разработка осуществлялась с помощью NixOS с использованием Nix Shell.
## Содержание .env-файла 📭
- Файл находится в корневой папке проекта, так и называется .env
- Вы также можете изучить example.env (не забудьте проверить, заполнены ли все строки с тегом FIXME)
- Подробное содержание .env файла (вместо значений в круглых скобках необходимо указать ваши данные):
1. BOT_TOKEN = (ваш токен бота)
2. REDIS_HOST = "redis"
3. REDIS_PORT = 6379
4. POSTGRES_HOST = "postgres"
5. POSTGRES_PORT = 5432
6. POSTGRES_USER = "MouseyBot"
7. POSTGRES_PASSWORD = (пароль для БД)
8. POSTGRES_DB = "mousey_bot"
9. DB_URL = "postgresql+asyncpg://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}"
10. MAIN_ADMIN_ID = (Telegram ID главного админа)
## Если ваш выбор - NixOS ❄️
- Файл Shell/default.nix содержит все необходимые конфигурации для установки podman-compose, который изначально служил для развертки софта.
- Воспользуйтесь nix-shell: nix-shell ./Shell
## Развертка с помощью Docker 🤓
- Я использую docker и docker-compose-v2, однако можно использовать и docker-compose-v1 или podman.
- Шаги для развертки бота:
1. Скопируйте проект
2. Скопируйте example.env как .env
3. Заполните .env файл
4. Выполните: docker compose -f Docker/docker-compose.yaml --env-file .env up
## Удачи в использовании! 🫶
<img src="./Images/loopes.png" width="150"/>