Server Stats 代码将通道更新为未定义而不是成员总数

Posted

技术标签:

【中文标题】Server Stats 代码将通道更新为未定义而不是成员总数【英文标题】:Server Stats piece of code updates the channel to undefined instead of the total members 【发布时间】:2019-10-20 04:38:31 【问题描述】:

所以我一直在为一台服务器创建一个私人机器人,显示服务器统计信息等等,但我有一个问题;每次用户加入/离开公会时,机器人都会更新一个带有“未定义”的频道,但这意味着该公会的成员总数。有人能帮我吗?这是一段代码:

const serverStats = 
    guildID: '474658204475719701',
    totalUsersID: '578114537589309441',
;

client.on('guildMemberAdd', member => 
    if (member.guild.id !== serverStats.guildID) return;
    client.channels.get(serverStats.totalUsersID).setName(`???? MEMBERS COUNT: $member.guild.membersCount`);
);

client.on('guildMemberRemove', member => 
    if (member.guild.id !== serverStats.guildID) return;
    client.channels.get(serverStats.totalUsersID).setName(`???? MEMBERS COUNT: $member.guild.membersCount`);
);

谢谢。

【问题讨论】:

【参考方案1】:

membersCount 不是Guild 的有效属性。实际上是memberCount(单数“成员”)。

member.guild.memberCount

此代码将返回预期的成员数。

【讨论】:

【参考方案2】:

这是我用于服务器信息命令的内容:

const Discord = require("discord.js");
module.exports.run = async (bot, message, args) => 
    let sicon = message.guild.iconURL;
    let serverembed = new Discord.RichEmbed()
    .setDescription("Server Information")
    .setColor("#ff0000")
    .setThumbnail(sicon)
    .addField("Server Name", message.guild.name)
    .addField("Created On", message.guild.createdAt)
    .addField("You Joined", message.member.joinedAt)
    .addField("Total Members", message.guild.memberCount)
    .addField("Bot Version", "2.4.4")

    message.channel.send(serverembed);

【讨论】:

【参考方案3】:

希望你还需要他

const embed = new Discord.RichEmbed()
.setDescription(`? MEMBERS COUNT: $message.guild.members.filter(member => !member.user.bot).size`)
.setThumbnail(message.guild.iconURL)
client.on('guildMemberAdd', member => 
    if (member.guild.id !== serverStats.guildID) return;
    client.channels.get(serverStats.totalUsersID).send(embed);
);

client.on('guildMemberRemove', member => 
    if (member.guild.id !== serverStats.guildID) return;
    client.channels.get(serverStats.totalUsersID).send(embed);
);

【讨论】:

以上是关于Server Stats 代码将通道更新为未定义而不是成员总数的主要内容,如果未能解决你的问题,请参考以下文章

当尝试将变量传递给另一个模块时,将代码拆分到Nodejs中的自定义模块时,它将被定义为未定义

无法为未定义的类 UIBarButtonItem 定义类别

Parse Server 使用云代码自动填充和更新列

浏览器将经度变量读取为未定义

如何将组件属性设置为未定义?

About stats collected