Discord.py 静音命令通道权限
Discord.py Mute Command Channel Permissions
我有一个 >>setup mute
命令,它创建了一个静音角色,我需要它为该角色的每个频道创建频道权限,但它只为我 运行 的频道设置权限>>setup mute
中,它为@everyone 角色而不是 Muted 角色设置频道权限。有人可以帮忙吗?
这是我的代码
elif command.lower() == 'mute':
role = discord.utils.get(ctx.guild.roles, name='Muted')
if role in ctx.guild.roles:
await ctx.send('Already Setup')
else:
perms = discord.Permissions(send_messages=False, read_messages=True)
role = await ctx.guild.create_role(name='Muted', permissions=perms)
muted = discord.utils.get(ctx.guild.roles, name='Muted')
for muted in ctx.guild.roles:
await ctx.channel.set_permissions(muted, send_messages=False, read_messages=True, read_message_history=True)
await ctx.send('Muted Role Created')
它不起作用的原因。是你迭代每个角色并使用相同的渠道。然后设置权限将服务器中所有角色的人静音,使用相同的频道。这导致每个角色在单个频道中被静音:
muted = discord.utils.get(ctx.guild.roles, name='Muted')
for muted in ctx.guild.roles:
await ctx.channel.set_permissions(muted, send_messages=False, read_messages=True, read_message_history=True)
另一个问题是变量 muted 被 for 循环创建的变量 muted 遮蔽了。由于这种阴影,不会使用第一行。因此,您获得的静音角色根本没有被使用。
下次你需要做的是select一个角色。但是然后遍历公会的每个频道而不是服务器的角色(然后在所有频道中应用该角色的权限。):
for channel in ctx.guild.channels:
channel.set_permissions(muted, send_messages=False, read_messages=True, read_message_history=True)
我有一个 >>setup mute
命令,它创建了一个静音角色,我需要它为该角色的每个频道创建频道权限,但它只为我 运行 的频道设置权限>>setup mute
中,它为@everyone 角色而不是 Muted 角色设置频道权限。有人可以帮忙吗?
这是我的代码
elif command.lower() == 'mute':
role = discord.utils.get(ctx.guild.roles, name='Muted')
if role in ctx.guild.roles:
await ctx.send('Already Setup')
else:
perms = discord.Permissions(send_messages=False, read_messages=True)
role = await ctx.guild.create_role(name='Muted', permissions=perms)
muted = discord.utils.get(ctx.guild.roles, name='Muted')
for muted in ctx.guild.roles:
await ctx.channel.set_permissions(muted, send_messages=False, read_messages=True, read_message_history=True)
await ctx.send('Muted Role Created')
它不起作用的原因。是你迭代每个角色并使用相同的渠道。然后设置权限将服务器中所有角色的人静音,使用相同的频道。这导致每个角色在单个频道中被静音:
muted = discord.utils.get(ctx.guild.roles, name='Muted')
for muted in ctx.guild.roles:
await ctx.channel.set_permissions(muted, send_messages=False, read_messages=True, read_message_history=True)
另一个问题是变量 muted 被 for 循环创建的变量 muted 遮蔽了。由于这种阴影,不会使用第一行。因此,您获得的静音角色根本没有被使用。
下次你需要做的是select一个角色。但是然后遍历公会的每个频道而不是服务器的角色(然后在所有频道中应用该角色的权限。):
for channel in ctx.guild.channels:
channel.set_permissions(muted, send_messages=False, read_messages=True, read_message_history=True)