我在获取cog中的服务器成员时遇到问题。 (fetch_members())
import discord
from discord.ext import commands
class Guild(commands.Cog):
def __init__(self, client):
self.client = client
@commands.Cog.listener()
async def on_ready(self):
print(discord.Guild.fetch_members(self))
def setup(client):
client.add_cog(Guild(client))
此客户端本身就是漫游器。我想获取服务器上的成员列表,但出现错误
AttributeError: 'Guild' object has no attribute '_state'
我不知道如何以及在何处获得此状态及其状态。在文档中找不到。我对python非常陌生,对它的类也不了解。
即使我尝试像文档中那样在主要bot文件中执行此操作,它仍然无法正常工作,所以我想起来这必须在cog文件中。
也许您知道另一种方法。欢迎任何帮助!
答案 0 :(得分:0)
根据document,您应该直接将此方法用于公会实例。我这样重写您的代码:
class Guild(commands.Cog):
def __init__(self, client):
self.client = client
@commands.Cog.listener()
async def on_ready(self):
for guild in self.client.guilds:
print(f'In {guild.name}')
async for member in guild.fetch_members(limit=5):
print(member.name)
def setup(client):
client.add_cog(Guild(client))
由于您的机器人可能会加入许多行会,因此client.guilds
是一个列表,您需要使用for循环进行迭代。 discord.Guild
是一个类,client.guilds
中的对象是此类的实例,大多数行为只能在该实例上使用。