discord.py 如何检查服务器上是否有成员?

In discord.py how do I check if a member is on the server?

我正在尝试让我的机器人检查服务器上是否有成员。 我问这个只是因为我试过 this answer 并且它总是 returns None,无论如何。

到目前为止,这是我的代码:

@bot.command()
async def membercheck(ctx, member:discord.Member):
    guild = bot.get_guild(my_server_id)
    if guild.get_member(member) is not None:
        await ctx.send("he on server")
    else:
        await ctx.send("he not on server")

理想情况下,我的代码应该可以工作,以便您输入用户 ID,并且机器人会检查用户是否在服务器上。

在此先感谢您的帮助!

它返回 None 总是因为您将 discord.Member 对象传递给 Guild.get_member 而不是 int。

@bot.command()
async def membercheck(ctx, member: discord.User):
    guild = bot.get_guild(some_id)

    member = guild.get_member(member.id)

    if member is None:
        await ctx.send('Member is not in the server')
    else:
        await ctx.send('Member is in the server')

此外,如果您使用 UserConverter 会更好,因为 MemberConverter 在无法获取成员

时会引发 MemberNotFound 错误

编辑

@bot.command()
async def membercheck(ctx, id: int):
    guild = bot.get_guild(some_id)

    member = guild.get_member(id)

    if member is None:
        await ctx.send('Member is not in the server')
    else:
        await ctx.send('Member is in the server')