discord.py:如果ctx.author=guild.roles

discord.py:如果ctx.author=guild.roles,discord.py,Discord.py,我正在创建一个命令,允许特定用户阻止所有人。 我不知道如何编写if,以确保如果命令的作者是该角色的作者,他可以阅读它(我这样做是因为我想对某些角色施加不同的限制)。 同时,我希望给执行命令的用户一个可以写入的用户权限(当需要进行重要的即时演讲时,此命令对我的服务器非常有用) 我怎么办 Error: Traceback (most recent call last): File "C:\Users\PC GIUSEPPE\PycharmProjects\untitled\venv\l

我正在创建一个命令,允许特定用户阻止所有人。 我不知道如何编写if,以确保如果命令的作者是该角色的作者,他可以阅读它(我这样做是因为我想对某些角色施加不同的限制)。 同时,我希望给执行命令的用户一个可以写入的用户权限(当需要进行重要的即时演讲时,此命令对我的服务器非常有用) 我怎么办

Error:
Traceback (most recent call last):
  File "C:\Users\PC GIUSEPPE\PycharmProjects\untitled\venv\lib\site-packages\discord\ext\commands\bot.py", line 892, in invoke
    await ctx.command.invoke(ctx)
  File "C:\Users\PC GIUSEPPE\PycharmProjects\untitled\venv\lib\site-packages\discord\ext\commands\core.py", line 797, in invoke
    await injected(*ctx.args, **ctx.kwargs)
  File "C:\Users\PC GIUSEPPE\PycharmProjects\untitled\venv\lib\site-packages\discord\ext\commands\core.py", line 92, in wrapped
    raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: NameError: name 'Guild' is not defined
代码:


首先,您没有定义
Guild
,如果您想让服务器调用命令,您需要将
Guild.roles
替换为
ctx.Guild.roles

然后,您获取
triumvirato
角色的方式是错误的,您可以通过以下方式通过id或名称获取:

#按id
triumvirato=discord.utils.get(ctx.guild.roles,id=role\u id)
#名字
triumvirato=discord.utils.get(ctx.guild.roles,name=“triumvirato”)
最后,
ctx.author
是一个对象,而不是一个对象,因此您的if语句永远不会是
True
。要使其正常工作,您必须替换此行:

如果ctx.author==Guild.roles(name='Triumvirato'):
为此:

如果triumvirato在ctx.author.roles中:

首先,您没有定义
Guild
,如果您想让服务器调用命令,您需要将
Guild.roles
替换为
ctx.Guild.roles

然后,您获取
triumvirato
角色的方式是错误的,您可以通过以下方式通过id或名称获取:

#按id
triumvirato=discord.utils.get(ctx.guild.roles,id=role\u id)
#名字
triumvirato=discord.utils.get(ctx.guild.roles,name=“triumvirato”)
最后,
ctx.author
是一个对象,而不是一个对象,因此您的if语句永远不会是
True
。要使其正常工作,您必须替换此行:

如果ctx.author==Guild.roles(name='Triumvirato'):
为此:

如果triumvirato在ctx.author.roles中:

请提供完整的回溯日志。虽然我猜你还没有定义什么是公会。它应该是从什么地方进口的吗?它是一个类?文件“C:\Users\PC GIUSEPPE\PycharmProjects\untitled\venv\lib\site packages\discord\ext\commands\bot.py”,第892行,在调用等待ctx.command.invoke(ctx)文件“C:\Users\PC GIUSEPPE\PycharmProjects\untitled\venv\lib\site packages\discord\ext\commands\core.py”,第797行,在调用等待注入(*.ctx.args,**ctx.kwargs)文件中“C:\Users\PC-GIUSEPPE\PycharmProjects\untitled\venv\lib\site-packages\discord\ext\commands\core.py”,包装的raise CommandInvokeError(exc)中的第92行从Exceph可能会将回溯添加到原始帖子?很难在评论中阅读回溯。天哪,真的……对不起,我早上6点了,我有点累了。你需要定义帮会。请提供完整的回溯日志。虽然我猜你还没有定义帮会是什么。它应该从某处导入吗?它是一个类吗?调用等待ctx.command.invoke(ctx)文件“C:\Users\PC-GIUSEPPE\PycharmProjects\untitled\venv\lib\site packages\discord\ext\commands\bot.py”,第892行,“C:\Users\PC-GIUSEPPE\PycharmProjects\untitled\venv\lib\site packages\discord\ext\commands\core.py”,第797行,调用等待注入(*ctx.args,**ctx.kwargs)文件”C:\Users\PC GIUSEPPE\PycharmProjects\untitled\venv\lib\site packages\discord\ext\commands\core.py”,第92行,在exc的raise CommandInvokeError(exc)包装中也许可以将回溯添加到原始帖子中?很难在评论中阅读回溯。天哪,真的……对不起,我早上6点累了你需要定义帮会
@client.command(aleases=["Templock","TEMPLOCK","tl","Tl","TL"])
@commands.has_any_role('Moderatori', 'Triumvirato', 'Co-Triumvirato')
async def templock(ctx, seconds = 0, *,arg="Motivo non specificato"):
    channel_ability_mention = ctx.channel.mention
    channel_ability_name = ctx.channel.name
    embed = discord.Embed(
        color=0xa61022
    )
    if not seconds:
        embed.set_author(
            name="Per favore specifica il tempo!",
            icon_url="https://cdn.discordapp.com/attachments/640563710104043530/730639329453670420/DuscePeppe_FRIULI.png"
        )
        await ctx.send(embed=embed, delete_after=10.0)
        return
    if ctx.author == Guild.roles(name='Triumvirato'):
        if seconds > 600:
            embed.set_author(
                name="Hai superato il limite stabilito per i Triumviri!",
                icon_url="https://cdn.discordapp.com/attachments/640563710104043530/730639329453670420/DuscePeppe_FRIULI.png"
            )
            await ctx.send(embed=embed, delete_after=10.0)
            return
        embed = discord.Embed(
            color=0x03c03c
        )