node.js - 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)
}
解决方案
您的频道未定义,因为您没有以正确的方式要求它。你可以要求它:
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);
});
推荐阅读
- windows - 用于 Haskell 的 Windows IDE
- express - NextJS getInitialProps 被 babel asyncToGenerator 调用了两次
- r - 用 Tidyverse 调查数据中的文字替换“其他 - 写入”
- r - 在 for 循环中使用 mutate 时遇到问题
- joomla3.9 - 安全令牌不匹配。该请求被中止以防止任何安全漏洞。请再试一次
- mongodb - 在无服务器框架中保持 MongoDB 连接打开
- laravel - Laravel Vue VueRouter 历史模式
- java - 理解嵌套注释的结构/语法
- java - Java中的自定义排序算法?
- javascript - 如果最终用户无论如何都没有得到所有这些,节点模型文件夹怎么会这么大?