javascript - Discordjs 机器人的聊天命令

标签 javascript command discord

我正在不和谐上制作一个机器人,将来我会添加更多命令,我只是 不明白参数的使用以及如果有像“;说一般( channel )嗨伙计们,我是一条文本(要发送的文本)”这样的空格,它会如何工作。它只会向将军发送“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}`)
	}

});

最佳答案

所以,如果我理解正确的话,一切正常,除了消息只包含该消息的第一个单词。发生这种情况是因为您正在抓取 args[2]它只获取第二个参数(或第二个单词)。为了获取完整消息,您可以这样做:let theText = args.slice(1).join(' ');

代码片段说明 slice(1)其作用是删除第一个参数,即文本 channel 。 join(' ')这将连接第一个参数之后的所有参数。

总之,如果该人运行此命令:say general My message is awesome 。这将是变量:theChannel = 'general' theMessage = 'My message is awesome'

关于javascript - Discordjs 机器人的聊天命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49724373/

相关文章:

discord - 在 discord.js 中,我可以使用 Discord Bot 向用户发送直接消息吗?

javascript - slider 设置功能

javascript - 如何在 div 元素内打印 tab(\t)?

linux - linux命令返回的退出状态1的含义

macos - zsh:找不到命令:服务

C++ 运行 imagemagick 命令

python - Discord.py ReWrite-@has_permissions无法正常工作

javascript - jQuery submit()、change() 和页面刷新

javascript - AntD 自动完成下拉菜单默认打开焦点,我该如何防止它?

python - 哪种方法最适合在discord.py 中启动机器人?登录()和连接()与开始()与运行()