python - Discord.py 赋予角色
问题描述
@client.command()
@commands.has_permissions(manage_messages=True)
async def mute(ctx, member: discord.Member):
try:
guild = ctx.guild
rolecreate = "MutedByCloudy"
await guild.create_role(rolecreate, colour=discord.Colour.red())
if member.guild_permissions > ctx.author.guild_permissions or member.guild_permissions.administrator:
await ctx.send("I can't mute that user. User probably has more perms than me or you")
else:
if member.id == 739424025205538817:
await ctx.send("Nice try. I can't mute myself.")
else:
role = get(member.guild.roles, name='MutedByCloudy')
await member.add_roles(role)
embed=discord.Embed(title="User Muted! :white_check_mark:", description=f"**{member}** was muted by **{ctx.message.author}**!", color=0x2f3136)
await ctx.send(embed=embed)
except:
await ctx.send(":x: Something happened. I don't know what.")
所以我有这个创建角色的命令,并将其提供给用户。但是它不会创建角色并且不会抛出任何错误,你们能帮忙吗?给予角色部分有效,但创造角色无效。
解决方案
那么你没有创建角色,你可以尝试这样的事情:
role = discord.utils.get(ctx.guild.roles, name='MutedByCloudy')
if not role:
role = await ctx.guild.create_role(name='MutedByCloudy', reason='Role for muting, auto generated by Cloudy')
for channel in ctx.guild.channels:
await channel.set_permissions(role, send_messages=False,
read_message_history=False,
read_messages=False)
您还可以添加 try 和 except discord.Forbidden 来处理权限错误
推荐阅读
- java - 我不能将一个 ArrayList 与一个片段中的捆绑包放入另一个片段中
- javascript - 加载 API 时出现 SyntaxError
- r - 修改 R 中的省略号
- android - Retrofit2/GSON 无法转换为对象
- reactjs - 如何在一个 onClick 事件中调用 React 钩子函数并将数据传递到 Redux 存储?
- c# - 如何显示其余交易类型的总和
- crystal-reports - 我正在尝试在 Windows Server 2016 上部署 Web 应用程序;它给了我水晶报表的错误(13.0.21)
- django - 数据迁移在导入时触发查询
- selenium - Edge浏览器中的无效选择器异常,而在chrome浏览器中可以找到相同的元素而没有任何异常
- java - Android 房间日期