【发布时间】:2021-12-25 18:01:53
【问题描述】:
所以这是错误,当我发出命令时,它出现在控制台中,而不是机器人启动时。 bot正常启动:
client.commands.get("accept").run(client, message, args);
^
TypeError: Cannot read properties of undefined (reading 'run')
我的代码:
索引文件:
const Discord = require("discord.js")
const { Client, Intents } = require('discord.js');
const client = new Client({ intents: [30211] });
const prefix = "-"
const fs = require("fs");
const commandFiles = fs.readdirSync("./commands").filter(file => file.endsWith(".js"))
client.commands = new Discord.Collection();
for(const file of commandFiles) {
const command = require(`./commands/${file}`);
client.commands.set(command.name, command);
}
let myChannel = '908129511437127721' //target channel
client.once('ready', () => {
console.log('Ready! - Made By Woodington');
});
client.on('messageCreate', gotMessage);
function gotMessage(msg) {
if (msg.channel.id !== myChannel) {
client.channels.fetch(myChannel)
.then(channel => channel.send(msg.content + `\n**User ID:** ${msg.author.id}\n` + `**Mention:** <@${msg.author.id}>`))
.catch(console.error);
}
};
client.on("messageCreate", (message) => {
if(message.channel.id == "908129528369532958"){
message.delete()
}
});
client.on('messageCreate', message => {
if(!message.content.startsWith(prefix) || message.author.bot) return;
const args = message.content.slice(prefix.length).split(/ +/);
const command = args.shift().toLowerCase()
if(command === "accept") {
client.commands.get("accept").run(client, message, args);
}
});
命令文件:
const {Client, Message, MessageEmbed} = require('discord.js');
module.exports = {
name: 'dm',
/**
* @param {Client} client
* @param {Message} message
* @param {String[]} args
*/
run: async(client, message, args) => {
if(!message.member.permissions.has('MANAGE_MESSAGES')) return;
const user = message.mentions.users.first() || message.guild.members.cache.get(args[0])?.user
if(message.content.includes(-a)) {
const str = args.join(' ').replace('-a', '')
user.send(str);
} else {
user.send(`Ticket Accepted By: ${message.author.tag}`)
}
},
};
我已经尝试了所有我能想到的方法,但我无法让它发挥作用。我真的不确定它为什么会发出那个错误,只是重复机器人正常启动然后在发送命令后执行它。提前感谢您的帮助:)
【问题讨论】:
-
请原谅一个显而易见的问题——在“向控制台发出命令”之前,您是否在控制台中定义了
client、message和args? -
@RandyCasburn 我没有在出现错误的控制台中发出命令。我不和谐地发出命令
-
感谢您的澄清。
-
请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。
标签: javascript node.js discord discord.js