【问题标题】:In discord.py how do I check if a member is on the server?在 discord.py 中,我如何检查成员是否在服务器上?
【发布时间】:2021-04-02 08:03:19
【问题描述】:

我正在尝试让我的机器人检查成员是否在服务器上。 我只是问这个,因为我尝试了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,然后机器人会检查用户是否在服务器上。

提前感谢您的帮助!

【问题讨论】:

  • 您是否启用了intents.members
  • 是的,我已启用所有意图

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


【解决方案1】:

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

【讨论】:

  • 首先,非常感谢您的帮助。当用户在服务器中时,该命令有效。但是,即使我确实使用了 discord.User,它也会引发错误 UserNotFound。
  • 我很确定您正在尝试获取一个不在该机器人所在的任何公会中的用户,您可以尝试将其键入一个 int,并使用它来获取成员。我将编辑我的答案。
猜你喜欢
  • 2020-09-12
  • 1970-01-01
  • 1970-01-01
  • 2020-12-03
  • 2022-01-16
  • 2021-12-12
  • 2021-09-03
  • 2011-07-16
  • 2022-01-05
相关资源
最近更新 更多