discord.py 如何检查用户是不是在服务器上?

Posted

技术标签:

【中文标题】discord.py 如何检查用户是不是在服务器上?【英文标题】: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 【参考方案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)

【讨论】:

以上是关于discord.py 如何检查用户是不是在服务器上?的主要内容,如果未能解决你的问题,请参考以下文章

检查用户是不是在语音频道 discord.py

Discord.py, MongoDB 检查用户是不是已经在

我的 discord.py 机器人有啥方法可以检查用户是不是具有使用命令的特定权限?

Discord.py:检查用户是不是具有列表中的角色 ID 不起作用

Discord.py - 检查用户是不是具有执行命令的特定角色

如何查看特定用户在语音频道上花费的时间?[Discord.py]