javascript - 频道名称中的 Discord.js memberCount 按角色(node.js)
问题描述
实际上我正在学习 Javascript / node.js 我在这个网站上注册是因为我坚持创建一个不和谐的机器人。好吧,一切都很好并且工作正常,只有一个问题:
我的机器人基本上计算并更新频道名称中用户的计数器。但是按角色对用户进行的实时更新不起作用。
这是我的代码:
console.log(`Logged in as ${client.user.tag}!`);
let IGuild = client.guilds.cache.get("703237714413355019");
// User counter
let memberCount = IGuild.memberCount;
let channelCountUsers = IGuild.channels.cache.get('709859603793576056');
channelCountUsers.setName('Users: '+ memberCount)
// Admins
let adminID = '707261958243483698';
let memberCountAdmins = IGuild.roles.cache.get(adminID).members.size;
let channelCountAdmins = IGuild.channels.cache.get('709889840338042903');
channelCountAdmins.setName('Admins: ' + memberCountAdmins)
});
// update User counter <- WORKS
client.on('guildMemberAdd', member=>{
let IGuild = client.guilds.cache.get('703237714413355019');
let memberCount = IGuild.memberCount;
let channelCountUsers = IGuild.channels.cache.get('709859603793576056');
channelCountUsers.setName('Users: ' + memberCount)
})
// update Admin counter <- DOES NOT WORK :(
client.on('guildMemberAdd', member=>{
let IGuild = client.guilds.cache.get('703237714413355019');
let adminID = "707261958243483698";
let memberCount = IGuild.roles.cache.get(adminID).members.size;
let channelCountAdmins = IGuild.channels.cache.get('709889840338042903');
channelCountAdmins.setName('Admins: ' + memberCount)
})
client.on('guildMemberRemove', member =>{
let IGuild = client.guilds.cache.get('703237714413355019');
let memberCount = IGuild.memberCount;
let channelCountUsers = IGuild.channels.cache.get('709859603793576056');
channelCountUsers.setName('Users: ' + memberCount)
})
因此,我需要实时更新“管理员计数器”或“角色计数器”。
问候和抱歉在这里发布我的菜鸟东西:/
解决方案
您的问题是guildMemberAdd
不检查角色更新,因为您将不得不使用guildMemberUpdate
此外,您有 2 个guildMemberAdd
事件,每个事件应该只有 1 个。
client.on('guildMemberUpdate', member=>{
let IGuild = client.guilds.cache.get('703237714413355019');
let adminID = "707261958243483698";
let adminCount = IGuild.roles.cache.get(adminID).members.size;
let channelCountAdmins = IGuild.channels.cache.get('709889840338042903');
channelCountAdmins.setName('Admins: ' + adminCount)
})
推荐阅读
- vue.js - “默认插槽遇到非函数值。” 在 Vue 3 组合 API 组件中
- python - 如何使用 Flask 从 html 选择标签中获取选定的值
- qgis - 如何将 .laz 文件点转换为 qgis 中的点集
- android - 在jetpack compose中以编程方式创建drawable
- c - realloc() 删除第一个元素
- java - ImageIcon 没有出现在 JFrame 窗口中
- sdn - Facuet OpenFlow 速率限制
- github - 如何为 lint 和运行测试的拉取请求编写管道
- sql - 如何使用sql识别长值
- javascript - FFMpeg Discordjs Music Bot 在随机时间后随机停止播放音乐