discordjs bot

时间:2018-04-09 01:19:09

标签: javascript command discord

我正在制作一个不和谐的机器人,我将在未来添加更多命令,我只是 不理解参数的使用以及如果有一个像“一般(频道)这样的空间我会是一个文本(要发送的文本)”,它将如何工作?它只会向“普通”发送“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}`)
	}

});

2 个答案:

答案 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