reply from admin to user

This commit is contained in:
2023-11-18 16:34:54 +05:00
parent 2813267d09
commit d286da698e
3 changed files with 27 additions and 4 deletions

View File

@@ -11,6 +11,7 @@ from sqlalchemy.orm import Session
from db.data import Admin, Image, Post, User, engine from db.data import Admin, Image, Post, User, engine
from handlers.filters.new_post import (ChangePosts, NewPostFilter, from handlers.filters.new_post import (ChangePosts, NewPostFilter,
NewSoloPostFilter) NewSoloPostFilter)
from handlers.filters.reply_to_user import ReplyToUser
from handlers.middlewares.user import AdminMiddleware from handlers.middlewares.user import AdminMiddleware
from handlers.states.change_post import ChangePost from handlers.states.change_post import ChangePost
@@ -224,6 +225,17 @@ class Admin_commands:
session.commit() session.commit()
await message.answer('Пост успешно добавлен!') 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: def __call__(self, *args: Any, **kwds: Any) -> Router:
return self.router return self.router

View File

@@ -33,8 +33,9 @@ class NewPostFilter(Filter):
class NewSoloPostFilter(Filter): class NewSoloPostFilter(Filter):
async def __call__(self, message: types.Message) -> bool: 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): class ChangePosts(Filter):
async def __call__(self, message: types.Message) -> bool: async def __call__(self, message: types.Message) -> bool:
return message.text and message.text.startswith("/change") and message.chat.type == 'private' return message.text and message.text.startswith("/change") and message.chat.type == 'private'

View File

@@ -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