我如何检查MessageEmbed中的关键字?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何检查MessageEmbed中的关键字?相关的知识,希望对你有一定的参考价值。

我有一个函数,可以在一个消息的所有嵌入文本中寻找一个关键字。我知道这是个很长的方法,但我不知道如何完成同样的事情。

我从这个主题的另一个帖子中得到了这个函数,但我得到了这个错误,如果我不能。有没有其他方法可以从嵌入中获取数据?

const Discord = require("discord.js");
const bot = new Discord.Client();
const config = require("./config.json")

function findInMessage(message, target, {
  caseSensitive = false,
  author = false,
  description = true,
  footer = true,
  title = true,
  fields = true
}) {
  if (!target || !message) return null;
  let str = caseSensitive ? target : target.toLowerCase();

  if ((caseSensitive && message.content.includes(str)) ||
    (!caseSensitive && message.content.toLowerCase().includes(str))) return true;

  for (let embed of message.embeds) {
    if ((caseSensitive && (
        (author && embed.author.includes(str)) ||
        (description && embed.description.includes(str)) ||
        (footer && embed.footer.includes(str)) ||
        (title && embed.title.includes(str)))) ||
      (!caseSensitive && (
        (author && embed.author.toLowerCase().includes(str)) ||
        (description && embed.description.toLowerCase().includes(str)) ||
        (footer && embed.footer.toLowerCase().includes(str)) ||
        (title && embed.title.toLowerCase().includes(str))))
    ) return true;

    if (fields)
      for (let field of embed.fields) {
        if ((caseSensitive && [field.name, field.value].includes(str)) ||
          (!caseSensitive && [field.name.toLowerCase(), field.value.toLowerCase()].includes(str))) return true;
      }
  }

  return false;
}

错误。

     caseSensitive = false,
    ^

TypeError: Cannot read property 'caseSensitive' of undefined
答案

函数本身似乎可以检查嵌入:唯一的问题是,它使用了一个没有默认值的可选参数的对象重构。这应该很容易解决,只需将选项设置为默认的 {} 值,所以如果你不输入,它将使用默认选项。你可以这样做。

function findInMessage(message, target, {
    caseSensitive = false,
    author = false,
    description = true,
    footer = true,
    title = true,
    fields = true
} = {}) { // The change is here, in the '= {}'
  // ...
}

以上是关于我如何检查MessageEmbed中的关键字?的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js - 在以下代码中更新 MessageEmbed

我可以使用 messageEmbed 退货吗?

错误:MessageEmbed 字段值可能不为空

MessageEmbed 字段值不能为空

类型错误; discord.js 中未定义的“MessageEmbed”

MessageEmbed:无法读取未定义的属性“客户端”