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

时间:2020-12-23 17:46:10

标签: python discord discord.py discord.py-rewrite

我正在尝试让我的机器人检查成员是否在服务器上。 我问这个只是因为我试过 this answer 并且它总是返回 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,机器人会检查用户是否在服务器上。

预先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

它返回 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')