Как сделать так, чтобы дискорд бот не трогал права администратора, модератора и не привлекал их к нарушению?
Написал бота на python, который удаляет ссылки и оскорбления от участников сервера. Как сделать так, чтобы этот бот не удалял ссылки от администраторов и модераторов? То есть, ограничить ему круг.
Алан Гибизов,
for i in range(0, len(WARN)):
if WARN[i] in message.content.lower():
await message.delete()
with open('users.json', 'r') as file:
data = json.load(file)
file.close()
Думал что-то типа этого:
@bot.command(pass_context=True)
@commands.has_role("Admin")
async def check(ctx, user: discord.Member):
role = discord.utils.find(lambda r: r.name == 'указываю роль, ctx.message.server.roles)
Igor Pecherskih, код во-первых надо оборачивать тегом code для корректного отображения. Во-вторых, рекомендую переместить содержимое комментария в тело вопроса, добавить подробностей - что конкретно ожидалось и что в итоге получилось. Если есть текст ошибки - тоже добавить.
Алан Гибизов, Хочу реализовать такой пример: если я или модератор дискорд-сервера кидает ссылку в текстовый канал, то мой написанный бот игнорировал бы это. А другому иному пользователю выдавал бы нарушение.
То есть, надо как-то сделать проверку какая у человека сейчас стоит роль.
В коде, который удаляет сообщение, добавьте проверку какая роль у пользователя, чье сообщение в данный момент удаляется. Если это админ/модератор - игнорируем и не удаляем
Igor Pecherskih, читай документацию. Достаточно проверить, есть ли у целевого пользователя некоторый минимальный набор прав модера - и тогда будет непринципиально, как роль модератора называется да и есть ли она вообще.
Igor Pecherskih, ну так думай, что тут скажешь. Я уже написал, что нужно сделать - выбрать набор прав, которыми должен обладать модератор - скажем, управление сообщениями и пользователями - и проверить их наличие у автора сообщения. Если права есть, не трогаем сообщение.