node.js - 我想让成员在不和谐机器人中计数,但它给出了错误
问题描述
我想让成员在不和谐机器人中计数,但它给出了错误。我通过互联网搜索它,但我没有找到它!这是代码:
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)
请帮我!
解决方案
从您的错误结果来看,公会是undefined。我运行了代码,它按预期工作。
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);
};
请仔细检查394805546450026496是有效的公会 ID,而不是频道 ID/用户 ID。如果是,请检查该机器人是否在上述公会中。
另一件事,建议在执行操作或从中读取数据之前查看公会是否可用。您可以使用guild.available进行检查。
推荐阅读
- ios - 如何设置 Xamarin iOS SDK 版本以在 Azure Devops 上构建
- python - MITM Proxy - 通过 python 脚本拦截和修改 https 内容
- powershell - 修改 Powershell 4.0 中的本地用户属性描述
- c++ - 链接 .lib 和 .h 文件 (OpenJDK 1.8)
- java - Java invoke class to call method inside
- javascript - 将对象的数组属性作为 React 组件 prop 传递会引发异常
- css - css 过渡不适用于渐变?
- javascript - 在 node.js 的命令行中传递参数
- angular - ASP.NET Webapi 中 HTTP 的 Cors 错误,但不是 HTTPS
- sql - T-SQL 在合并中选择所有要更新的 col