From 29743114ddf397e45e7eb3820abd08334aa3c2a7 Mon Sep 17 00:00:00 2001 From: Sergey Elpashev Date: Sat, 4 Nov 2023 05:30:50 +0300 Subject: [PATCH] Added newpost and autoload module funcs --- handlers/admin_commands.py | 56 +++++++++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/handlers/admin_commands.py b/handlers/admin_commands.py index 45f2121..839cfa8 100644 --- a/handlers/admin_commands.py +++ b/handlers/admin_commands.py @@ -1,8 +1,13 @@ from typing import Any +from uuid import uuid4 from aiogram import Bot, F, Router, types from aiogram.filters import Command +from aiogram.utils.media_group import MediaGroupBuilder +from sqlalchemy.orm import Session +from db.data import Admin, Image, Post, User, engine +from handlers.filters.new_post import NewPostFilter, NewSoloPostFilter from handlers.middlewares.user import AdminMiddleware @@ -14,9 +19,58 @@ class Admin_commands: self.router = Router() self.router.message.middleware(AdminMiddleware()) + @self.router.message(Command('test')) + async def test_command(message: types.Message): + with Session(engine) as session: + user = session.get(User, message.from_user.id) + await message.answer(str(user)) + + @self.router.message(NewPostFilter()) + async def new_post(message: types.Message): + with Session(engine) as session: + post = session.query(Post).filter( + Post.media_group_id == message.media_group_id).first() + if post: + photo = Image(message_id=message.message_id, post=post, file_id=message.photo[-1].file_id) + session.add(photo) + session.commit() + else: + print('No posts anymore ;-(') + @self.router.message(Command('info')) async def info_command(message: types.Message): await message.answer('Тест') + @self.router.message(Command('post')) + async def post(message: types.Message): + with Session(engine) as session: + post = session.query(Post).filter(Post.posted == False).order_by(Post.timestamp.asc()).first() + if post: + images = MediaGroupBuilder(caption=post.text) + for image in post.images: + images.add_photo(image.file_id) + await message.answer_media_group(images.build()) + post.posted = True + session.commit() + else: + await message.answer('Постов немаэ') + + @self.router.message(NewSoloPostFilter()) + async def post_solo(message: types.Message): + with Session(engine) as session: + post = Post(uuid=uuid4(), text=message.caption.replace('/newpost ', ''), media_group_id='') + post_user = session.get(Admin, message.from_user.id) + post.user = post_user + photo = Image(message_id=message.message_id, post=post, file_id=message.photo[-1].file_id) + session.add(photo) + session.add(post) + session.commit() + await message.answer('Пост успешно добавлен!') + + def __call__(self, *args: Any, **kwds: Any) -> Router: - return self.router \ No newline at end of file + return self.router + + +def setup(bot: Bot) -> Router: + return Admin_commands(bot)() \ No newline at end of file