5.3 KiB
Школьный бот - Мышонок 🐭
-
Школьный 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 файла (вместо значений в круглых скобках необходимо указать ваши данные):
- BOT_TOKEN = (ваш токен бота)
- REDIS_HOST = "redis"
- REDIS_PORT = 6379
- POSTGRES_HOST = "postgres"
- POSTGRES_PORT = 5432
- POSTGRES_USER = "MouseyBot"
- POSTGRES_PASSWORD = (пароль для БД)
- POSTGRES_DB = "mousey_bot"
- DB_URL = "postgresql+asyncpg://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}"
- 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.
- Шаги для развертки бота:
- Скопируйте проект
- Скопируйте example.env как .env
- Заполните .env файл
- Выполните: docker compose -f Docker/docker-compose.yaml --env-file .env up
Удачи в использовании! 🫶