Discord.py 知道用户是不是存在于服务器中

Posted

技术标签:

【中文标题】Discord.py 知道用户是不是存在于服务器中【英文标题】:Discord.py know if user exists in serverDiscord.py 知道用户是否存在于服务器中 【发布时间】:2021-07-24 13:06:11 【问题描述】:

很抱歉打扰大家,我知道这是重复的,但我没有评论的等级,所以我不得不再问一次,我看过其他一些关于这个的帖子,他们都说你手动获取公会 ID并在 on_ready() 中定义它:

@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 #

但是如何在 on_message() 中自动获取公会的 id,我希望我的机器人可以在各种服务器上运行,正如你所理解的那样,这不会真正起作用。

如果您需要更多上下文,它是一个您拥有货币并且可以在用户之间转移它们的机器人,我想检查 message.author 想要转移资金的用户是否真的存在。

提前致谢, 诺埃尔。

【问题讨论】:

【参考方案1】:

on_message(message),你可以通过message.guild获得公会:

@client.event #Maybe you use client or maybe bot, then you would have to change this to whatever of them you have
async def on_message(message):
    guild = message.guild
    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 #

为了能够使用guild.get_member,您必须在bot 下的应用程序中的developer dashboard 中启用成员意图: 在代码顶部定义client,将client = ... 更改为:

intents = discord.Intents.default()
intents.members = True
client = commands.Bot(... whatever you have here, intents=intents) #this line can be different for you!

参考资料:

Message.guild A Primer to Gateway Intents

【讨论】:

我使用@client.event,有什么区别? ? 没什么,只是插入client 而不是bot @noelpuig 好像总是打印None,不管用户在不在服务器,我一直在用id,应该输入什么,id还是名字? 您只需要输入会员的id。 @noelpuig 好吧测试一下我一直在手动输入用户确实存在的代码guild = message.guildprint(guild.get_member(546937413684166676))并输出None

以上是关于Discord.py 知道用户是不是存在于服务器中的主要内容,如果未能解决你的问题,请参考以下文章

Discord.py - 如何检测用户是不是提到/ping 机器人

您能否确定是不是可以使用 discord.py 直接向用户发送消息?

当命令 discord.py 的参数不正确时如何显示消息?

Discord.py 以间隔将 dm 发送给多个特定成员

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

如何检查用户是不是提供了参数 discord.py