Discord.py 成员角色检查命令

时间:2021-01-30 12:38:45

标签: python discord.py

所以我尝试编写一个命令来输出没有特定角色的成员,但我遇到了一些错误。

代码

@client.command()
@commands.has_permissions(ban_members=True)
async def check(ctx):
    guild = ctx.guild
    for member in guild.members:
        if discord.utils.get(guild.roles, name='Free Customers') not in member.roles:
            for guild.members in range(10):
                await ctx.send(guild.members)

和错误

  File "C:\Users\Archie Baloch\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\ext\commands\core.py", line 864, in invoke
    await injected(*ctx.args, **ctx.kwargs)
  File "C:\Users\Archie Baloch\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\ext\commands\core.py", line 94, in wrapped
    raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: can't set attribute

希望我能在这里得到一些帮助:)

1 个答案:

答案 0 :(得分:0)

您程序中的问题出在 for 循环中,您执行 for guild.members in range(10):,尝试将 guild.members 值设置为 0 作为循环的一部分,然后执行 await ctx.send(guild.members) 将是 0 ,然后将其设置为 1 并发送 1 等,直到达到 9。设置 ctx.guild.members 已被阻止,因为它不是您应该更改的内容

我想这不是你想要做的,老实说我无法弄清楚你想要做什么。

说清楚:

for x in range(10):
    await ctx.send(str(x))

会发送:

0
1
2
3
4
5
6
7
8
9

这显然不是您希望程序中的循环执行的操作