【问题标题】:discord.js: ReferenceError: embed is not defineddiscord.js:ReferenceError:嵌入未定义
【发布时间】:2021-07-03 06:22:40
【问题描述】:
const { checkUrl } = require("check-url");
const Discord = require("discord.js");


module.exports = async (bot, client) => {
  console.log("Successfully logged in!");
const ok = function ok(res) {
    if(res.ok == false) {
const embed = new Discord.MessageEmbed()
        .setAuthor("Ramnet Status", bot.user.displayAvatarURL())
        .setColor("#7289da")
        .setThumbnail(bot.user.displayAvatarURL())
        .setFooter("Last Updated")
        .setTimestamp()
        if(res.ok == false) {
          embed.setDescription(`- Bot: <:offline:825589358270349374> Offline\n- Dashboard: :offline: Offline\n- Modmail (Support System): <:offline:825589414628950046> Offline`)
          embed.setFooter(`yes`)
        } else {
          embed.setDescription(`- Bot: :online: Online\n- Dashboard: <:offline:825589414628950046> Online\n- Modmail (Support System): <:offline:825589414628950046> Online`)
        }
    }
  }

// wrap the code below in a setInterval function so it runs every 30 seconds or so
setInterval (function () {
  checkUrl('https://mUdollar1cB0t.bencofficial.repl.co')
    .then((res) => ok(res))
    .catch((err) => console.error(err.message));
    bot.channels.cache.get('825589791441420361').send(embed);
            }, 1 * 30000); 

  };

bot.channels.cache.get('825589791441420361').send(embed);这就是问题所在

ReferenceError: 嵌入未定义 你能帮我吗,这对我来说很难,我想启动并运行它

【问题讨论】:

  • const 是块作用域,所以它只在if(res.ok == false) {} 中可用。我也不知道你为什么要在if (res.ok == false)里面查看if (res.ok == false)
  • 在区间内外使用console.log(embed)检查您的嵌入。

标签: node.js discord.js


【解决方案1】:

您在函数中使用了 embed as const。它必须在函数之外。

试试这个:

module.exports = async (bot, client) => {
  console.log("Successfully logged in!");

  const embed = new Discord.MessageEmbed();
  const ok = function ok(res) {
    if(res.ok == false) {
      embed 
        .setAuthor("Ramnet Status", bot.user.displayAvatarURL())
        .setColor("#7289da")
        .setThumbnail(bot.user.displayAvatarURL())
        .setFooter("Last Updated")
        .setTimestamp()
        if(res.ok == false) {
          embed.setDescription(`- Bot: <:offline:825589358270349374> Offline\n- Dashboard: :offline: Offline\n- Modmail (Support System): <:offline:825589414628950046> Offline`)
          embed.setFooter(`yes`)
        } else {
          embed.setDescription(`- Bot: :online: Online\n- Dashboard: <:offline:825589414628950046> Online\n- Modmail (Support System): <:offline:825589414628950046> Online`)
        }
    }
  }

// wrap the code below in a setInterval function so it runs every 30 seconds or so
     setInterval (function () {
       checkUrl('https://mUdollar1cB0t.bencofficial.repl.co')
         .then((res) => ok(res))
         .catch((err) => console.error(err.message));
       bot.channels.cache.get('825589791441420361').send(embed);
     }, 1 * 30000); 
  };

【讨论】:

    【解决方案2】:

    这是因为您在函数内部定义了embed 变量并尝试在函数外部使用它。一个快速的解决方案是从函数中返回embed,并添加一个额外的.then() 方法来接收它,这样您就可以安全地调用.send(embed)。查看下面的示例(我还修复了您的 ok 函数):

    const { checkUrl } = require('check-url');
    const Discord = require('discord.js');
    
    module.exports = async (bot, client) => {
      console.log('Successfully logged in!');
    
      function isResOK(res) {
        const embed = new Discord.MessageEmbed()
          .setAuthor('Ramnet Status', bot.user.displayAvatarURL())
          .setColor('#7289da')
          .setThumbnail(bot.user.displayAvatarURL())
          .setFooter('Last Updated')
          .setTimestamp();
    
        return res.ok
          ? embed
            .setDescription(`- Bot: :online: Online\n- Dashboard: <:offline:825589414628950046> Online\n- Modmail (Support System): <:offline:825589414628950046> Online`)
          : embed
            .setDescription(`- Bot: <:offline:825589358270349374> Offline\n- Dashboard: :offline: Offline\n- Modmail (Support System): <:offline:825589414628950046> Offline`)
            .setFooter(`yes`);
      }
    
      // wrap the code below in a setInterval function so it runs every 30 seconds or so
      setInterval(function () {
        checkUrl('https://mUdollar1cB0t.bencofficial.repl.co')
          .then((res) => isResOK(res))
          .then((embed) => bot.channels.cache.get('825589791441420361').send(embed))
          .catch((err) => console.error(err.message));
      }, 1 * 30000);
    };
    

    【讨论】:

      猜你喜欢
      • 2020-11-15
      • 2020-09-11
      • 2013-03-12
      • 2013-03-20
      • 2022-06-14
      • 2012-06-17
      • 1970-01-01
      • 2015-04-03
      • 2011-06-13
      相关资源
      最近更新 更多