🌙

Модерация участников

Модерация участников

banChatMember

Блокирует участника: он исключается из чата и не может вернуться. Требует право block_users.

POST ?method=banChatMember
{ "chat_id": 123, "user_id": 42, "reason": "спам" }
ПараметрТипОбяз.Описание
chat_idintID чата
user_idintКого блокировать
reasonstringПричина, попадает в журнал

Ответ: { "ok": true, "result": true }. Журнал: ban.

unbanChatMember

Снимает блокировку. Требует block_users.

POST ?method=unbanChatMember
{ "chat_id": 123, "user_id": 42 }

Журнал: unban.

kickChatMember

Исключает участника без блокировки — он может вернуться по ссылке-приглашению. Требует remove_users.

POST ?method=kickChatMember
{ "chat_id": 123, "user_id": 42 }

Журнал: kick.

promoteChatMember

Назначает администратора. Требует add_admins или роль владельца.

{
  "chat_id": 123,
  "user_id": 42,
  "permissions": {
    "delete_messages": true,
    "remove_users": true,
    "block_users": true,
    "pin_messages": true,
    "invite_users": true,
    "change_info": false,
    "add_admins": false,
    "post_messages": false,
    "edit_messages": false
  },
  "custom_title": "Модератор"
}

Не переданные права считаются false. Если бот не владелец, права, которых нет у него самого, молча вырезаются из набора. custom_title обрезается до 32 символов. Пользователь должен уже состоять в чате. Журнал: promote.

Ошибки: 400 — цель не в чате или это владелец; 403 — нет add_admins либо цель равна или старше бота по правам.

demoteChatMember

Снимает права администратора. Требует add_admins.

POST ?method=demoteChatMember
{ "chat_id": 123, "user_id": 42 }

Владельца снять нельзя — 400 Cannot demote owner. Журнал: demote.

setChatAdministratorCustomTitle

Меняет звание администратора, не трогая его права. Требует add_admins.

POST ?method=setChatAdministratorCustomTitle
{ "chat_id": 123, "user_id": 42, "custom_title": "Основатель" }

Пользователь должен быть администратором или владельцем, иначе 400 User is not admin. Журнал: custom_title_set.

pykodaribot

from pykodaribot import ChatAdministratorRights

await bot.ban_chat_member(chat_id, user_id, reason="спам")
await bot.unban_chat_member(chat_id, user_id)
await bot.kick_chat_member(chat_id, user_id)

await bot.promote_chat_member(chat_id, user_id, ChatAdministratorRights(
    delete_messages=True,
    remove_users=True,
    pin_messages=True,
), custom_title="Модератор")

await bot.demote_chat_member(chat_id, user_id)
await bot.set_chat_administrator_custom_title(chat_id, user_id, "Основатель")

Команда модерации в ответ на сообщение нарушителя:

@dp.message(filters.command("ban"))
async def ban(msg):
    if not msg.reply_to_message_id:
        await msg.answer("Ответьте этой командой на сообщение нарушителя")
        return
    target = await bot.get_chat_member(msg.chat.id, msg.from_user.id)
    if target.status == "member":
        return
    await msg.answer("Готово")
59 просмотров