【问题标题】:Discord.js V13 dont know how to check if a user ID is in the current guildDiscord.js V13 不知道如何检查用户 ID 是否在当前公会中
【发布时间】:2021-10-28 02:15:05
【问题描述】:

我一直在尝试检查当前公会中是否存在某个用户ID,

我一直在查看无数堆栈溢出问题和文档,希望我能找到答案,但我尝试的任何方法都没有实际效果。

我使用 Discord.js V13 和最新的 node.js 版本

const server = client.guilds.fetch( message.guild.id );
if ( !server.member(args[0]) ) return commandFailed('a user with this ID does not exist');
// args[0] contains the userID

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: discord.js


    【解决方案1】:

    首先fetch返回一个promise,你必须处理这个promise。但是,您不需要获取服务器,因为服务器已经可以通过message.guild 访问。

    第二Guild#member()已被弃用,尝试直接获取成员并检查成员是否返回。

    我将在此示例中使用 Async/Await,请确保您在 Async 函数中。

    // const server = await client.guilds.fetch(message.guild.id); is not needed
    
    const server = message.guild;
    
    const member = await server.members.fetch(args[0]);
    
    if (!member) return commandFailed('a user with this ID does not exist');
    

    【讨论】:

    • 谢谢你的工作。但现在我遇到的问题是这段代码memberTarget = message.guild.members.cache.get( args[0] ); 返回未定义,这很奇怪,因为这与获取提到的用户 ID 完美配合
    • .get() 检查缓存,如果您尝试访问的内容未缓存,则返回 undefined,最好始终使用 fetch() 而不要依赖缓存.每当提到成员时,他们都会立即被缓存,这就是为什么您可以在他们身上使用get()
    • 当我将 get() 更改为 fetch() 时,我收到此错误 TypeError: message.guild.members.cache.fetch is not a function。这有什么原因吗?
    • 最后一个问题。有没有办法在没有得到承诺的情况下获取数据?我不太擅长执行承诺,因为我不知道它是如何工作的......
    • 不,它是通过 API 调用检索到的数据。如果你想完全学习 Discord.JS,你需要掌握处理 Promise 的窍门。它们可能令人生畏,但学习、观看一两个教程,您就会掌握窍门
    【解决方案2】:

    看看 this 线程,它准确地解释了你想要什么:

    let guild = client.guilds.get('guild ID here'),
      USER_ID = '123123123';
    
    if (guild.member(USER_ID)) {
      // there is a GuildMember with that ID
    }
    

    【讨论】:

    • 我已经尝试过该线程并返回此错误。 TypeError:client.guilds.get 不是函数。可能是因为该线程来自 2018 年
    猜你喜欢
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 2019-09-21
    • 1970-01-01
    • 2021-07-20
    • 2021-11-01
    • 2020-03-21
    相关资源
    最近更新 更多