【问题标题】:I'm trying to cast discord.py role on the line我正在尝试在线上扮演 discord.py 角色
【发布时间】:2021-04-27 16:48:35
【问题描述】:

在使用rolver命令时,我希望指定的人被赋予指定的角色(要使用该命令,作者必须具有“İMPARATOR”的角色)但由于某种原因我把它不起作用。我的代码:

@bot.command(pass_context=True)
@commands.has_role("İMPARATOR")
async def rolver(ctx, user: discord.Member, role: discord.Role):
    try:
        await user.add_roles(role)
        await ctx.send(f"{ctx.author.name} tarafından, {user.name} kişisine ***{role.name}*** rolü verildi.")
    except:
        await ctx.channel.send("HATA")

@bot.command(pass_context=True)
@commands.has_role("İMPARATOR")
async def rolsil(ctx, user: discord.Member, role: discord.Role):
    try:
        await user.remove_roles(role)
        await ctx.send(f"{ctx.author.name} tarafından, {user.name} kişisinden ***{role.name}*** rolü silindi.")
    except:
        await ctx.channel.send("HATA") 

我没有使用 try except,我什至得到了:

2021-01-22T14:25:18.721102+00:00 app[worker.1]: 

2021-01-22T14:25:18.721103+00:00 app[worker.1]: The above exception was the direct cause of the following exception:

2021-01-22T14:25:18.721104+00:00 app[worker.1]: 

2021-01-22T14:25:18.721104+00:00 app[worker.1]: Traceback (most recent call last):

2021-01-22T14:25:18.721105+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/discord/ext/commands/bot.py", line 902, in invoke

2021-01-22T14:25:18.721105+00:00 app[worker.1]:     await ctx.command.invoke(ctx)

2021-01-22T14:25:18.721105+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/discord/ext/commands/core.py", line 864, in invoke

2021-01-22T14:25:18.721106+00:00 app[worker.1]:     await injected(*ctx.args, **ctx.kwargs)

2021-01-22T14:25:18.721106+00:00 app[worker.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/discord/ext/commands/core.py", line 94, in wrapped

2021-01-22T14:25:18.721106+00:00 app[worker.1]:     raise CommandInvokeError(exc) from exc

2021-01-22T14:25:18.721115+00:00 app[worker.1]: discord.ext.commands.errors.CommandInvokeError: Command raised an exception: Forbidden: 403 Forbidden (error code: 50013): Missing Permissions

(我用谷歌翻译)

【问题讨论】:

  • 具体发生在什么时候?你在用什么命令?好像是简单的权限错误,bot有manage_roles权限吗?
  • 当我尝试给一个人一个名为 corporal 的角色时,机器人的权限也是

标签: python heroku discord discord.py


【解决方案1】:

这是一个非常正常的错误,它发生是因为您的机器人无法分配比机器人角色具有更高层次结构的角色。要解决此问题,请确保机器人在层次结构中的角色高于您尝试分配的角色,否则在发生这种情况时它总是会引发 403 错误。

没有办法解决这个问题,因为这是预期的行为,但是使用 try except 你可以捕获这个错误,你也可以使用error handler 这样做。

【讨论】:

    猜你喜欢
    • 2021-02-11
    • 2021-05-17
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-06
    • 2020-12-24
    • 1970-01-01
    相关资源
    最近更新 更多