Caution
04.07.2024
. Спасибо всем пользователям!
Привет! Я бот для подготовки к экзамену по бухгалтерскому учету. Приятно познакомиться! 🤝
Предлагаю вам посмотреть на меня в деле! Кликай! 👈
🚂 Ссылка ведет на YouTube.
🗄 Ниже приведена структура файлов и директорий проекта:
\---bookkeeper_exam
| .gitignore
| LICENSE
| README.md
|
+---readme_images
| simon_1.jpg
| simon_2.jpg
| simon_3.jpg
|
\---server
| .env # Файл с переменными окружения
| requirements.txt
|
+---migrations # SQL-скрипты для создания и заполнения БД
| createdb.sql
| questions.sql
| sections.sql
| sessions.sql
| themes.sql
|
+---src # Директория с исходным кодом
| | cli.py
| | config.py
| | main.py
| | setup.py
| |
| +---database
| | connection.py
| | models.py
| |
| +---enums
| | colors.py
| | literals.py
| | logs.py
| | markups.py
| | strings.py
| | types.py
| |
| +---handlers
| | buttons_handler.py
| | commands_handler.py
| | exam_handler.py
| | poll_handler.py
| | quiz_handler.py
| | utility_handlers.py
| |
| +---loggers
| | setup.py
| |
| +---middlewares
| | auth_middleware.py
| | log_middleware.py
| | miscellaneous.py
| | update_middleware.py
| |
| \---services
| entities_service.py
| utility_service.py
|
\---static # Исходные "сырые" файлы с вопросами
parsed.json
raw.pdf
- Язык программирования -
Python 3.12.4
; - Фреймворк для работы с
TelegramBotAPI
-aiogram 3.7.0
; - ORM-библиотека -
SQLAlchemy 2.0.30
; - СУБД -
PostgreSQL 16
; - Прочие зависимости описаны в файле
server/requirements.txt
.
📄 Весь код задокументирован. Вы можете ознакомиться с каждой интересующей вас строкой!
🌐 Для деплоя проекта использовался serverless сервис Render.com.
Были развернуты два web-сервиса:
- Webhook-сервис, на котором Саймон "слушает" входящие запросы от Telegram
✈️ ; - Сервис pgAdmin для удобного доступа к БД.
А также инстанс БД PostgreSQL 16
.
Так выглядит Dashboard деплоя:
И великолепные логи:
🛠 Саймон может быть запущен в двух режимах -
webhook
/polling
. Выбрать режим запуска можно с помощью следующих аргументов командной строки:
--webhook
--polling
В инструкции ниже описан процесс развертывания только в режиме
--polling
😢
Для локального развертывания необходимо прочесть некоторые 🪄 заклинания 🪄 в следующем порядке:
- При помощи BotFather создать нового бота. Можете заполнить информацию о нем и добавить аватар, если желаете.
- [НЕОБЯЗАТЕЛЬНО] Для удобства зарегистрируйте команды, которые будут доступны из
Меню
:/start
;/restart
;/exam
;/heal
;/change_hints_policy
.
- Получите токен доступа. Он должен выглядеть примерно так:
1234567890:aBCDeFghIjKLmnoPQRSTUvwXYzAbcDefGHi
. - Клонируйте этот репозиторий с помощью
git clone
. - Находясь в папке
server
создайте виртуальное окружение и установите зависимости:python -m venv venv .\venv\Scripts\activate pip install -r .\requirements.txt
- Создайте и заполните БД:
psql -U postgres -f .\migrations\createdb.sql -f .\migrations\questions.sql -f .\migrations\sections.sql -f .\migrations\sessions.sql -f .\migrations\themes.sql
⚠️ Обратите внимание на то, что в58
строке файлаcreatedb.sql
необходимо указать вашTelegramID
:INSERT INTO users (telegram_id) VALUES ('<ВАШ_TG_ID>');
Получить свой идентификатор можно у этого бота.
- Создайте файл окружения
.env
и заполните его по примеру файлаexample.env
. - Запустите бота командой:
python .\src\main.py --polling
- Победа! ✅
📸 Вот вам напоследок несколько моих фотокарточек для поднятия настроения:
Made by @shasoka