Всем привет! Добро пожаловать во вторую часть серии Discord Bot with Python. В этой части мы рассмотрим основы команд модерации, а также более подробную информацию о том, как работает библиотека discord.py.

  1. Что такое команды модерации?

Во-первых, нам нужно подробно описать, что такое команды модерации. В нашем случае мы разделим их на две категории: статическая и активная модерация. Статическая модерация — это единичные события, такие как кик пользователя. Активная модерация — это постоянный анализ того или иного действия пользователей. Проклятый фильтр попадает в эту категорию. В этой части серии мы рассмотрим только команды статической модерации, а в следующей части я подробно расскажу об активной модерации.

2. Реализации

Статическая модерация очень проста в реализации и требует в основном владения различными методами библиотеки discord.py. Команды, которые реализованы в этом фрагменте, — это Mute, Unmute, Clear, Nuke, Ban, Softban, Kick и Unban.

Здесь есть три категории команд: «Запретить», «Отключить звук» и «Очистить». Бан удаляет пользователя с сервера. Отключение звука отключает или отключает звук пользователя. Clear избавляется от сообщений.

Давайте сначала рассмотрим, как работают команды Clear. В основе команд очистки лежит метод «ctx.channel.purge(limit=num_messages)». Чтобы понять, что представляет собой этот метод, нам сначала нужно понять идею контекста (ctx означает контекст). Контекст — это, по сути, набор атрибутов, которые передаются функции. Способ его передачи зависит от команды, следующей за «@». Например, в командах нашего мода мы передаем функции «@commands.command()». Это передает информацию об условиях вызова функции. Это дает нам такие детали, как канал, в котором была вызвана эта команда. Это важно для наших команд Clear, потому что мы берем атрибут «ctx.channel» и используем метод очистки на этом канале. Команда очистки принимает аргумент «лимит» и очищает это количество сообщений из канала в порядке от самых последних до самых последних. В команде также есть несколько различных методов, которые добавляются для чистоты и некоторых крайних случаев, но в большинстве случаев вы можете просто использовать метод очистки.

На этом мы рассмотрели основы команд Clear. Я призываю вас попробовать реализовать это, прежде чем переходить к следующему разделу. Это поможет вам лучше понять методы, а также даст вам время ознакомиться с документацией discord.py, чтобы понять функции очистки.

Двигаясь дальше, давайте посмотрим на функции запрета, которые состоят из трех частей. У нас есть метод Unban, метод Ban и команды Kick. Во-первых, мы обратимся к методу Ban. Команда Ban основана на методе member.ban. Что делает этот метод, так это принимает объект-член и запрещает ему вход в гильдию, в которой была вызвана эта команда. Причина, по которой это работает, заключается в том, что мы получаем объект-член, указав «member: discord.Member». Если мы не укажем, что мы получим строку, которую мы должны разобрать. Команда Unban очень похожа на метод бана в том смысле, что она основана на методе «member.unban». Однако, поскольку пользователь уже был забанен, не всегда возможно получить @упоминание о нем. Из-за этого мы должны принять идентификатор пользователя. Этот идентификатор пользователя приходит в виде строки, которую мы затем должны проанализировать и превратить в пользовательский объект. Оттуда процедура во многом такая же, как функция запрета, когда вы выполняете пользовательскую операцию. Команда Kick по существу аналогична команде ban. Вы просто берете объект-член и используете встроенный метод класса-члена в объекте-члене. В этом случае встроенный метод — «member.kick()».

Наконец, давайте перейдем к командам Mute. Команды отключения звука очень просты в реализации. Все, что они делают, это принимают объект-член и присваивают ему приглушенную роль. В команде Mute есть две логические цепочки. Первая логическая цепочка предназначена для случаев, когда роль Muted не существует. В этом случае мы создаем роль «Без звука» и устанавливаем разрешения этой роли на каждом канале, чтобы запретить говорить. Мы делаем это путем получения списка всех каналов гильдии, в которой была вызвана эта команда. Это делается путем получения атрибута «ctx.guild.channels», который представляет собой список. Затем мы перебираем все каналы в списке и устанавливаем для каждого права доступа, которые нам нужны, в данном случае отключая пользователей с этой ролью. Затем роль дается указанному члену, и к ним применяются все разрешения. Вторая логическая цепочка предназначена для случаев, когда роль Muted существует. Эта логическая цепочка такая же, как и первая, за исключением того, что в ней отсутствует создание роли Muted.

На этом мы завершили статические команды модерации. Весь код доступен выше, поэтому обязательно внимательно прочитайте его, чтобы лучше понять, как все работает и все функции очистки.

3. Обзор

В этом уроке мы рассмотрели, как создавать статические команды модерации. При этом мы рассмотрели, что такое Context. Контекст будет очень важной частью всех будущих команд, которые мы создадим. Далее мы рассмотрели объект Member и некоторые встроенные методы, которые можно к нему применить. Наконец, мы объединили все это в три типа команд; Отключение звука, запрет и удар. Этот урок является хорошим индикатором сложности будущих уроков. Единственные дополнительные ресурсы, на которые я бы порекомендовал обратить внимание, — это документы discord.py и, в частности, методы-члены. Если вы хотите получить преимущество на следующем уроке, изучите основы слушателей. Наслаждайтесь новыми командами, которые у вас есть, и возвращайтесь к следующему уроку. Все отзывы приветствуются по адресу [email protected].