【问题标题】:discord.py How to check if user is on server?discord.py 如何检查用户是否在服务器上?
【发布时间】:2020-09-12 03:45:19
【问题描述】:

我需要检查用户是否在服务器上。请帮我

【问题讨论】:

  • 始终将代码、数据和错误消息作为文本而不是图像。
  • on_ready 是一个协程,它在机器人上线时被调用,因此在启动时执行一次。您确定要将它放在那里而不是放在命令中吗?因为它没有写在命令中,所以它缺少服务器和用户上下文。您想“检查”,但尚未解释要检查的方式和时间。您发布的代码只会引发更多问题。
  • @TinNguyen 是的,我确定。我想检查用户是否在服务器上,如果是,那么做一些事情。我想检查机器人是否准备好了,这就是为什么我把它放在 on_ready 函数中。
  • @TinNguyen 我的意思是,我可以获取成员和服务器列表,然后检查成员是否在服务器上?我真的不知道该怎么做:(
  • 请不要在您的问题中添加与您的问题无关的标签。不需要包含 discord.js 和 discord.net

标签: python discord discord.py


【解决方案1】:

您可以使用 discord.Guild.get_member() 按 ID 在公会中搜索成员,如果找到则返回 discord.Member 对象,如果找不到则返回 None

@bot.event
async def on_ready():
    guild = bot.get_guild(ID_OF_GUILD) # find ID by right clicking on server icon and choosing "copy id" at the bottom
    if guild.get_member(ID_OF_MEMBER) is not None: # find ID by right clicking on a user and choosing "copy id" at the bottom
        # the member is in the server, do something #
    else:
        # the member is not in the server, do something #

【讨论】:

    【解决方案2】:

    首先,您需要通过名称或id定义一个公会,然后获取定义的公会上的所有成员
    这是你的代码:

    @bot.event
    async def on_ready():
       guild = await bot.get_guild(ID) #fetch by ID
       guild = discord.utils.get(bot.guilds, name="Foo") # fetch by name
       for i in guild.members:
          print(i)
    

    【讨论】:

      猜你喜欢
      • 2021-04-02
      • 1970-01-01
      • 1970-01-01
      • 2017-05-09
      • 2011-11-12
      • 2021-07-24
      • 2017-06-18
      • 2014-12-12
      • 1970-01-01
      相关资源
      最近更新 更多