bot/bozenka/instances/telegram/handlers/chat_admin/mutes.py

61 lines
3.5 KiB
Python

from aiogram.filters import CommandObject
from aiogram.types import Message as Message
from aiogram.enums import ChatMemberStatus
from sqlalchemy.ext.asyncio import async_sessionmaker
from bozenka.instances.telegram.utils.keyboards import mute_keyboard, unmute_keyboard
from bozenka.instances.telegram.utils.simpler import SolutionSimpler
async def mute(msg: Message, command: CommandObject, session_maker: async_sessionmaker):
"""
Handler of command /mute
Restricts member from using chat
:param msg: Message telegram object
:param command: Object of telegram command
:param session_maker: Session maker object of SqlAlchemy
:return:
"""
restricting = await msg.chat.get_member(msg.reply_to_message.from_user.id)
if restricting.status == ChatMemberStatus.LEFT or restricting.status == ChatMemberStatus.KICKED:
return
config = await SolutionSimpler.mute_user(msg, command, session_maker)
if config["mute_time"] and config["reason"] != "":
await msg.answer("Удача ✅\n"
f"Пользователь {msg.from_user.mention_html()} запретил писать "
f"сообщения пользователю {msg.reply_to_message.from_user.mention_html()}.\n"
f"По причине {config['reason']}, до даты {config['mute_time']}",
reply_markup=mute_keyboard(msg.from_user.id, restricting.user.id))
elif config["mute_reason"] != "":
await msg.answer("Удача ✅\n"
f"Пользователь {msg.from_user.mention_html()} запретил писать "
f"сообщения пользователю {msg.reply_to_message.from_user.mention_html()}.\n"
f"По причине {config['reason']}",
reply_markup=mute_keyboard(msg.from_user.id, restricting.user.id))
elif config["mute_time"]:
await msg.answer("Удача ✅\n"
f"Пользователь {msg.from_user.mention_html()} запретил писать "
f"сообщения пользователю {msg.reply_to_message.from_user.mention_html()}.\n"
f"До даты {config['mute_time']}",
reply_markup=mute_keyboard(msg.from_user.id, restricting.user.id))
else:
await msg.answer("Удача ✅\n"
f"Пользователь {msg.from_user.mention_html()} запретил писать "
f"сообщения пользователю {msg.reply_to_message.from_user.mention_html()}.\n",
reply_markup=mute_keyboard(msg.from_user.id, restricting.user.id))
async def unmute(msg: Message, session_maker: async_sessionmaker):
"""
Handler of command /unmute
Gives access member to send messages into chat
:param msg: Message telegram object
:param command: Object of telegram command
:param session_maker: Session maker object of SqlAlchemy
:return:
"""
await SolutionSimpler.unmute_user(msg, session_maker)
await msg.answer("Удача ✅"
f"Пользователь {msg.from_user.mention_html()} разрешил писать "
f"сообщения пользователю {msg.reply_to_message.from_user.mention_html()}",
reply_markup=unmute_keyboard(msg.from_user.id, msg.reply_to_message.from_user.id))