所以我尝试编写一个命令来输出没有特定角色的成员,但我遇到了一些错误。
代码
@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
希望我能在这里得到一些帮助:)
答案 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
这显然不是您希望程序中的循环执行的操作