An open API service indexing awesome lists of open source software.

https://github.com/mom1/order_tele_bot

I study OOP patterns and telegram api
https://github.com/mom1/order_tele_bot

Last synced: 3 months ago
JSON representation

I study OOP patterns and telegram api

Awesome Lists containing this project

README

        

Запуск телеграмбота:

1. Установить все зваисимости из pyproject.toml (poetry)
2. (Опционально) Включить прокси (так как api и сам телеграмм бот под санкциями в РФ)
3. Указать токен вашего бота в /order_tele_bot/config/settings.py TOKEN
4. Указать имя вашего бота в /order_tele_bot/config/settings.py NAME_BOT
5. Запустить order_tele_bot/main.py
6. Открыть телеграм(месенджер) и в поиске найти сам бот (@имя вашего бота)
7. Нажать старт.

Паттерны и Структура:
1. /order_tele_bot/main.py Класс OrderBot Одиночка

2. /order_tele_bot/router.py
2.1 Класс Router - одиночка и что то типо фасада.
Классы из 4.3 регистрируются в нем, он же в свою очередь регистрирует их в целевом подписчике
если тот указан или в моммент уго указания. Может принимать классы и перед регистрацией инстанцировать их.

3. /order_tele_bot/markup.py
3.1 Класс Keyboards - Стратегия/Строитель Router из 2.1 регистрирует классы из 4.3 в
Keyboards если у них указанно в каком меню они должны отображаться.
Keyboards - имеет разные функции/стратегии для построения меню (кнопками/инлайном).

4. /order_tele_bot/handlers.py
4.1 Класс Handler - Источник событий из паттерна Наблюдатель. В отличие от классического паттерна
подписка происходин не на любые изменения, а на конкретные события/тексты/комманды.
4.2 AbsCommand - абстрактный класс команды наблюдателя.
Имеет фабричный метод clone, но я пока ушел от его использования.
4.3 Классы StartCommand, ChooseGoods, InfoBot, SettingsBot, Caregory - конкретные наблюдатели-приспособленцы, содержат логику ответов.

5. /order_tele_bot/metaclasses.py
5.1 Класс RegistryHolder - паттерн реестр

6. /order_tele_bot/db/tables.py
6.1 Реализован паттерн Domain Model, нативными средствами встроенной в библиотеку sqlalchemy,
которые были реализованы в tables.

7. /order_tele_bot/handlers.py
7.1 Избавился от магических цифр
7.2 Вижу признаки что этот файл превращается в Золотой молоток