【问题标题】:i getting error Cannot read property 'channels' of undefined我收到错误无法读取未定义的属性“通道”
【发布时间】:2021-10-01 01:19:08
【问题描述】:

我收到一个错误Cannot read property 'channels' of undefined

(node:2632) UnhandledPromiseRejectionWarning: TypeError: 无法读取 未定义的属性“通道” 在 updateMembers (C:\Users\Asus\Desktop\Episode 50\commands\Main-Commands\Mod\member-count.js:5:31) 在 module.exports (C:\Users\Asus\Desktop\Episode 50\commands\Main-Commands\Mod\member-count.js:13:5) 在客户端。 (C:\Users\Asus\Desktop\Episode 50\index.js:48:5) 在 Object.onceWrapper (events.js:421:28) 在 Client.emit (events.js:315:20) 在 WebSocketManager.triggerClientReady (C:\Users\Asus\Desktop\Episode 50\node_modules\discord.js\src\client\websocket\WebSocketManager.js:431:17) 在 WebSocketManager.checkShardsReady (C:\Users\Asus\Desktop\Episode 50\node_modules\discord.js\src\client\websocket\WebSocketManager.js:415:10) 在 WebSocketShard。 (C:\Users\Asus\Desktop\Episode 50\node_modules\discord.js\src\client\websocket\WebSocketManager.js:197:14) 在 WebSocketShard.emit (events.js:315:20) 在 WebSocketShard.checkReady (C:\Users\Asus\Desktop\Episode 50\node_modules\discord.js\src\client\websocket\WebSocketShard.js:475:12)

这是我的代码:

module.exports = (client) => {
    const membercountchannel = '811119579580465182' 

    const updateMembers = (guild) => {
        const channel = guild.channels.cache.get(membercountchannel)
        channel.setName(`Member:- ${guild.memberCount.toLocaleString()}`) 
    }
    
    client.on('guildMemberAdd', (member) => updateMembers(member.guild))
    client.on('guildMemberRemove', (member) => updateMembers(member.guild))

    const guild = client.guilds.cache.get('787083837833871400') 
    updateMembers(guild)
}

【问题讨论】:

    标签: javascript discord discord.js


    【解决方案1】:

    如果您检查堆栈跟踪,您可以看到您的updateMembers 函数接收到一个未定义的guild (member-count.js:5:31)。在下一行,您可以看到它来自最后一行 (member-count.js:13:5):updateMembers(guild)

    当您在上面一行定义guild 时,这意味着client.guilds.cache.get('787083837833871400') 返回未定义。确保公会ID正确。如果正确,您可以尝试fetch the guild

    还有一点,你不应该在事件处理程序中添加事件处理程序。我想你已经在client.on('message')。每次有人使用您的命令更新成员计数时,您都会创建两个新的事件侦听器(client.on('guildMemberAdd') client.on('guildMemberRemove')),这会导致问题(内存泄漏)。您需要在命令之外的其他地方处理这些问题。

    module.exports = async (client) => {
      const updateMembers = (guild) => {
        const memberCountChannel = '811119579580465182';
        const channel = guild.channels.cache.get(memberCountChannel);
        channel.setName(`Member:- ${guild.memberCount.toLocaleString()}`);
      };
    
      try {
        const guild = await client.guilds.fetch('787083837833871400');
        updateMembers(guild);
      } catch (error) {
        console.log(error);
      }
    };
    

    【讨论】:

      猜你喜欢
      • 2021-07-06
      • 1970-01-01
      • 1970-01-01
      • 2021-03-03
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 2020-11-28
      相关资源
      最近更新 更多