From d286da698e06a5bfa57131327db10d1fc716eea5 Mon Sep 17 00:00:00 2001 From: burdukov Date: Sat, 18 Nov 2023 16:34:54 +0500 Subject: [PATCH] reply from admin to user --- handlers/admin_commands.py | 12 ++++++++++++ handlers/filters/new_post.py | 9 +++++---- handlers/filters/reply_to_user.py | 10 ++++++++++ 3 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 handlers/filters/reply_to_user.py diff --git a/handlers/admin_commands.py b/handlers/admin_commands.py index cfbf242..56b05a2 100644 --- a/handlers/admin_commands.py +++ b/handlers/admin_commands.py @@ -11,6 +11,7 @@ from sqlalchemy.orm import Session from db.data import Admin, Image, Post, User, engine from handlers.filters.new_post import (ChangePosts, NewPostFilter, NewSoloPostFilter) +from handlers.filters.reply_to_user import ReplyToUser from handlers.middlewares.user import AdminMiddleware from handlers.states.change_post import ChangePost @@ -224,6 +225,17 @@ class Admin_commands: session.commit() await message.answer('Пост успешно добавлен!') + @self.router.message(ReplyToUser()) + async def reply_user(message: types.Message): + if message.reply_to_message.forward_from is None: + await message.reply('Пользователь стесняшка и не разрешает отвечать на его сообщения...') + else: + try: + await bot.send_message(message.reply_to_message.forward_from.id, f'Вам ответил админ:\n{message.text}') + await message.reply('Ваше сообщение было отправлено!') + except Exception as e: + print(e) + def __call__(self, *args: Any, **kwds: Any) -> Router: return self.router diff --git a/handlers/filters/new_post.py b/handlers/filters/new_post.py index 2430481..3b4095f 100644 --- a/handlers/filters/new_post.py +++ b/handlers/filters/new_post.py @@ -26,15 +26,16 @@ class NewPostFilter(Filter): 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 ') - + return message.media_group_id is None and message.content_type == 'photo' and message.caption and message.caption.startswith('/newpost ') + + class ChangePosts(Filter): async def __call__(self, message: types.Message) -> bool: - return message.text and message.text.startswith("/change") and message.chat.type == 'private' \ No newline at end of file + return message.text and message.text.startswith("/change") and message.chat.type == 'private' diff --git a/handlers/filters/reply_to_user.py b/handlers/filters/reply_to_user.py new file mode 100644 index 0000000..bf4a2a7 --- /dev/null +++ b/handlers/filters/reply_to_user.py @@ -0,0 +1,10 @@ +from typing import Any +from aiogram import types +from aiogram.filters import Filter + + +class ReplyToUser(Filter): + async def __call__(self, message: types.Message) -> bool: + if message.reply_to_message is None or message.chat.type != 'private': + return False + return True