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

5.3 KiB
Raw Blame History

Школьный бот - Мышонок 🐭

Python Babel Docker Nix

  • Школьный 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

Удачи в использовании! 🫶