由于最近的失败,我决定尝试通过更正旧代码来学习node.js / discord.js。我不知道这是否是一个好方法,但这就是我要尝试的方法。不过最近,我遇到了一些设置命令处理程序的障碍。对于我的命令处理程序,我有:
// Calling Packages
const Discord = require('discord.js');
const bot = new Discord.Client();
const client = new Discord.Client();
const weather = require('weather-js');
const fs = require('fs');
const func = require("./functions.js")
// Listener Event One
bot.on('message', message => {
// Variables
let msg = message.content.toUpperCase();
let sender = message.author;
let cont = message.content.slice(prefix.length).trim().split(" ");
let args = message.content.slice(prefix.length).trim().split(" ");
let cmd = args.shift().toLowerCase();
if (sender.bot) return;
if (!message.content.startsWith(prefix)) return;
//Command Handler
try {
let commandFile = require(`./commands/${cmd}.js`);
commandFile.run(bot, message, args, func);
} catch(e) {
console.log(e.message);
} finally {
console.log(`${message.author.username} ran the command: ${cmd}`);
}
对于我的function.js文件,我有这个
module.exports = {
ping: function(channel) {
channel.send("Pong!");
}
}
对于ping命令,我有
exports.run = (bot, message, args, func) => {
func(message.channel);
}
第func = require(./functions.js
行正在读取function.js来捕获它们,然后
let commandFile = require(`./commands/${cmd}.js`);
commandFile.run(bot, message, args, func);
允许将它们导出,所以我认为。但是每当我运行命令“ cb!ping”并查看控制台时,它都说我已经阅读了命令,然后是func is not a function
。
这很令人困惑,由于我有func = require(./functions.js)
并将其导出,所以我不太明白为什么。
我知道我的用语肯定不正确,但对不起,希望您能理解。与往常一样,感谢您抽出宝贵时间阅读我的问题。