Node.js Discord.js-将动态命令处理程序与收集器/等待消息混合
我目前正在编程一个Discord机器人,在收到某个命令提示后进行回复。由于这些命令可能会让人困惑,我想让它提问,收集用户的回复,然后根据这些回复,用正确的答案回复 这是我现在掌握的密码。我尝试添加收集器/等待消息,但失败Node.js Discord.js-将动态命令处理程序与收集器/等待消息混合,node.js,discord,discord.js,bots,Node.js,Discord,Discord.js,Bots,我目前正在编程一个Discord机器人,在收到某个命令提示后进行回复。由于这些命令可能会让人困惑,我想让它提问,收集用户的回复,然后根据这些回复,用正确的答案回复 这是我现在掌握的密码。我尝试添加收集器/等待消息,但失败 const fs = require('fs'); const Discord = require('discord.js'); const { prefix, token } = require('./config.json'); const client = new Di
const fs = require('fs');
const Discord = require('discord.js');
const { prefix, token } = require('./config.json');
const client = new Discord.Client();
client.commands = new Discord.Collection();
const commandName = fs.readdirSync('./commands');
const commandSmokes = fs.readdirSync('./smokes');
const commandMolotovs = fs.readdirSync('./molotovs');
const commandFlashbangs = fs.readdirSync('./flashbangs');
// Loads files under commands sub-folders
for (const folder of commandName) {
const commandFiles = fs.readdirSync(`./commands/${folder}`).filter(file => file.endsWith('.js'));
for (const file of commandFiles) {
const command = require(`./commands/${folder}/${file}`);
client.commands.set(command.name, command);
}
}
// Loads files under smokes sub-folders
for (const folder of commandSmokes) {
const commandFiles = fs.readdirSync(`./smokes/${folder}`).filter(file => file.endsWith('.js'));
for (const file of commandFiles) {
const command = require(`./smokes/${folder}/${file}`);
client.commands.set(command.name, command);
}
}
// Loads files under molotovs sub-folders
for (const folder of commandMolotovs) {
const commandFiles = fs.readdirSync(`./molotovs/${folder}`).filter(file => file.endsWith('.js'));
for (const file of commandFiles) {
const command = require(`./molotovs/${folder}/${file}`);
client.commands.set(command.name, command);
}
}
// Loads files under flashbangs sub-folders
for (const folder of commandFlashbangs) {
const commandFiles = fs.readdirSync(`./flashbangs/${folder}`).filter(file => file.endsWith('.js'));
for (const file of commandFiles) {
const command = require(`./flashbangs/${folder}/${file}`);
client.commands.set(command.name, command);
}
}
client.once('ready', () => {
console.log('Ready!');
});
client.on('message', message => {
if (!message.content.startsWith(prefix) || message.author.bot) return;
const args = message.content.slice(prefix.length).trim().split(/ +/);
const commandName = args.shift().toLowerCase();
const command = client.commands.get(commandName)
|| client.commands.find(cmd => cmd.aliases && cmd.aliases.includes(commandName));
if (!command) return;
try {
command.execute(message, args);
} catch (error) {
console.error(error);
message.reply('Command not available.');
}
});
client.login(token);
和命令:
module.exports = {
name: 'd2-smoke-xbox-tspawn',
aliases: ['dust-smoke-xbox-tspawn', 'dust2-smoke-xbox-tspawn', 'd2-smoke-xbox-spawn','dust2-smoke-xbox-spawn', 'dust-smoke-xbox-tspawn'],
description: 'Dust 2 - Xbox Smoke From T-Spawn',
execute(message) {
message.channel.send('https://youtu.be/q91_mN1IUpw 64 tick | https://youtu.be/q91_mN1IUpw 128 tick');
},
};
正如您所看到的,为了使其正常工作,命令必须是特定的,而不是为每个子文件夹使用一个命令,然后对其中所需的内容进行排序。
我在找类似的东西
有什么办法使它起作用吗?
谢谢 您可以再次尝试使用waitmessages()。对于每个提示,您可以执行以下操作:
const filter = m => m.author.id === message.author.id;
let utility;
message.channel.send("What kind of utility are you looking for?")
.then(() => message.channel.awaitMessages(filter, { max: 1 }))
.then(collectedMessage => {
utility = collectedMessage.content;
}
您可以为需要的每个提示执行此操作