有没有一种好的方法可以在Discord.js中使用message.content.includes的参数



所以我试图制作一个简单的命令,例如,我可以说";我很无聊"它会说";嗨,无聊,我是个机器人&";。

以下是我目前所拥有的,我想知道如何才能做到这一点。

client.on('message', message => {
if(message.content.toLowerCase().includes('bot')) {
message.channel.send('https://media.giphy.com/media/tczJoRU7XwBS8/giphy.gif');
}
if(message.content.toLowerCase().includes(`i'm`)) {
message.channel.send(`Hello ${args}, I'm a bot!`)

使用String.includes()有几种方法可以做到这一点,但使用String.match()(工作原理类似,但实际上可以返回找到的内容(和Regex会更容易。Regex用于匹配文本中的模式,您绝对要在这里寻找一个通用模式:;我很了不起;。

如果您想包含空格,这里有一种使用match()和regex的方法:

if(message.content.match(/(i'm )(.+)/i) && !message.author.bot) {
message.channel.send(`Hello ${message.content.match(/(i'm )(.+)/i)[2]}, I'm a bot!`)
}

这里有一种不包含空格的方法,这可能是你想要的

if(message.content.match(/(i'm )(w+)/i) && !message.author.bot) {
message.channel.send(`Hello ${message.content.match(/(i'm )(w+)/i)[2]}, I'm a bot!`)
}

我将解释match()中的正则表达式:括号表示要匹配的特定组,.表示任何单个字符,+表示一个或多个指定字符,而i标志表示使匹配不区分大小写(使toLowerCase()不再需要(。你可以去像这样的网站了解更多信息,也可以自己摆弄regex。

在第一个例子中,如果你说";我是一个人"机器人以";你好,人类,我是机器人"(使用以第二个参数开头的所有参数(。在第二个例子中,如果你说";我是一个人"机器人以";你好,我是机器人"(仅使用第二个参数(。

最新更新