首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于非协调bot bot的Chat命令

用于非协调bot bot的Chat命令
EN

Stack Overflow用户
提问于 2018-04-09 01:19:08
回答 2查看 1.4K关注 0票数 0

我正在制造一个不和谐的机器人,将来我会添加更多的命令,我只是不明白参数的使用,以及如果有这样的空格,它将如何工作:“;一般(频道)嗨,我是一个文本(文本发送)”。它只会向general发送"hi“,而不发送其他任何东西,这是chat命令的缺点。

代码语言:javascript
复制
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}`)
	}

});

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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'

票数 1
EN

Stack Overflow用户

发布于 2020-06-09 08:44:27

如果我认为你想重复用户的信息,你应该试一试。我的bot前缀是R!,我的命令是echo,所以我的消息是

代码语言:javascript
复制
if(command==='echo'){
let ec = message.content;
let co = ec.replace("R!echo","");
message.channel.send(co);
}

希望这能帮到你..。如果你需要帮助加入我的服务器https://discord.gg/Rf3xPMm

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49724373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档