From fa8c54bf635c049309af777b9fac349dcba6e6e2 Mon Sep 17 00:00:00 2001 From: Sergey Elpashev Date: Sat, 4 Nov 2023 05:32:35 +0300 Subject: [PATCH] Filters for creating new post --- handlers/filters/new_post.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 handlers/filters/new_post.py diff --git a/handlers/filters/new_post.py b/handlers/filters/new_post.py new file mode 100644 index 0000000..34770ec --- /dev/null +++ b/handlers/filters/new_post.py @@ -0,0 +1,36 @@ +from asyncio import create_task +from time import sleep +from typing import Any +from uuid import uuid4 + +from aiogram import types +from aiogram.filters import Filter +from sqlalchemy.orm import Session + +from db.data import Admin, Image, Post, User, engine + + +class NewPostFilter(Filter): + async def __call__(self, message: types.Message) -> bool: + if message.media_group_id is None or message.content_type != 'photo': + return False + with Session(engine) as session: + post = session.query(Post).filter( + Post.media_group_id == message.media_group_id).first() + if post is None: + if not (message.caption.startswith('/newpost ') if message.caption else False): + return False + new_post = Post(uuid=uuid4(), text=message.caption.replace( + '/newpost ', ''), media_group_id=message.media_group_id) + post_user = session.get(Admin, message.from_user.id) + new_post.user = post_user + session.add(new_post) + session.commit() + + await message.answer('Пост успешно добавлен!') + return True + + +class NewSoloPostFilter(Filter): + async def __call__(self, message: types.Message) -> bool: + return message.media_group_id is None and message.content_type == 'photo' and message.caption.startswith('/newpost ')