mirror of
https://github.com/MrSedan/neuro-reply-bot-reworked.git
synced 2026-01-15 05:59:43 +03:00
Merge pull request #4 from MrSedan/hotfix-spoiler-col
Hotfix spoiler col
This commit is contained in:
31
db/data.py
31
db/data.py
@@ -9,24 +9,27 @@ from sqlalchemy import Column, DateTime, ForeignKey, create_engine
|
|||||||
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship
|
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship
|
||||||
|
|
||||||
load_dotenv(join(dirname(__file__), '..', '.env'))
|
load_dotenv(join(dirname(__file__), '..', '.env'))
|
||||||
DATABASE_PASSWORD=os.getenv('DATABASE_PASSWORD')
|
DATABASE_PASSWORD = os.getenv('DATABASE_PASSWORD')
|
||||||
DATABASE_NAME=os.getenv('DATABASE_NAME')
|
DATABASE_NAME = os.getenv('DATABASE_NAME')
|
||||||
DATABASE_USER=os.getenv('DATABASE_USER')
|
DATABASE_USER = os.getenv('DATABASE_USER')
|
||||||
DATABASE_PORT=os.getenv('DATABASE_PORT')
|
DATABASE_PORT = os.getenv('DATABASE_PORT')
|
||||||
DATABASE_HOST=os.getenv('DATABASE_HOST')
|
DATABASE_HOST = os.getenv('DATABASE_HOST')
|
||||||
engine = create_engine(f"postgresql+psycopg2://{DATABASE_USER}:{DATABASE_PASSWORD}@{DATABASE_HOST}:{DATABASE_PORT}/{DATABASE_NAME}", echo=True)
|
engine = create_engine(
|
||||||
|
f"postgresql+psycopg2://{DATABASE_USER}:{DATABASE_PASSWORD}@{DATABASE_HOST}:{DATABASE_PORT}/{DATABASE_NAME}", echo=True)
|
||||||
|
|
||||||
|
|
||||||
class Base(DeclarativeBase):
|
class Base(DeclarativeBase):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class User(Base):
|
class User(Base):
|
||||||
__tablename__ = 'user'
|
__tablename__ = 'user'
|
||||||
|
|
||||||
id: Mapped[int] = mapped_column(primary_key=True)
|
id: Mapped[int] = mapped_column(primary_key=True)
|
||||||
user_name: Mapped[Optional[str]]
|
user_name: Mapped[Optional[str]]
|
||||||
|
|
||||||
admin: Mapped['Admin'] = relationship(back_populates='user', cascade='all, delete-orphan')
|
admin: Mapped['Admin'] = relationship(
|
||||||
|
back_populates='user', cascade='all, delete-orphan')
|
||||||
|
|
||||||
def __repr__(self) -> str:
|
def __repr__(self) -> str:
|
||||||
return f'User(id={self.id!r}, user_name={self.user_name!r})'
|
return f'User(id={self.id!r}, user_name={self.user_name!r})'
|
||||||
@@ -34,12 +37,16 @@ class User(Base):
|
|||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
return f'User(id={self.id!r}, user_name={self.user_name!r})'
|
return f'User(id={self.id!r}, user_name={self.user_name!r})'
|
||||||
|
|
||||||
|
|
||||||
class Admin(Base):
|
class Admin(Base):
|
||||||
__tablename__ = 'admin'
|
__tablename__ = 'admin'
|
||||||
|
|
||||||
user_id: Mapped[int] = mapped_column(ForeignKey('user.id'), primary_key=True)
|
user_id: Mapped[int] = mapped_column(
|
||||||
|
ForeignKey('user.id'), primary_key=True)
|
||||||
user: Mapped['User'] = relationship(back_populates='admin')
|
user: Mapped['User'] = relationship(back_populates='admin')
|
||||||
posts: Mapped[List['Post']] = relationship(back_populates='user', cascade='all, delete')
|
posts: Mapped[List['Post']] = relationship(
|
||||||
|
back_populates='user', cascade='all, delete')
|
||||||
|
|
||||||
|
|
||||||
class Post(Base):
|
class Post(Base):
|
||||||
__tablename__ = 'post'
|
__tablename__ = 'post'
|
||||||
@@ -50,18 +57,22 @@ class Post(Base):
|
|||||||
user: Mapped['Admin'] = relationship(back_populates='posts')
|
user: Mapped['Admin'] = relationship(back_populates='posts')
|
||||||
text: Mapped[str]
|
text: Mapped[str]
|
||||||
media_group_id: Mapped[str]
|
media_group_id: Mapped[str]
|
||||||
images: Mapped[List['Image']] = relationship(back_populates='post', cascade='all, delete')
|
images: Mapped[List['Image']] = relationship(
|
||||||
|
back_populates='post', cascade='all, delete')
|
||||||
timestamp = Column(DateTime, default=datetime.utcnow)
|
timestamp = Column(DateTime, default=datetime.utcnow)
|
||||||
|
|
||||||
def __repr__(self) -> str:
|
def __repr__(self) -> str:
|
||||||
return f"UUID: {self.uuid}. From_user_id: {self.from_user_id}. media group id: {self.media_group_id}. Text: {self.text}"
|
return f"UUID: {self.uuid}. From_user_id: {self.from_user_id}. media group id: {self.media_group_id}. Text: {self.text}"
|
||||||
|
|
||||||
|
|
||||||
class Image(Base):
|
class Image(Base):
|
||||||
__tablename__ = 'photo'
|
__tablename__ = 'photo'
|
||||||
message_id: Mapped[int] = mapped_column(primary_key=True)
|
message_id: Mapped[int] = mapped_column(primary_key=True)
|
||||||
post: Mapped['Post'] = relationship(back_populates='images')
|
post: Mapped['Post'] = relationship(back_populates='images')
|
||||||
post_id: Mapped[int] = mapped_column(ForeignKey('post.uuid'))
|
post_id: Mapped[int] = mapped_column(ForeignKey('post.uuid'))
|
||||||
file_id: Mapped[str]
|
file_id: Mapped[str]
|
||||||
|
has_spoiler: Mapped[bool]
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
Base.metadata.create_all(engine)
|
Base.metadata.create_all(engine)
|
||||||
@@ -46,7 +46,7 @@ class Admin_commands:
|
|||||||
Post.media_group_id == message.media_group_id).first()
|
Post.media_group_id == message.media_group_id).first()
|
||||||
if post:
|
if post:
|
||||||
photo = Image(message_id=message.message_id,
|
photo = Image(message_id=message.message_id,
|
||||||
post=post, file_id=message.photo[-1].file_id, has_spoiler=message.has_media_spoiler)
|
post=post, file_id=message.photo[-1].file_id, has_spoiler=bool(message.has_media_spoiler))
|
||||||
session.add(photo)
|
session.add(photo)
|
||||||
session.commit()
|
session.commit()
|
||||||
else:
|
else:
|
||||||
@@ -201,7 +201,7 @@ class Admin_commands:
|
|||||||
Post.posted == False).order_by(Post.timestamp.asc()).first()
|
Post.posted == False).order_by(Post.timestamp.asc()).first()
|
||||||
if post:
|
if post:
|
||||||
images = MediaGroupBuilder(caption=post.text)
|
images = MediaGroupBuilder(caption=post.text)
|
||||||
for image in post.images:
|
for image in post.images[::-1]:
|
||||||
images.add_photo(
|
images.add_photo(
|
||||||
image.file_id, has_spoiler=image.has_spoiler)
|
image.file_id, has_spoiler=image.has_spoiler)
|
||||||
await message.answer_media_group(images.build())
|
await message.answer_media_group(images.build())
|
||||||
@@ -218,7 +218,7 @@ class Admin_commands:
|
|||||||
post_user = session.get(Admin, message.from_user.id)
|
post_user = session.get(Admin, message.from_user.id)
|
||||||
post.user = post_user
|
post.user = post_user
|
||||||
photo = Image(message_id=message.message_id,
|
photo = Image(message_id=message.message_id,
|
||||||
post=post, file_id=message.photo[-1].file_id, has_spoiler=message.has_media_spoiler)
|
post=post, file_id=message.photo[-1].file_id, has_spoiler=bool(message.has_media_spoiler))
|
||||||
session.add(photo)
|
session.add(photo)
|
||||||
session.add(post)
|
session.add(post)
|
||||||
session.commit()
|
session.commit()
|
||||||
|
|||||||
Reference in New Issue
Block a user