diff --git a/Images/loopes.png b/Images/loopes.png new file mode 100644 index 0000000..dfe4c90 Binary files /dev/null and b/Images/loopes.png differ diff --git a/README.md b/README.md index 990e3ca..ae82f70 100644 --- a/README.md +++ b/README.md @@ -1,28 +1,37 @@ -# Школьный бот - Мышонок +# Школьный бот - Мышонок 🐭 +![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 бот, для общения с учениками и проведенния различных мероприятий онлайн. Бот имеет полностью настроенный функционал для работы в качестве предложки школьной группы. Также в нем есть инструменты администрирования, статистика. -- Также это хороший шаблон для того, чтобы позаимствовать из него некоторый штучки. +- С помощью бота вы также можете получить доступ к эксклюзивным стикерам школы. + +- Также это хороший проект для того, чтобы позаимствовать из него некоторый штучки. Например, его структуру (работа с роутерами, разделение по директориям для удобного масштабирования), админ-панель, работу с БД и ее настройка, всякие фильтры, мидлвари и состояния тоже присутствуют и могут помочь в ваших проектах. -- Ну и конечно не забываем про локализацию и использование podman (или Docker, если вы очень принципиальный, там сильно ничего не отличается в развертке). +- Ну и конечно не забываем про локализацию и использование Docker. - Бот распространяется под свободной лицензией, берите что хотите и используйте как вам нужно. -## Техническая часть +## Техническая часть 📃 - Бот написан на Python 3.11 с применением асинхронной библиотеки Aiogram (States, Middlewares, Custom Filters). - - БД - PostgreSQL, взаимодействие осуществляется с помощью библиотеки SQLAlchemy. - - Также используется асинхронный клиент Redis. - - Весь текст для диалогов бота находится в отдельном файле локализации (PyBabel). - - Логирование главный событий + настройки для логов (автоудаление логов, сжатие файлов логов). - - Бот полностью развертывается с помощью podman-compose || docker-compose. - - Разработка с помощью NixOS с использованием Nix Shell. + - При локальной разработке во время запуска в основной Python скрипт можно передавать параметры для очистки базы данных или обновления профиля бота из настроек в папке Mousey/Bot. При развертке с помощью Docker бот автоматически обновит свой профиль. + - База данных - PostgreSQL, взаимодействие осуществляется с помощью библиотеки SQLAlchemy. + - Также используется асинхронный клиент Redis для машины состояний (подробнее в документации Aiogram: States). + - Весь текст для диалогов бота находится в отдельном файле локализации (для локализации используется Babel и i18n мидлвари aiogram'a). + - Логирование главный событий + настройки для логов (автоудаление логов, сжатие файлов логов) осуществляется с помощью loguru. + - Бот развертывается с помощью Docker Compose или Podman Compose. + - Разработка осуществлялась с помощью NixOS с использованием Nix Shell. -## Содержание .env-файла -- Файл находится в корневой папке проекта, так и называется ".env". -- Вместо значений в круглых скобках необходимо указать ваши данные. +## Содержание .env-файла 📭 +- Файл находится в корневой папке проекта, так и называется .env +- Вы также можете изучить example.env (не забудьте проверить, заполнены ли все строки с тегом FIXME) +- Подробное содержание .env файла (вместо значений в круглых скобках необходимо указать ваши данные): 1. BOT_TOKEN = (ваш токен бота) 2. REDIS_HOST = "redis" 3. REDIS_PORT = 6379 @@ -33,17 +42,20 @@ 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 главного админа) -- Вы также можете изучить example.env -## Если ваш выбор - NixOS -- Просто используйте nix-shell, который скачает вам весь инструментарий -(podman-compose) с помощью команды: nix-shell ./Shell +## Если ваш выбор - NixOS ❄️ +- Файл Shell/default.nix содержит все необходимые конфигурации для установки podman-compose, который изначально служил для развертки софта. +- Воспользуйтесь nix-shell: nix-shell ./Shell -## Как развернуть с помощью docker-compose: -- Версия podman - 5.2.3, версия podman-compose - 1.2.0 +## Развертка с помощью 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 + 2. Скопируйте example.env как .env + 3. Заполните .env файл + 4. Выполните: docker compose -f Docker/docker-compose.yaml --env-file .env up + +## Удачи в использовании! 🫶 +