我该如何制作它,以便我可以调用嵌入到另一个文件并将其发布?

Posted

技术标签:

【中文标题】我该如何制作它,以便我可以调用嵌入到另一个文件并将其发布?【英文标题】:How do I make it so I can call an embed to another file and post it as such? 【发布时间】:2021-04-08 13:55:54 【问题描述】:

这是我的 index.js: (bot > index) 索引是主文件。这不是我要问的主要焦点,但也许错误可能源于这里。

const Discord = require("discord.js");
const fs = require("fs");

const prefix = "$";
const client = new Discord.Client();

client.commands = new Discord.Collection();

const commandFiles = fs
  .readdirSync("./commands/")
  .filter((file) => file.endsWith(".js"));

for (const file of commandFiles) 
  const command = require(`./commands/$file`);

  client.commands.set(command.name, command);


client.once("ready", () => 
  console.log("This bot is online!");
);

client.on("message", (message) => 
  if (!message.content.startsWith(prefix) || message.author.bot) 
    return;
  

  // Destructure the first word from message.content, leave the rest as an array
  const [commandName, ...args] = message.content
    .slice(prefix.length)
    .split(/ +/);


  const command = client.commands.get(commandName.toLowerCase());

  if (!command) 
    return; // do something
  

  command.execute(message, args);
);

client.login("token")

;

这是我的 effect.js:(bot > commands > effect)这通常是错误代码的来源。这更像是一个专门用于口袋妖怪效果的命令子文件夹。这特别给了我最难实现的目标,因为我不知道如何将代码发送到另一个文件中,同时也不会使它变得狭窄。我的目标很简单:让嵌入消息没有垃圾代码。

//REMINDER: PREFIX IS $
  //RESET BOT TERMINAL CODE: NODE .

module.exports = 
  name: "effect",
  description: "Information on Pokemon!",
  execute(message, args) 
    // args[0] would be the second word from message.content
    // You should check if they used the command the right way
    // $effect some-type would make args[0] some-type
    var command = args[0]
    var channel = 0x792853588388872202

//POKEMON TYPE -- FAIRY
    if(command === 'fairy')
      message.channel.send(embed: fairyEmbed);
      
//POKEMON TYPE -- FIGHTING
    if(command === 'fighting')
      channel.send(fightingEmbed);
    
//POKEMON TYPE -- STEEL
    if(command === 'steel')
      channel.send(steelEmbed);
      
//POKEMON TYPE -- DARK
    if(command === 'dark')
      channel.send(darkEmbed);
      
//POKEMON TYPE -- DRAGON
    if(command === 'dragon')
      channel.send(dragonEmbed);
      
//POKEMON TYPE -- GHOST
    if(command === 'ghost')
      channel.send(ghostEmbed);
    
//POKEMON TYPE -- PSYCHIC
    if(command === 'psychic')
     channel.send(psychicEmbed);
    
//POKEMON TYPE -- ROCK
    if(command === 'rock')
      channel.send(rockEmbed);
    
//POKEMON TYPE -- BUG
    if(command === 'bug')
      channel.send(bugEmbed);
    
//POKEMON TYPE -- FLYING
    if(command === 'flying')
      channel.send(flyingEmbed);
    
//POKEMON TYPE -- GROUND
    if(command === 'ground')
      channel.send(groundEmbed);
    
//POKEMON TYPE -- POISON
    if(command === 'poison')
      channel.send(poisonEmbed);
    
//POKEMON TYPE -- ICE
    if(command === 'ice')
      channel.send(ice);
    
//POKEMON TYPE -- GRASS
    if(command === 'grass')
      channel.send(grassEmbed);
    
//POKEMON TYPE -- ELECTRIC
    if(command === 'electric')
      channel.send(electricEmbed);
    
//POKEMON TYPE -- WATER
    if(command === 'water')
      channel.send(waterEmbed);
    
//POKEMON TYPE -- FIRE
    if(command === 'fire')
      channel.send(fireEmbed);
    
//POKEMON TYPE -- NORMAL
    if(command === 'normal')
      channel.send(normalEmbed);
    
//POKEMON TYPE -- ALL
    if(command === 'all')
      channel.send(allEmbed);
    
  ,
;

这是我的 effect-embed.js:(与 effect.js 相同)也就是问题 #2。这是嵌入本身所在的位置。我不知道如何在不复制和粘贴的情况下转移它们,所以我在这里。

// inside a command, event listener, etc.
const Discord = require("discord.js");

const fairyEmbed = new Discord.MessageEmbed()
    .setColor('#dd525d')
    .setTitle('Fairy')
    .setURL('https://youtu.be/0K6qBmnRizU')
    .setDescription('Fairy types are too cutesy for my preference. They’re weak to Poison and Steel type and Fire, Steel and Poison types resist their attacks. But they do a lot of damage to Dark, Fighting and Dragon types. Dragon type attacks don’t effect them at all, so they’re good in that department.')
    .setThumbnail('https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.zedge.net%2Fwallpaper%2F23b8d5ed-9f57-39e7-b27c-ffd2df026702&psig=AOvVaw3xIwv-YzXf8AuUEaTGfBp4&ust=1609622014464000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCKDrk7TT--0CFQAAAAAdAAAAABAJ')
    .setImage('https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.pinterest.com%2Fpin%2F627055948095995745%2F&psig=AOvVaw1Vu5xwOk0k9tBEJ9Yclz2F&ust=1609622152653000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCICQ3vXT--0CFQAAAAAdAAAAABAD')
message.channel.send(embed: fairyEmbed);

const fightingEmbed = new Discord.MessageEmbed()
    .setColor('#61dde6')
    .setTitle('Fighting')
    .setURL('https://youtu.be/FJgRlbjzsrs')
    .setDescription('Fighting types are very resilient. Their attacks are super effective against Rock, Steel, Dark, Normal and Ice types and they resist Dark, Rock and Bug type attacks. Fighting type attacks won’t do well against Flying, Psychic, Fairy, Poison or Bug types and they won’t do anything to Ghost types and they’re very weak to Fairy, Psychic and Flying type attacks.')
    .setThumbnail('https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.zedge.net%2Fwallpaper%2F23b8d5ed-9f57-39e7-b27c-ffd2df026702&psig=AOvVaw3xIwv-YzXf8AuUEaTGfBp4&ust=1609622014464000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCKDrk7TT--0CFQAAAAAdAAAAABAJ')
    .setImage('https://www.google.com/url?sa=i&url=https%3A%2F%2Fpokemon.fandom.com%2Fwiki%2FZamazenta_(anime)&psig=AOvVaw1b8V8kCknIyef2c_zxuFjV&ust=1609622421791000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCJCsvPXU--0CFQAAAAAdAAAAABAM')

const steelEmbed = new Discord.MessageEmbed()
    .setColor('#ba2838')
    .setTitle('Steel')
    .setURL('https://youtu.be/I_57ptO3TKc')
    .setDescription('Steel types are the prime definition of defense with an amazing resistance to Normal, Grass, Ice, Flying, Psychic, Bug, Rock, Dragon, Steel and Fairy type attacks and are immune to Poison attacks. They’ll do immense damage to Rock, Fairy and Ice types. If they get hit by Fire, Ground or Fighting type attacks, they’ll be greatly damaged and they don’t do much to Water, Fire, Electric or other Steel types.')
    .setThumbnail('https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.zedge.net%2Fwallpaper%2F23b8d5ed-9f57-39e7-b27c-ffd2df026702&psig=AOvVaw3xIwv-YzXf8AuUEaTGfBp4&ust=1609622014464000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCKDrk7TT--0CFQAAAAAdAAAAABAJ')
    .setImage('https://www.google.com/url?sa=i&url=https%3A%2F%2Fpokemongohub.net%2Fpost%2Fguide%2Fdialga-heat-map%2F&psig=AOvVaw3l68mb5ltZZZusGgHSGLTd&ust=1609622768057000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCKjLpZ_W--0CFQAAAAAdAAAAABAV')

const darkEmbed = new Discord.MessageEmbed()
    .setColor('#3a4c7b')
    .setTitle('Dark')
    .setURL('https://youtu.be/0K6qBmnRizU')
    .setDescription('Dark type Pokémon are masters of the night and dirty, underhanded tactics. They’re very strong against Psychic and Ghost and resist Dark and Ghost type attacks. Psychic type attacks don’t stand a chance due to their immunity. It’s best to avoid putting them against Fighting, Fairy and Bug type attacks because of their weakness and they won’t do as much damage against Dark, Fighting and Fairy type Pokémon. Either way you slice it, Dark type Pokémon are very strong. Spikemuth’s gym is a prime example of that.')
    .setThumbnail('https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.zedge.net%2Fwallpaper%2F23b8d5ed-9f57-39e7-b27c-ffd2df026702&psig=AOvVaw3xIwv-YzXf8AuUEaTGfBp4&ust=1609622014464000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCKDrk7TT--0CFQAAAAAdAAAAABAJ')
    .setImage('https://www.google.com/url?sa=i&url=https%3A%2F%2Fbulbapedia.bulbagarden.net%2Fwiki%2FYveltal_(Pok%25C3%25A9mon)&psig=AOvVaw01HxoY93uTikkUD-yDrdJU&ust=1609623455517000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCIDG2OLY--0CFQAAAAAdAAAAABAD')

const dragonEmbed = new Discord.MessageEmbed()
    .setColor('#352822')
    .setTitle('Dragon')
    .setURL('https://youtu.be/8lrMjcNJGfE')
    .setDescription('Dragon types are very rare and thought to be a mystical type. If you want to stop them in their tracks, use Fairy, Ice or Dragon type moves against them. Dragon types resist Fire, Water, Grass and Electric type attacks and Dragon Type attacks are only strong against themselves but have a wide variety of attacks. Dragons type moves don’t do much to Steel types and Fairy types are completely immune to their attacks. My bro said Raihan was infamous for completely demolishing trainers with his overwhelming dragons, so I’d watch your choices around them.')
    .setThumbnail('https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.zedge.net%2Fwallpaper%2F23b8d5ed-9f57-39e7-b27c-ffd2df026702&psig=AOvVaw3xIwv-YzXf8AuUEaTGfBp4&ust=1609622014464000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCKDrk7TT--0CFQAAAAAdAAAAABAJ')
    .setImage('https://www.google.com/url?sa=i&url=https%3A%2F%2Fbleedingcool.com%2Fgames%2Frayquaza-raid-guide-how-to-catch-a-shiny-rayquaza-in-pokemon-go%2F&psig=AOvVaw02L1u59NkP3kqQSp5xAJKB&ust=1609623775222000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCIiX9PvZ--0CFQAAAAAdAAAAABAD')

const ghostEmbed = new Discord.MessageEmbed()
    .setColor('#352822')
    .setTitle('Dragon')
    .setURL('https://youtu.be/8lrMjcNJGfE')
    .setDescription('Dragon types are very rare and thought to be a mystical type. If you want to stop them in their tracks, use Fairy, Ice or Dragon type moves against them. Dragon types resist Fire, Water, Grass and Electric type attacks and Dragon Type attacks are only strong against themselves but have a wide variety of attacks. Dragons type moves don’t do much to Steel types and Fairy types are completely immune to their attacks. My bro said Raihan was infamous for completely demolishing trainers with his overwhelming dragons, so I’d watch your choices around them.')
    .setThumbnail('https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.zedge.net%2Fwallpaper%2F23b8d5ed-9f57-39e7-b27c-ffd2df026702&psig=AOvVaw3xIwv-YzXf8AuUEaTGfBp4&ust=1609622014464000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCKDrk7TT--0CFQAAAAAdAAAAABAJ')
    .setImage('https://www.google.com/url?sa=i&url=https%3A%2F%2Fbleedingcool.com%2Fgames%2Frayquaza-raid-guide-how-to-catch-a-shiny-rayquaza-in-pokemon-go%2F&psig=AOvVaw02L1u59NkP3kqQSp5xAJKB&ust=1609623775222000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCIiX9PvZ--0CFQAAAAAdAAAAABAD')

【问题讨论】:

【参考方案1】:

您需要对每个嵌入进行 module.exports。我给你举个例子:

module.exports = darkEmbed;

然后您将在其他文件中导入 darkEmbed。

const  darkEmbed  = require("file")

存在 是因为嵌入文件中有多个对象。

【讨论】:

我这样做了,但是每当我输入包含“./”的文件名时,我都会收到一条错误消息,提示找不到模块。我尝试用谷歌搜索错误,但显示的只是目录错误,但是我检查了多次,我知道我没有。然后它说我需要安装它还是什么?我想把它保存到另一个地方。我也这样做了,但没有任何反应。 你应该看看this包然后。【参考方案2】:

您可以在effect-embeds.js 文件中使用module.exports,并在effect.js 文件中使用它。

例如

// effect-embeds.js

module.exports.effect = new Discord.MessageEmbed()
    //embed information

// Compared to (DO NOT DO)
const effect = new Discord.MessageEmbed()
    //embed information

然后在你的其他文件中...

// effect.js 
const  effect  = require("./effect.embeds.js"); // Change the file import based on where it is located

channel.send(effect);

另外,不要一遍又一遍地使用if 语句

if(...) 
  //code

使用switch

switch(command) 
   case '...':
      // code
   break;

【讨论】:

以上是关于我该如何制作它,以便我可以调用嵌入到另一个文件并将其发布?的主要内容,如果未能解决你的问题,请参考以下文章

如何制作一个侦听消息并将它们发送到另一台服务器的机器人?

如何在括号中修复我的 YouTube 嵌入式代码,以便实时预览能够正常工作?

如何在 Discord Py 中将列表附加并保存到另一个文件中?

如何在 MIDI 文件中嵌入控制更改命令

将一个 dll 作为嵌入式资源嵌入到另一个 dll 中,然后从我的代码中调用它

如何将 XIB 复制到另一个项目?