我想让成员在不和谐的机器人中计数,但它给出了错误
I want to get members count in discord bot but it gives error
我想让 discord bot 中的成员计数,但它会出错。我通过互联网搜索它,但我没有找到它!
这是代码:
const Commando = require('discord.js-commando');
const bot = new Commando.Client({commandPrefix: '$'});
const TOKEN = 'here is token';
const MIN_INTERVAL = 3 * 1000;
const guild = bot.guilds.get("394805546450026496");
bot.registry.registerGroup('connectc', 'Connectc');
bot.registry.registerGroup('defaultc', 'Defaultc');
bot.registry.registerDefaults();
bot.registry.registerCommandsIn(__dirname + "/commands")
bot.on('ready', function(){
console.log("Ready");
setInterval(function(){
var memberCount = guild.members.filter(member => !member.user.bot).size;
var memberCountChannel = bot.channels.get("547805078787194891");
memberCountChannel.setName("Osoby: "+ memberCount +" ");
}, MIN_INTERVAL);
});
bot.login(TOKEN);
此处错误:
C:\Users\User\Documents\Visual Studio Code\Discord Bots\VblacqeBot\index.js:18
var memberCount = guild.members.filter(member => !member.user.bot).size;
^
TypeError: Cannot read property 'members' of undefined
at CommandoClient.<anonymous> (C:\Users\User\Documents\Visual Studio Code\Discord Bots\VblacqeBot\index.js:18:29)
at CommandoClient.emit (events.js:194:15)
at WebSocketConnection.triggerReady (C:\Users\User\Documents\Visual Studio Code\Discord Bots\VblacqeBot\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:125:17)
at WebSocketConnection.checkIfReady (C:\Users\User\Documents\Visual Studio Code\Discord Bots\VblacqeBot\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:141:61)
at GuildCreateHandler.handle (C:\Users\User\Documents\Visual Studio Code\Discord Bots\VblacqeBot\node_modules\discord.js\src\client\websocket\packets\handlers\GuildCreate.js:13:31)
at WebSocket.onMessage (C:\Users\User\Documents\Visual Studio Code\Discord Bots\VblacqeBot\node_modules\ws\lib\event-target.js:120:16)
at WebSocket.emit (events.js:189:13)
请帮帮我!
好像调用函数guild.members.filter(member => !member.user.bot).size;
时,guild的值是未定义的。您确定 const guild = bot.guilds.get("394805546450026496");
返回的公会正确吗?您可以尝试在调用 get 后记录 guild
的值吗?我在 discord.js 文档中的任何地方都没有看到 get(String id)
方法。您是否尝试过使用推荐的 find()
?
试试这个。
const guild = bot.guilds.find(guild => {guild.id == "394805546450026496"});
根据您的错误结果,公会 未定义。
我 运行 代码,它按预期工作。
module.exports.run = async (client, message, arguments) => {
const guild = client.guilds.get("566596189827629066");
setInterval(function () {
var memberCount = guild.members.filter(member => !member.user.bot).size;
var memberCountChannel = client.channels.get("626462657817477131");
memberCountChannel.setName(`${guild.name} has ${memberCount} members!`);
}, 1000);
};
Image
请仔细检查 394805546450026496 是有效的公会 ID 而不是 channel-id/user-id。如果是,请检查该机器人是否在上述公会中。
另外,建议在执行操作或从中读取数据之前先查看公会是否可用。您可以使用 guild.available.
进行检查
// update member
let myGuild = client.guilds.get("guilds_id_here");
let memberCount = myGuild.memberCount;
let memberCountChannel = myGuild.channels.get("channel_id_here");
memberCountChannel.setName("Member•" +memberCount+ "•User")
let memberChannel = message.guild.channels.cache.get("802617217450901514");
memberChannel.setName("Member Count: " + message.guild.memberCount);
//DISCORD.JS V13 会员计数命令;
const Discord = require("discord.js")
let guild = message.guild
let users = guild.members.cache.filter((m) => !m.user.bot)).size;
let bots = guild.members.cache.filter((m) => m.uxer.bot).size;
let memberCount = new Discord.MessageEmbed()
.setTitle(`MemberCount Information of ${guild.name}`)
.addField("Humans", `${users}`)
.addField("Bots", `${bots}`)
.setColor("RANDOM")
.setFooter({
text: `${guild.name},
iconURL: guild.iconURL()
})
message.channel.sendTyping();
message.reply({
embeds : [memberCount]
});
我想让 discord bot 中的成员计数,但它会出错。我通过互联网搜索它,但我没有找到它! 这是代码:
const Commando = require('discord.js-commando');
const bot = new Commando.Client({commandPrefix: '$'});
const TOKEN = 'here is token';
const MIN_INTERVAL = 3 * 1000;
const guild = bot.guilds.get("394805546450026496");
bot.registry.registerGroup('connectc', 'Connectc');
bot.registry.registerGroup('defaultc', 'Defaultc');
bot.registry.registerDefaults();
bot.registry.registerCommandsIn(__dirname + "/commands")
bot.on('ready', function(){
console.log("Ready");
setInterval(function(){
var memberCount = guild.members.filter(member => !member.user.bot).size;
var memberCountChannel = bot.channels.get("547805078787194891");
memberCountChannel.setName("Osoby: "+ memberCount +" ");
}, MIN_INTERVAL);
});
bot.login(TOKEN);
此处错误:
C:\Users\User\Documents\Visual Studio Code\Discord Bots\VblacqeBot\index.js:18
var memberCount = guild.members.filter(member => !member.user.bot).size;
^
TypeError: Cannot read property 'members' of undefined
at CommandoClient.<anonymous> (C:\Users\User\Documents\Visual Studio Code\Discord Bots\VblacqeBot\index.js:18:29)
at CommandoClient.emit (events.js:194:15)
at WebSocketConnection.triggerReady (C:\Users\User\Documents\Visual Studio Code\Discord Bots\VblacqeBot\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:125:17)
at WebSocketConnection.checkIfReady (C:\Users\User\Documents\Visual Studio Code\Discord Bots\VblacqeBot\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:141:61)
at GuildCreateHandler.handle (C:\Users\User\Documents\Visual Studio Code\Discord Bots\VblacqeBot\node_modules\discord.js\src\client\websocket\packets\handlers\GuildCreate.js:13:31)
at WebSocket.onMessage (C:\Users\User\Documents\Visual Studio Code\Discord Bots\VblacqeBot\node_modules\ws\lib\event-target.js:120:16)
at WebSocket.emit (events.js:189:13)
请帮帮我!
好像调用函数guild.members.filter(member => !member.user.bot).size;
时,guild的值是未定义的。您确定 const guild = bot.guilds.get("394805546450026496");
返回的公会正确吗?您可以尝试在调用 get 后记录 guild
的值吗?我在 discord.js 文档中的任何地方都没有看到 get(String id)
方法。您是否尝试过使用推荐的 find()
?
试试这个。
const guild = bot.guilds.find(guild => {guild.id == "394805546450026496"});
根据您的错误结果,公会 未定义。 我 运行 代码,它按预期工作。
module.exports.run = async (client, message, arguments) => {
const guild = client.guilds.get("566596189827629066");
setInterval(function () {
var memberCount = guild.members.filter(member => !member.user.bot).size;
var memberCountChannel = client.channels.get("626462657817477131");
memberCountChannel.setName(`${guild.name} has ${memberCount} members!`);
}, 1000);
};
Image
请仔细检查 394805546450026496 是有效的公会 ID 而不是 channel-id/user-id。如果是,请检查该机器人是否在上述公会中。
另外,建议在执行操作或从中读取数据之前先查看公会是否可用。您可以使用 guild.available.
进行检查// update member
let myGuild = client.guilds.get("guilds_id_here");
let memberCount = myGuild.memberCount;
let memberCountChannel = myGuild.channels.get("channel_id_here");
memberCountChannel.setName("Member•" +memberCount+ "•User")
let memberChannel = message.guild.channels.cache.get("802617217450901514");
memberChannel.setName("Member Count: " + message.guild.memberCount);
//DISCORD.JS V13 会员计数命令;
const Discord = require("discord.js")
let guild = message.guild
let users = guild.members.cache.filter((m) => !m.user.bot)).size;
let bots = guild.members.cache.filter((m) => m.uxer.bot).size;
let memberCount = new Discord.MessageEmbed()
.setTitle(`MemberCount Information of ${guild.name}`)
.addField("Humans", `${users}`)
.addField("Bots", `${bots}`)
.setColor("RANDOM")
.setFooter({
text: `${guild.name},
iconURL: guild.iconURL()
})
message.channel.sendTyping();
message.reply({
embeds : [memberCount]
});