Проблема с системой банов TG Бота

Как можно сделать так, чтобы администратор мог указать причину бана и после бот указал это в чате? Пример : "!бан Спам" От бота в чат: "Пользователь X забанен. Причина - X"

Так же, как можно было бы реализовать систему глобального бана? Т.е. чтобы бот выдавал бан пользователю во всех чатах где присутствует данный бот.

Имеется следующий код:

@dp.message_handler(AdminFilter(is_chat_admin=True), IsReplyFilter(is_reply=True), commands=['ban'],
                    commands_prefix='!', chat_type=[types.ChatType.SUPERGROUP, types.ChatType.GROUP])
async def ban(message: types.Message):
    replied_user = message.reply_to_message.from_user.id
    admin_id = message.from_user.id
    await bot.kick_chat_member(chat_id=message.chat.id, user_id=replied_user)
    await bot.delete_message(chat_id=message.chat.id, message_id=message.message_id)
    await bot.send_message(chat_id=message.chat.id, text=f"[{message.reply_to_message.from_user.full_name}]"
                                                         f"(tg://user?id={replied_user})"
                                                         f" был забанен ",
                           parse_mode=types.ParseMode.MARKDOWN)

Ответы (1 шт):

Автор решения: videx

Как можно сделать так, чтобы администратор мог указать причину бана и после бот указал это в чате?

Получить эту причину с команды, например:

/ban {user} {reason}

где за место {user} пишут имя пользователя, а за место {reason} причину.

Так же, как можно было бы реализовать систему глобального бана?

Запоминать Telegram ID заблокированных и проверять всех при входе, если их ID есть в базе то сразу банить. Достать ID человека можно при помощи: message.from_user.id где message обьект сообщения пришедшего от этого пользователя. Желательно в какой нибудь таблице запоминать всех пользователей с их ID как это делаю я.

→ Ссылка