【问题标题】:detect words inside embed fields检测嵌入字段中的单词
【发布时间】:2020-07-15 17:35:33
【问题描述】:

我目前正在编写一个不和谐机器人。 该机器人的任务是检测嵌入中的用户名和单词,从而为特定用户提供硬币。 嵌入将由 DISBOARD 机器人发送,但目前,我自己的另一个机器人正在发送模板。 我找到并适用于我的机器人的唯一代码仅适用于标题,但不适用于 field.name,也不适用于 field.value。

    if(message.content.toLowerCase().includes('undefined'))
message.channel.send("checked!");
else {
    for(var i = 0; i < message.embeds.length; i++) {
        if(message.embeds[i].title.includes("Test") || message.embeds[i].title.includes("Test")) {
            message.channel.send("checked!");
            break;
        }
    }
}

我尝试将此代码转换为 embed.field 和 embed.value,但我只收到错误消息。

有谁知道哪种方法最能保存玩家的余额? 有人知道这件事并可以帮助我吗?

谢谢!

【问题讨论】:

  • 你好。为了进一步帮助您,您介意将错误消息添加到您的帖子中吗?
  • embed.field 不是一个东西。 embed.fields 是一个数组,您必须搜索每个数组。你有一个循环,你需要一个内部循环来迭代每个字段。

标签: javascript discord discord.js


【解决方案1】:

正如 Tarazed 所说:embed.fields 是一个字段数组,其中包含一个 .name 和一个 .value 作为您可以搜索的文本。请尝试以下操作:

if(message.content.toLowerCase().includes('undefined')) message.channel.send("undefined check!");
else {
    var sent = false;
    for(var i = 0; i < message.embeds.length; i++) {
        if(message.embeds[i].title.toLowerCase().includes("test")) {
            message.channel.send("checked!");
            break;
        } else{
            for(var j = 0;j < message.embeds[i].fields.length;j++){
                if(message.embeds[i].fields[j].name.toLowerCase().includes("test") || message.embeds[i].fields[j].value.toLowerCase().includes("test")){
                  message.channel.send("checked!");
                  sent = true;
                  break;
                }
            }
            if(sent) break;
        }
    }
}

【讨论】:

  • 你好!谢谢您的回答。我尝试了代码,但它不起作用。我没有收到错误消息,但它没有发送消息作为响应。我的嵌入构建如下:switch(args[0]){ case 'embed': const embed = new Discord.MessageEmbed() .setTitle('Test Embed') .addField('test', 'example') .setColor(0xB73BEA) message.channel.send(embed); break; 我用示例和测试调整了您的代码,但它根本不起作用。它只是说一次检查!因为工作测试作为标题行。
  • 所以首先。我不知道为什么检查 .title 的第一个 if 语句没有运行。请添加console.log(message.embeds[0]) 以查看它是否确实看到了正确的嵌入。或者,如果它正在注册不同的消息。 message 可能未设置为包含嵌入的消息。我还更新了代码以在其中包含.toLowerCase()
猜你喜欢
  • 1970-01-01
  • 2012-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-23
  • 2019-03-03
  • 1970-01-01
相关资源
最近更新 更多