Discord.py,如何删除角色?
Discord.py, how do I delete a role?
我已经尝试和研究了很多次,但仍然找不到。我想创建一个删除服务器中选定角色的命令。这是我想出的(目前不关心权限):
@bot.command(pass_context=True)
async def delrole(ctx, role: discord.Role):
await bot.delete_role(role)
await bot.say("The role {} has been deleted!".format(role.name))
如果你能帮忙,那就太棒了。我使用了角色:discord.Role and delete_role()。感谢您阅读。如果您有解决方案,请随时发表评论。
注意: 此 post 适用于旧版本的 discord.py
,将不再有效。如果您正在寻找 discord.py
的重写 (v1) 版本的等效解决方案,您可以使用以下代码:
@bot.command(pass_context=True)
async def delrole(ctx, *, role_name):
role = discord.utils.get(ctx.message.guild.roles, name=role_name)
if role:
try:
await role.delete()
await ctx.send("The role {} has been deleted!".format(role.name))
except discord.Forbidden:
await ctx.send("Missing Permissions to delete this role!")
else:
await ctx.send("The role doesn't exist!")
您可以这样做以避免只能删除可提及的角色
@bot.command(pass_context=True)
async def delrole(ctx, *,role_name):
role = discord.utils.get(ctx.message.server.roles, name=role_name)
if role:
try:
await bot.delete_role(ctx.message.server, role)
await bot.say("The role {} has been deleted!".format(role.name))
except discord.Forbidden:
await bot.say("Missing Permissions to delete this role!")
else:
await bot.say("The role doesn't exist!")
您在哪里 !delrole name_of_role
并使用 discord.utils.get
从服务器上的角色列表中按名称查找角色。
然后,如果找到它,您可以使用带有 2 个参数的 bot.delete_role
删除它,您要从中删除角色的服务器和角色本身
您所缺少的只是 delete_role
的 server
参数(不需要,因为每个 Role
都知道它来自 Server
)
@bot.command(pass_context=True)
async def delrole(ctx, role: discord.Role):
await bot.delete_role(role.server, role)
await bot.say("The role {} has been deleted!".format(role.name))
您使用 converters
已经走在正确的轨道上
以上解决方案将行不通 server
必须 guild
实际删除角色会容易得多。
@bot.command(pass_context=True)
async def delrole(ctx, *, role_name):
role = discord.utils.get(ctx.message.guild.roles, name=f"{role_name}")
await role.delete()
await ctx.send(f"[{role_name}] Has been deleted!")
此解决方案自 2021 年 8 月 28 日起有效。
我已经尝试和研究了很多次,但仍然找不到。我想创建一个删除服务器中选定角色的命令。这是我想出的(目前不关心权限):
@bot.command(pass_context=True)
async def delrole(ctx, role: discord.Role):
await bot.delete_role(role)
await bot.say("The role {} has been deleted!".format(role.name))
如果你能帮忙,那就太棒了。我使用了角色:discord.Role and delete_role()。感谢您阅读。如果您有解决方案,请随时发表评论。
注意: 此 post 适用于旧版本的 discord.py
,将不再有效。如果您正在寻找 discord.py
的重写 (v1) 版本的等效解决方案,您可以使用以下代码:
@bot.command(pass_context=True)
async def delrole(ctx, *, role_name):
role = discord.utils.get(ctx.message.guild.roles, name=role_name)
if role:
try:
await role.delete()
await ctx.send("The role {} has been deleted!".format(role.name))
except discord.Forbidden:
await ctx.send("Missing Permissions to delete this role!")
else:
await ctx.send("The role doesn't exist!")
您可以这样做以避免只能删除可提及的角色
@bot.command(pass_context=True)
async def delrole(ctx, *,role_name):
role = discord.utils.get(ctx.message.server.roles, name=role_name)
if role:
try:
await bot.delete_role(ctx.message.server, role)
await bot.say("The role {} has been deleted!".format(role.name))
except discord.Forbidden:
await bot.say("Missing Permissions to delete this role!")
else:
await bot.say("The role doesn't exist!")
您在哪里 !delrole name_of_role
并使用 discord.utils.get
从服务器上的角色列表中按名称查找角色。
然后,如果找到它,您可以使用带有 2 个参数的 bot.delete_role
删除它,您要从中删除角色的服务器和角色本身
您所缺少的只是 delete_role
的 server
参数(不需要,因为每个 Role
都知道它来自 Server
)
@bot.command(pass_context=True)
async def delrole(ctx, role: discord.Role):
await bot.delete_role(role.server, role)
await bot.say("The role {} has been deleted!".format(role.name))
您使用 converters
已经走在正确的轨道上以上解决方案将行不通 server
必须 guild
实际删除角色会容易得多。
@bot.command(pass_context=True)
async def delrole(ctx, *, role_name):
role = discord.utils.get(ctx.message.guild.roles, name=f"{role_name}")
await role.delete()
await ctx.send(f"[{role_name}] Has been deleted!")
此解决方案自 2021 年 8 月 28 日起有效。