获取所有成员 discord.py
Get all members discord.py
我有一个问题,我需要从机器人在线的所有服务器中获取所有成员的列表(我正在使用 discord.py 重写),现在我已经截取了这段代码:
@bot.command()
async def members(ctx):
for guild in bot.guilds:
for member in guild.members:
print(member)
程序输出了 3 次机器人名称,因为机器人在 3 个服务器上。
谢谢!
听起来像是 Intents
问题。您需要在创建 commands.Bot
实例时启用 members
意图,并将您的意图传递给它。
intents = discord.Intents.default()
intents.members = True
client = commands.Bot(intents=intents, prefix_and_other_things_go_here)
您还必须在开发人员门户中启用它。有关方式和地点的更多信息:https://discordpy.readthedocs.io/en/latest/intents.html
您的代码是正确的。但是你需要 Members Intent
您必须启用它 here。 Select 你想要它的应用程序 -> Select Bot
-> 服务器成员意图然后确保它旁边显示蓝色。然后单击保存更改。由于您正在开发您的机器人,您可能还想启用 Presence 意图以节省您以后的时间。
然后您必须像这样编辑机器人变量:
intents = discord.Intents()
intents.all()
bot = commands.Bot(command_prefix=".", intents=intents)
这是一个单行解决方案
@client.command()
async def getmember(ctx,member:str):
print([i.name+'#'+i.discriminator for i in ctx.message.guild.members if member in i.name+'#'+i.discriminator])
我有一个问题,我需要从机器人在线的所有服务器中获取所有成员的列表(我正在使用 discord.py 重写),现在我已经截取了这段代码:
@bot.command()
async def members(ctx):
for guild in bot.guilds:
for member in guild.members:
print(member)
程序输出了 3 次机器人名称,因为机器人在 3 个服务器上。
谢谢!
听起来像是 Intents
问题。您需要在创建 commands.Bot
实例时启用 members
意图,并将您的意图传递给它。
intents = discord.Intents.default()
intents.members = True
client = commands.Bot(intents=intents, prefix_and_other_things_go_here)
您还必须在开发人员门户中启用它。有关方式和地点的更多信息:https://discordpy.readthedocs.io/en/latest/intents.html
您的代码是正确的。但是你需要 Members Intent
您必须启用它 here。 Select 你想要它的应用程序 -> Select Bot
-> 服务器成员意图然后确保它旁边显示蓝色。然后单击保存更改。由于您正在开发您的机器人,您可能还想启用 Presence 意图以节省您以后的时间。
然后您必须像这样编辑机器人变量:
intents = discord.Intents()
intents.all()
bot = commands.Bot(command_prefix=".", intents=intents)
这是一个单行解决方案
@client.command()
async def getmember(ctx,member:str):
print([i.name+'#'+i.discriminator for i in ctx.message.guild.members if member in i.name+'#'+i.discriminator])