我正在制造一个不和谐的机器人,将来我会添加更多的命令,我只是不明白参数的使用,以及如果有这样的空格,它将如何工作:“;一般(频道)嗨,我是一个文本(文本发送)”。它只会向general发送"hi“,而不发送其他任何东西,这是chat命令的缺点。
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}`)
}
});
发布于 2018-05-25 17:56:23
因此,如果我正确地理解了你,所有的工作,除了信息,只包括第一个字的消息。之所以会出现这种情况,是因为您正在抓取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'
发布于 2020-06-09 08:44:27
如果我认为你想重复用户的信息,你应该试一试。我的bot前缀是R!,我的命令是echo,所以我的消息是
if(command==='echo'){
let ec = message.content;
let co = ec.replace("R!echo","");
message.channel.send(co);
}希望这能帮到你..。如果你需要帮助加入我的服务器https://discord.gg/Rf3xPMm
https://stackoverflow.com/questions/49724373
复制相似问题