discord.js 成员计数 - 无法读取未定义的属性“通道”
Posted
技术标签:
【中文标题】discord.js 成员计数 - 无法读取未定义的属性“通道”【英文标题】:discord.js member count - Cannot read property 'channels' of undefined 【发布时间】:2021-05-17 09:52:03 【问题描述】:我一直在尝试在我的 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)
【问题讨论】:
我的猜测是member.guild
未定义或不包含名为channels
的属性。您是否能够将值转储到控制台以进行故障排除?我会从members
或members.guild
开始,看看它们到底包含什么。
【参考方案1】:
您的频道未定义,因为您没有以正确的方式要求它。 你可以要求它:
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) 中,您需要 require for counter。因此您需要在 主文件夹中创建一个文件夹,并命名为计数器。在这个文件夹 ('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);
);
【讨论】:
以上是关于discord.js 成员计数 - 无法读取未定义的属性“通道”的主要内容,如果未能解决你的问题,请参考以下文章
Discord.js 的欢迎消息 - “无法读取未定义的属性 'get'”