discord.js 成员计数 - 无法读取未定义的属性“通道”

时间:2021-02-14 03:52:48

标签: node.js discord.js

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


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)
}

1 个答案:

答案 0 :(得分:0)

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

docker-compose up -d

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

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

您需要先创建一个语音频道,然后机器人会在您每次设置更新时对其进行重命名!

在你的主文件(如index.js)中,你需要要求计数器。所以你需要在你的主文件夹中创建一个名称为计数器。在此文件夹 ('counters') 中,您需要创建一个名为 'member-counter.js' 的文件,然后粘贴上面的代码。在您的主文件 (如 index.js) 中,您需要使用 :

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!
}

您在具有 const memberCounter = require('./counters/member-counter'); 函数并在最后一行设置的下一行:

client.on(ready)

我的意思是:

memberCounter(client);