Cat

AIOgram3 5.1. Создание структуры

В этом посте начнём создавать структуру проекта бота. Разберёмся с пакетами в Python и Dataclass.

Все статьи

Icon Link

Дополнительные материалы

Icon Link

Реклама

Icon Link
Telegram-бот на AIOgram3 proDream 03 Август 2023 Просмотров: 2681

Большинство проектов не ограничиваются одним лишь файлом main.py, напротив, часто проекты состоят из множества файлов с кодом конкретной логики. Для этого в Python предусмотрена "пакетная" система. Пакет является директорией, которая содержит в себе модули и подпакеты. Он позволяет логически объединять связанный функционал и предоставляет простой способ управления зависимостями и кодом в рамках проекта.

 

Python Package.

Если, вы работаете в PyCharm или другой Python-направленной IDE, то достаточно в контекстном меню директории выбрать "New - Python Package".

 

Но создать пакет можно и вручную. 
Для этого необходимо создать директорию с необходимым именем пакета. Внутри директории создать пустой файл __init.py__. Данный файл сообщит интерпретатору, что директория является пакетом.

 

Пакет botlogic.

Создадим основной пакет botlogic со всей будущей логикой.
В этом пакете создадим файл settings.py.


В этом файле будут располагаться, при необходимости, настройки бота. Пока, что мы перенесём в него токен бота и добавим ID администратора.

Тут, для удобства применим ООП.
Те, кто уже успели испугаться, расслабьтесь, в создании бота ООП либо крайне мало, либо нет вовсе. Тут я применяю его банально для удобства.

 

Датакласс Secrets.

Создадим класс датакласс Secrets и в нём два поля token и admin_id:

from dataclasses import dataclass


@dataclass
class Secrets:
    token: str = 'ваш_токен'
    admin_id: int = 12345

 

Разберём, что тут происходит.
Мы создали класс Secrets и определили два поля:

  • Строковое token в котором указываем полученный от BotFather токен бота.
  • Целочисленное admin_id в котором необходимо указать ваш Telegram-ID, но это будет несколькими постами далее, пока просто заполните любым числом.

Далее должно было быть несколько методов, таких как __init__ и геттеры полей, но нам тут всё это не нужно. Для избегания большого количества ненужного кода, мы используем декоратор @dataclass.
Декоратор @dataclass - позволяет автоматически сгенерировать методы класса для работы с данными.
Когда применяется декоратор @dataclass к классу, он автоматически добавляет реализацию необходимых методов, таких как:

  1. __init__: Создает конструктор класса, принимающий значения для каждого атрибута.
  2. __repr__: Создает строковое представление объекта, которое используется при вызове repr().
    И ряда других.
    Кроме того, декоратор @dataclass позволяет использовать аннотации типов для объявления типов полей класса, что упрощает чтение кода.

Продолжение в следующем посте.

Автор

    Нет комментариев

    Реклама