Refactoring: step 1
- пакет app переименован в src - файл БД теперь должен лежать в data - удалена папка коммандс, все команды вынесены в модуль коммандс или админ_коммандс - нет импортов в ините - убраны все импорты * - теперь в .env можно указать use_reminder="FALSE", тогда не будет стартовать ремайндер - можно указать урл для Правил - в конфиге теперь только конфиг -то, что из енва получаем - константы теперь лежат отдельно - добавлены явные return там, где не было - бот и вебхук разнесены отдельно - при старте проверяем, что Правила доступны - добавлено еще логирование
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
from pathlib import Path
|
||||
|
||||
from sqlalchemy import Column, String, Integer, Boolean, ForeignKey
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import relationship, declarative_base, sessionmaker
|
||||
|
||||
Base = declarative_base()
|
||||
|
||||
root = Path(__file__).parent.parent
|
||||
data_folder = root / "data"
|
||||
db_path = data_folder / "db.sqlite"
|
||||
engine = create_engine(f'sqlite:///{db_path}')
|
||||
|
||||
Base.metadata.create_all(engine)
|
||||
Session = sessionmaker(bind=engine)
|
||||
session = Session()
|
||||
|
||||
|
||||
class Permission:
|
||||
USE_COMMANDS = 1 # Пользоваться обычными командами.
|
||||
SEND_LINKS = 2 # Может отправлять ссылки без удаления.
|
||||
MODIFY_QUOTES = 4 # Может добавлять и удалять цитаты.
|
||||
MODERATE = 8
|
||||
ADMIN = 16 # Может банить юзеров и удалять сообщения.
|
||||
|
||||
|
||||
class Quote(Base):
|
||||
__tablename__ = "quotes"
|
||||
id = Column(Integer, primary_key=True)
|
||||
chat_id = Column(Integer, ForeignKey('chats.chat_id'))
|
||||
text = Column(String)
|
||||
|
||||
def __repr__(self):
|
||||
return f"Quote({self.text=}, {self.chat_id=})"
|
||||
|
||||
|
||||
class Chat(Base):
|
||||
__tablename__ = "chats"
|
||||
id = Column(Integer, primary_key=True)
|
||||
chat_id = Column(Integer, unique=True)
|
||||
title = Column(String)
|
||||
|
||||
# Settings
|
||||
quotes = relationship('Quote', backref='chat', cascade='all, delete')
|
||||
antispam = Column(Boolean)
|
||||
report = Column(Boolean)
|
||||
reminder = Column(Boolean)
|
||||
hidden = Column(Boolean)
|
||||
|
||||
def __repr__(self):
|
||||
return f'Chat({self.chat_id=}, {self.title=})'
|
||||
Reference in New Issue
Block a user