Как вместо бана выдать роль (бана)
У меня создан ивент (я только начинающий и делал по гайду с ютуба бота модератора) В котором при достижении 7 варнов из файл users.json выдается бан на сервере по причине (которую я укажу)
if data[str(message.author.id)]['WARNS'] >= 7:
await message.author.ban(reason="Вы превысили допустимое кол-во нарушений!")
Так вот, мне бы хотелось, чтобы выдавался не бан, а конкретная роль
@bot.event
async def on_message(message):
WARN = BADWORDS + LINKS
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()
with open('users.json', 'w') as file:
data[str(message.author.id)]['WARNS'] += 1
json.dump(data, file, indent=4)
file.close()
emb = discord.Embed(
title="Нарушение",
description=f"*Ранее у нарутеля было уже {data[str(message.author.id)]['WARNS'] - 1} нарушений, после 7 он будет забанен!*",
timestamp=message.created_at
)
emb.add_field(name="Канал:", value=message.channel.mention, inline=True)
emb.add_field(name="Нарушитель:", value=message.author.mention, inline=True)
emb.add_field(name="Тип нарушения:", value="Запрещенные слова/Ссылки", inline=True)
await get(message.guild.text_channels, id=985065582825189377).send(embed=emb)
if data[str(message.author.id)]['WARNS'] >= 7:
await message.author.ban(reason="Вы превысили допустимое кол-во нарушений!")
if message.content.isupper():
with open('users.json', 'r') as file:
data = json.load(file)
file.close()
with open('users.json', 'w') as file:
data[str(message.author.id)]["CAPS"] += 1
json.dump(data, file, indent=4)
if data[str(message.author.id)]["CAPS"] >= 3:
await message.delete()
with open ('users.json', 'w') as file:
data[str(message.author.id)]["CAPS"] = 0
data[str(message.author.id)]["WARNS"] += 1
json.dump(data, file, indent=4)
file.close()
emb = discord.Embed(
title="Нарушение",
description=f"*Ранее у нарутеля было уже {data[str(message.author.id)]['WARNS'] - 1} нарушений, после 7 он будет забанен!*",
timestamp=message.created_at
)
emb.add_field(name="Канал:", value=message.channel.mention, inline=True)
emb.add_field(name="Нарушитель:", value=message.author.mention, inline=True)
emb.add_field(name="Тип нарушения:", value="КАПС", inline=True)
await get(message.guild.text_channels, id=985065582825189377).send(embed=emb)
if data[str(message.author.id)]['WARNS'] >= 7:
await message.author.ban(reason="Вы превысили допустимое кол-во нарушений!")
await bot.process_commands(message)
Ответы (1 шт):
Автор решения: Corrygan
→ Ссылка
Получите объект роли
role = discord.utils.get(ctx.guild.roles, id=ид роли)
Далее выдайте её соответствующему пользователю и отправьте сообщение с уведомлением о блокировке
member.add_roles(role)
embed = discord.Embed(
title='Блокировка',
color=0xFF0033
)
embed.add_field(name='Причина', value=f'{member.mention}'
embed.add_field(name='Причина:', value=f'{reason}')
await ctx.send(embed=embed)