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, MongoDB 检查用户是不是已经在
我的 discord.py 机器人有啥方法可以检查用户是不是具有使用命令的特定权限?
Discord.py:检查用户是不是具有列表中的角色 ID 不起作用