async def interest(self):
channel = self.client.get_channel(779743465252192297)
em = discord.Embed(title ="Interest By time : ",color = discord.Colour.random())
total = 0
for members in discord.Guild.members:
try:
em.add_field(name = "Member Name: ",value = members.name)
for keys,values in role.items():
if keys in members.roles.name:
em.add_field(name=f"{keys} : " ,value = values)
total += values
em.add_field(name = "Total : " ,value = total )
em.set_footer(text = "Type `.role_shop` to See how you can spend Money",icon_url=channel.guild.owner.avatar_url)
await members.send(embed = em)
except:
pass
这是我的代码,我想遍历所有成员,然后遍历他们的角色,并向 var total 中添加一个值。
这是我的角色字典:role = {"Coder":100,"Gamer":100,"Anime Weeb":100,"Superior Coder":150,"Mods":100,"Partners":50,"Owner":999999}
我收到的错误是: File "d:\bot1\fold\onevent.py", line 33, in interest for members in discord.Guild.members: TypeError: 'property' object is not iterable
请提供一种我可以执行任务的方法
答案 0 :(得分:0)
您不能直接使用 discord.Guild.members
。您需要一个 discord.Guild
对象的实例。您可以通过使用 client.get_guild(id)
来获得它。此外,member.roles
返回一个列表。所以你不能使用 member.roles.name
。您也必须遍历角色,或者您可以在一行 for 循环中完成,但您必须稍微更改代码以获得更优化的代码。
async def interest(self):
roles = {"Coder": 100, "Gamer": 100, "Anime Weeb": 100, "Superior Coder": 150, "Mods": 100, "Partners": 50,
"Owner": 999999}
channel = self.client.get_channel(779743465252192297)
guild = self.client.get_guild(<guild id>)
em = discord.Embed(title="Interest By time : ", color=discord.Colour.random())
total = 0
for members in guild.members:
try:
em.add_field(name="Member Name: ", value=members.name)
for role in [role for role in members.roles if role.name in roles.keys()]:
em.add_field(name=f"{role} : ", value=roles[role])
total += roles[role]
em.add_field(name="Total : ", value=total)
em.set_footer(text="Type `.role_shop` to See how you can spend Money",
icon_url=channel.guild.owner.avatar_url)
await members.send(embed=em)
except:
pass