discordjs 机器人的聊天命令

Posted

技术标签:

【中文标题】discordjs 机器人的聊天命令【英文标题】:Chat command for discordjs bot 【发布时间】: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 开始为您的文本获取所有字符串,并用空格将它们连接起来。 【参考方案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'

【讨论】:

以上是关于discordjs 机器人的聊天命令的主要内容,如果未能解决你的问题,请参考以下文章

使用 DiscordJS 的音乐 Discord 机器人无法正常工作

Discord.js v13,@discordjs/voice 播放音乐命令

DiscordJS v12 userinfo 命令不起作用

如何在其中创建一个包含 2 个单词的命令 Discordjs

尝试安装 discordjs/opus 时不断遇到这些错误

DiscordJs:邀请机器人时检查 serverId