Установка роли для мута
Вот у меня есть код мута
#Команда для мута участника
@bot.command()
@commands.has_permissions( manage_roles = True )
async def mute( ctx, member: discord.Member ):
if member.id == ctx.author.id:
await ctx.reply(embed=discord.Embed(title='Ошибка взаимодействия', description="Вы не можете заглушить самого себя!", color =0xff0000))
return
if member.top_role >= ctx.author.top_role:
await ctx.reply(embed=discord.Embed(title='Ошибка взаимодействия', description="Вы не можете заглушить этого пользователя!", color = 0xff0000))
return
await ctx.channel.purge( limit = 1 )
mute_role = discord.utils.get( ctx.message.guild.roles, name = 'mute')
await member.add_roles( mute_role )
embed = discord.Embed(
color = 0xEC2C2D,
title="Mute",
description=f"Mute user { member.mention }"
)
embed.set_footer( text = ctx.author.name, icon_url = ctx.author.avatar_url )
embed.set_author( name = bot.user.name, icon_url = bot.user.avatar_url )
await ctx.send(embed=embed)
@mute.error
async def ban_error( ctx, error ):
if isinstance (error, commands.MissingRequiredArgument):
author = ctx.message.author
await ctx.reply( embed=discord.Embed( title='Ошибка взаимодействия', description='Правильное использование команды:\n`>mute (@участник) [причина]`', color = 0xff0000 ))
if isinstance(error, commands.MissingPermissions):
author = ctx.message.author
await ctx.reply(embed=discord.Embed(title='Ошибка взаимодействия', description='У вас не достаточно прав!', color = 0xff0000))
И я хотел бы сделать так, чтобы если на сервере нету роли "mute" то об этом бот будет писать, по типу: чтобы замутить пользователя, нужно создать роль "mute". Либо же сделать так, чтобы после того как бот присоединиться к серверу эта роль автоматически создалася
Ответы (2 шт):
Автор решения: RAINGM
→ Ссылка
mute_role = discord.utils.get(ctx.guild.roles, id=mute_roleid)
if mute_roleid == None or mute_role == False:
def check(arg):
if ctx.author.id == arg.user_id:
return str(arg.emoji) == '✅' or str(arg.emoji) == '❌'
embed = discord.Embed(color=self.bot.EMBED_MAIN_COLOR)
warningMessage = await ctx.send(embed=discord.Embed(description=f"{ctx.author.mention} На сервере не настроена роль мута, создать?"))
await warningMessage.add_reaction('✅')
await warningMessage.add_reaction('❌')
payload = await self.bot.wait_for('raw_reaction_add', timeout=60.0, check=check)
if str(payload.emoji) == '✅':
await warningMessage.delete()
permissions = discord.Permissions(change_nickname=True)
mute_role = await ctx.guild.create_role(name='MUTED', permissions=permissions, color=0x808080)
for text_channel in ctx.guild.text_channels:
await text_channel.set_permissions(mute_role, send_messages=False)
await ctx.send(embed=discord.Embed(color=self.bot.EMBED_MAIN_COLOR, description=f'{ctx.author.mention} Новая роль мута успешно создана {mute_role.mention}'))
elif str(payload.emoji) == '❌':
await warningMessage.delete()
return await ctx.send(embed=discord.Embed(description=f"{ctx.author.mention} На сервере не настроена роль мута!"))
Автор решения: aasakuraa
→ Ссылка
async def mute(ctx, member: discord.Member, time: int, reason):
channel = client.get_channel(959183302286274621)
muterole = discord.utils.get(ctx.guild.roles, id = 959209235156189225)
emb = discord.Embed(color=0xad1e8c)
emb.add_field(name="? Muted", value='Пользователь {} был замьючен!'.format(member.mention))
emb.add_field(name="Модератор", value = ctx.message.author.mention, inline = False)
emb.add_field(name="Причина", value = reason, inline = False)
await member.add_roles(muterole)
await channel.send(embed = emb)
await asyncio.sleep(time * 60)
await member.remove_roles(muterole)