Как создать команду unban с помощью Discord py и возможные проблемы

Администрировать серверы в Discord без помощи ботов не слишком удобно: приходится вручную блокировать нарушителей порядка, следить за добавленными в чат сообщениями и помнить, в какой момент снимать выданные ограничения. Команды «ban»/«unban», добавляемые на сервер с помощью Discord.py, не избавят от необходимости следить за активностью пользователей, но разрешат всего за пару секунд наказать тех, кто нарушает правила.

Как создать команду unban с помощью Discord py и возможные проблемы

Как создать команду «ban»/«unban» в discord.py

Если бот уже подготовлен к работе и добавлен на сервер в Discord (подробные инструкции, связанные с инсталляцией и авторизацией представлены в официальной документации), то следующий этап – подготовка кода Python, необходимого для взаимодействия с потенциальными нарушителями.

Как создать команду unban с помощью Discord py и возможные проблемы

Работают команды на основе библиотеки Discord.py, а потому и начинать предстоит с импорта уже заготовленных скриптов и commands в построчном режиме:

import discord

Следом добавляется источник для импорта:

from discord.ext import commands

Заданная основа для кода открывает простор для творчества и экономит время. Дальше предстоит подготовить код следующего формата:

@client.command()

@commands.has_permissions(ban_members=True)

После ввести конструкцию через async

async def ban(ctx, user: discord.Member, *, reason=None):

Функция разделяется на несколько строк с сохранением синтаксиса.

await user.ban(reason=reason)

await ctx.send(f”{user} пользователь успешно заблокирован”)

Важно помнить о структуре: на следующей строчке после функции async для await понадобится отступ в 4 пробела.

Как создать команду unban с помощью Discord py и возможные проблемы

Снимается блокировка с помощью дополнительного кода. Основа уже знакомая.

@client.command()

Далее – уже знакомый набор дополнительных команд (важно сохранить структуру)

async def unban(ctx, *, member):

Обязательно 4 пробела впереди!

banned_users = await ctx.guild.bans()

И следом сразу строка для отсеивания лишней аудитории.

member_name, member_discriminator = member.split(‘#’)

После задается For.

for ban_entry in banned_users:

Обязательно 4 пробела впереди!

user = ban_entry.user

И условие через if.

if (user.name, user.discriminator) == (member_name, member_discriminator):

await ctx.guild.unban(user)

await ctx.send(f”{user} пользователь успешно разблокирован”)

return

Как и в случае с командой ban отступ важен: иначе Python не разберется, когда начинается и заканчивается функция. Дополнительные подробности на скриншоте ниже.

Как создать команду unban с помощью Discord py и возможные проблемы

После подготовки кода в чате сервера станут доступны команды !ban и !unban (префикс – восклицательный знак), сочетаемые с никнеймом нарушителя (!ban @nickname).

Почему команда может не работать

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

Тот же Visual Code способен сразу предупредить, в каком месте коду требуется доработка.

Оцените статью
GadgetFair
Добавить комментарий