我正在制作一个不和谐的机器人,我将在未来添加更多命令,我只是 不理解参数的使用以及如果有一个像“一般(频道)这样的空间我会是一个文本(要发送的文本)”,它将如何工作?它只会向“普通”发送“hi”,而对于聊天命令则不会发送任何其他内容。
const bot = new Discord.Client({disableEveryone: true});
bot.on("ready", async () => {
console.log(`Bot is ready! ${bot.user.username}`);
try {
let link = await bot.generateInvite("[ADMINISTRATOR]");
console.log(link);
} catch(e) {
console.log(e.stack);
}
bot.user.setGame('nope nope nope');
});
bot.on("message", async (message) => {
if (message.author.bot) return;
if (!message.content.startsWith(prefix)) return;
let command = message.content.split(" ")[0];
command = command.slice(prefix.length);
const args = message.content.slice(prefix.length).trim().split(/ +/g);
if (command === "ping") {
message.channel.send(`Pong! Time took: ${Date.now() - message.createdTimestamp} ms`);
} else
if (command === "say") {
message.delete()
let thetext = args[2];
let thechannel = args[1];
bot.channels.find("name",`${thechannel}`).sendMessage(`${thetext}`)
}
});
答案 0 :(得分:1)
所以,如果我理解正确,除了消息只包含所述消息的第一个单词之外,一切正常。之所以会发生这种情况,是因为你抓住args[2]
只抓取第二个参数(或第二个单词)。要获取整个邮件,请执行以下操作:let theText = args.slice(1).join(' ');
。
代码段说明
slice(1)
这样做是删除第一个参数,即文本通道。
join(' ')
这加入了第一个arg之后的所有参数。
总之,如果此人运行此命令:say general My message is awesome
。这将是变量:theChannel = 'general'
theMessage = 'My message is awesome'
答案 1 :(得分:0)
如果我想重复用户发来的消息,则应尝试此操作。
我的漫游器前缀为R!
我的命令是echo
我的讯息是
if(command==='echo'){
let ec = message.content;
let co = ec.replace("R!echo","");
message.channel.send(co);
}
希望这可以帮助您... 如果您需要帮助,请加入我的服务器 https://discord.gg/Rf3xPMm