【问题标题】:Chat command for discordjs botdiscordjs 机器人的聊天命令
【发布时间】:2018-09-18 08:18:30
【问题描述】:

我正在创建一个不和谐的机器人,将来我会添加更多命令,我只是 不明白参数的使用以及如果有像“说一般(频道)嗨伙计们我是文本(要发送的文本)”这样的空格它将如何工作。它只会向将军发送“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 开始为您的文本获取所有字符串,并用空格将它们连接起来。

标签: javascript command discord


【解决方案1】:

如果我认为你想重复来自用户的消息,你应该试试这个。 我的机器人前缀是R! 我的命令是echo 所以我的信息是

if(command==='echo'){
let ec = message.content;
let co = ec.replace("R!echo","");
message.channel.send(co);
}

希望这对您有所帮助... 如果你需要帮助加入我的服务器 https://discord.gg/Rf3xPMm

【讨论】:

    【解决方案2】:

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

    代码sn-p解释 slice(1) 这样做是删除第一个参数,即文本通道。 join(' ') 这将连接第一个 arg 之后的所有参数。

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

    【讨论】:

      猜你喜欢
      • 2017-07-08
      • 1970-01-01
      • 2019-04-02
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 2017-09-08
      • 2020-03-31
      • 2022-12-23
      相关资源
      最近更新 更多