首页 > 解决方案 > 频道名称中的 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)
   })

因此,我需要实时更新“管理员计数器”或“角色计数器”。

问候和抱歉在这里发布我的菜鸟东西:/

标签: javascriptnode.jsdiscord.js

解决方案


您的问题是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)
}) 

推荐阅读