Discord.js 说命令

ren*_*ens 2 javascript discord.js

我正在开发一个有 say 命令的不和谐机器人。但我的结果与我的预期不同。

这是我的代码:

Discord = require('discord.js');
client = new Discord.Client();
prefix = '$';
fs = require('fs');
.commands = new Discord.Collection();
commandFiles = fs.readdirSync('./commands/').filter(file => file.endsWith('.js'));
for (const file of commandFiles) {
    const command = require(`./commands/${file}`);
    client.commands.set(command.name, command);
}

client.once('ready', () => {
    console.log('Bot is online!');
});

client.on('message', 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 === 'say') {
        client.commands.get('say').execute(message, args, Discord);
    }
});
Run Code Online (Sandbox Code Playgroud)

说.js文件:

module.exports = {
    name: 'say',
    description: 'The bot says thing.',
    execute(message, args, Discord) {
        message.channel.send(args);
    }
}
Run Code Online (Sandbox Code Playgroud)
我的期望:

用户: $say 堆栈溢出很酷 Bot:堆栈溢出很酷

输出:

用户:$say 堆栈溢出很酷

机器人

溢出

凉爽的

小智 5

这里的问题是你的“args”参数是一个字符串数组。当您使用 send 函数发送它时,数组的每个元素将在它们之间以新行发送。

如果您查看文档,您可以看到 send() 需要一个String Resolvable,并且一个数组是一个有效的 String Resolvable 值,但它具有特殊的行为。

在发送之前尝试在参数上使用join 方法。下面是一个例子:

message.channel.send(args.join(' '));
Run Code Online (Sandbox Code Playgroud)

  • “如果您查看文档,您可以看到 send() 需要一个可解析的字符串”当从在线源引用时,请添加指向它的链接,并在可能的情况下添加实际文本中的引号(目前只有一个链接第三方网站上的屏幕截图)。 (2认同)