import asyncio
from aiogram import Router, types, F
from aiogram.filters import Command
from datetime import datetime, timedelta
router = Router()
router.message.filter(F.chat.id == '1234567890')
MUTE_P = {
'can_send_messages': False,
'can_send_documents': False,
'can_send_photos': False,
'can_send_videos': False,
'can_send_video_notes': False,
'can_send_voice_notes': False,
'can_send_polls': False,
'can_send_other_messages': False,
'can_add_web_page_preview': False,
}
@router.message(Command("mute"))
async def c_mute(message: types.Message):
if message.entities:
# Собираем юзеров для бана
users_to_mute = [e.user for e in message.entities if e.type == 'text_mention']
# Если список не пуст
if users_to_mute:
arg = message.text.rsplit(maxsplit=1)[-1] # в конце сообщения время мута
mute_min = int(arg) if arg.isdigit() else 120 # определяем есть ли цифра
mute_time = datetime.now() + timedelta(minutes=mute_min) # определяем время
targets = []
# Проходим циклом по списку и даём ограничения
for usr in users_to_mute:
await message.chat.restrict(usr.id, types.ChatPermissions(**MUTE_P), until_date=mute_time)
targets.append(f'<b>{usr.full_name}</b> id:<code>{usr.id}</code>')
# Собираем и отправляем отчёт в чат
targets_str = '\n'.join(targets)
text = f" Юзеры:\n{targets_str}\nВ муте на <b>{mute_min}</b> минут"
await message.answer(text, parse_mode='html')
# Если список пуст
else:
tmp = await message.reply(' Нет упоминания юзеров')
await asyncio.sleep(5)
await tmp.delete()