首页 > 解决方案 > discord.js 成员计数 - 无法读取未定义的属性“通道”

问题描述

我一直在尝试在我的不和谐服务器上创建成员数。我的代码不起作用,我不断收到“无法读取未定义的属性‘通道’”。


module.exports = (client) => {
  const channelId = '810343814517489664'

  const updateMembers = (guild) => {
    const channel = guild.channels.cache.get(channelId)
    channel.setName(`Members: ${guild.memberCount.toLocaleString()}`)
  }

  client.on('guildMemberAdd', (member) => updateMembers(member.guild))
  client.on('guildMemberRemove', (member) => updateMembers(member.guild))

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

标签: node.jsdiscord.js

解决方案


您的频道未定义,因为您没有以正确的方式要求它。你可以要求它:

const channelId = guild.channels.cache.get('CHANNEL ID');

接下来我将解释并向您展示我用于会员柜台的内容!

module.exports = async (client) =>{
    const guild = client.guilds.cache.get('GUILD ID');
    setInterval(() =>{
        const memberCount = guild.memberCount;
        const channel = guild.channels.cache.get('CHANNEL ID');
        channel.setName(`Members:${memberCount.toLocaleString()}`);
        console.log('Updating Member Count');
    }, 3600000);//I set the update time every 1 hour!
}

您需要为启动创建一个语音通道,然后每次设置更新时机器人都会重命名它!

在您的主文件(如 index.js)中,您需要使用 counter。因此,您需要在主文件夹中创建一个名为 counters的文件夹。在此文件夹(“counters”)中,您需要创建一个名为“member-counter.js”的文件,然后粘贴上面的代码。在您的主文件(如 index.js)中,您需要它:

const memberCounter = require('./counters/member-counter');

您进入具有该client.on(ready)功能并在最后一行设置的下一行:

memberCounter(client);

我的意思是 :

client.on('ready', () => {
console.log('I am ready')
memberCounter(client);
});

推荐阅读