【问题标题】:How to access guild and members in client.on('ready') event在 client.on('ready') 事件中从数组中将角色添加到不和谐 ID
【发布时间】:2022-01-18 21:39:39
【问题描述】:
client.on('ready', () => {
    
    arrayID = ['DISCORD_ID'];

    guild.members.fetch(arrayID[0]).then(member => {
        return guild.roles.fetch('ROLE_ID');
      }).then(role => {
        return member.roles.add(role);
      }).catch((err) => {
      });

});

使用该代码我收到错误:guild is not defined 因为我试过了

client.guild.members.fetch(arrayID[0]).then(member => {

但随后我收到错误消息:无法读取未定义的属性(正在读取“成员”)

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案1】:

    问题是你没有定义你的guild 变量,这就是你收到错误“guild is not defined”的原因。另一个是因为client 没有guild 属性。

    不要忘记您的机器人可以在不同的guilds 中。您可以使用client.guilds 获得这些公会。它返回一个GuildManager,它的cache 返回一个集合。

    如果你知道你的公会ID,你可以这样获得公会:

    let guild = client.guilds.cache.get('YOUR_GUILD_ID')
    

    如果您的机器人仅在一个公会中,您可以在此集合中获取first()

    let guild = client.guilds.cache.first()
    

    一旦定义了guild,您的其余代码应该可以工作,尽管您应该在catch 块中记录错误。哦,member 在你的第二个then 中将不可用,所以你也应该修复它。

    您可以使用 async/await 使其更具可读性:

    client.on('ready', async () => {
      let arrayID = ['DISCORD_ID'];
      let roleID = '928938568624263178';
      let guild = client.guilds.cache.get('GUILD_ID');
    
      try {
        let member = await guild.members.fetch(arrayID[0]);
        let role = await guild.roles.fetch(roleID);
    
        if (!member) return console.log(`Can't find member with ID "${arrayID[0]}"`);
        if (!role) return console.log(`Can't find role with ID "${roleID}"`);
    
        member.roles.add(role);
      } catch (err) {
        console.log(err);
      }
    });
    

    【讨论】:

    • 感谢您的友好回答!公会线修复了它。现在没有错误。但是我如何才能访问第二个“then”的“member”?我试过这个:```client.on('ready', () => { arrayID = ['DISCORD_ID']; let guild = client.guilds.cache.get('GUILD_ID'); guild.members.fetch( arrayID[0]).then(member => { return guild.roles.fetch('928938568624263178'); }.then(role => { return member.roles.add(role); })).catch((err ) => { }); }); ```现在机器人正在标记.then红色
    • 我刚刚更新了我的答案
    • 谢谢!它现在起作用了。欣赏它!有趣的一点:控制台日志不起作用。错误:DiscordAPIError 未知用户。我猜代码将在它可以访问 if return "cant find member" 之前结束?
    猜你喜欢
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 2019-01-06
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    相关资源
    最近更新 更多