当前位置: 首页 > 知识库问答 >
问题:

discord.js检查一条消息中的多个单词

鄂伟兆
2023-03-14

我试图让我的机器人用一个词来回答多种不同的信息:

const bomba = new Discord.Client();
    
const a = "bomba" || "bomb" || "bob";
const b = "hey" || "sup" || "hello" || "hi";

bomba.on("message", message => {
    if (message.author == bomba.user) return;
    if (message.content.toLowerCase() === a + b) {
        bomba.channels.cache.get(`${message.channel.id}`).send("Hi!");
    };
});

我该怎么做?

共有2个答案

黄流觞
2023-03-14

您可以使用正则表达式和。match()函数根据几个单词检查消息内容。请看下面的代码并尝试一下:

const bomba = new Discord.Client();
    
const clientNames = ["bomba", "bomb", "bob"].join('|');
const greetings = ["hey", "sup", "hello", "hi"].join('|');

const regex = new RegExp(`^(${clientNames})\\s(${greetings})$`, 'gi');

bomba.on("message", message => {
    if (message.author == bomba.user) return;
    if (message.content.match(regex)) {
        bomba.channels.cache.get(`${message.channel.id}`).send("Hi!");
    }
});

有关正则表达式的更多信息,请查看此stackoverflow问题/答案

党建义
2023-03-14

您可以使用Array.includes()

if (["bomba", "bomb", "bob"].includes(message.content.toLowerCase())) {
    message.channel.send("Hi!");
};

请注意,最好按用户比较用户。id属性,而不是检查它们是否引用了与代码中相同的实例。

if (message.author.id == bomba.user.id) return;

关于==运算符的MDN文档:

如果两个操作数都是对象,则仅当两个操作数引用同一对象时,才返回true。

 类似资料:
  • 问题内容: 我在SQS中有多个消息。即使有数十个可见代码(不在运行中),以下代码也 始终 仅返回一个。 我认为setMaxNumberOfMessages允许一次使用多个..我误解了吗? 我也尝试使用withMaxNumberOfMessages,但没有任何运气: 我怎么知道队列中有消息?大于1? 上面的代码总是在运行之前给我> 1 感谢您的输入 问题答案: AWS API参考指南:Query /

  • 我试图在不和谐的情况下每隔x秒发送一条消息。js机器人。我知道如何做到这一点,但我遇到的问题是,即使我启用了slowmode,它也会发送垃圾邮件。我怎样才能解决这个问题?

  • 我正在创建一个嵌入,您可以通过响应在页面中导航。通过遵循一个教程,我想到了这一点,但问题是:当用户对它做出反应时,它会删除所有相同类型的反应(基本上,如果我使用❤️, 机器人消除了我和他们的反应,让⚙️ 是唯一可用的反应) 希望你能理解我的问题,我只是想让机器人消除我的反应,而不是全部。

  • 如何在一条消息中发送多个嵌入?像这样发送多个: 输出: 我找不到任何关于发送多个嵌入的文档,在discord.js文件中提到了它,发送了一个嵌入列表。虽然我试过这个,但它也不起作用。

  • 问题内容: 我一般只是开始使用RabbitMQ和AMQP。 我有一条消息队列 我有多个消费者,我想用 同一条消息 做不同的事情。 RabbitMQ的大多数文档似乎都集中在循环上,即单个消息由单个使用者使用,而负载则分散在每个使用者之间。我确实是这种行为。 例如:生产者只有一个队列,每2秒发送一次消息: 这是一个消费者: 如果我启动使用者两次,则 可以看到每个使用者都以循环方式使用替代消息。 例如,

  • 我见过很多不和谐的嵌入代码,比如: (这是一个老问题,我是新来的,所以…) 所以,我不明白的是什么是触发因素?就像你应该打字一样。乒乓球对吗?那么,我应该键入什么来获取我的bot类型呢?