【问题标题】:How do I check for a keyword in a MessageEmbed?如何检查 MessageEmbed 中的关键字?
【发布时间】:2020-09-25 23:49:04
【问题描述】:

我有一个在消息嵌入的所有文本中查找关键字的函数:我知道要做到这一点还有很长的路要走,但否则我不知道如何完成同样的事情。

我从有关该主题的另一篇文章中获得了此功能,但我收到此错误,如果我不能。还有其他方法可以从嵌入中获取数据吗?

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

【问题讨论】:

    标签: javascript discord.js embed


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!这解决了这个问题,但现在我收到了TypeError: embed.footer.includes is not a function 我在 discord.js@11.4.2 有什么办法可以解决这个问题?
    猜你喜欢
    • 1970-01-01
    • 2023-02-22
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    相关资源
    最近更新 更多