Можно ли использовать команды Discord slash в качестве модуля?

#node.js #discord.js

Вопрос:

Во-первых, я новичок в node.js и discord.js.

В настоящее время я работаю над своим собственным ботом discord для развлечения, и мне было интересно, можно ли «хранить» данные команды косой черты. Вот пример того, что я имею в виду :

     const response = new Discord.MessageEmbed()
      .properties()
      .properties()
      etc...
    
    module.exports = () {
      const data = {
        data: {
          type: 4, // I don't know what type to use  for embed message so please correct me if I'm wrong
          data: {
            content: response
          }
        }
      }
    }
 

Возможно ли «сохранить» данные встроенного сообщения rules.js и использовать их main.js таким образом :

     const rules = require('rules.js') //the file would be in a "commands" folder but I'm keeping this simple

    client.ws.on('INTERACTION_CREATE', async (interaction) => {
      const command = interaction.data.name.toLowerCase()
      if (command === 'rules') {
        client.api.interactions(interaction.id, interaction.token).callback.post(data) // or post(rules.data) ??? again, I'm a beginner
      }
    })
 

Ответ №1:

Вы должны попытаться создать функцию вместо модуля сохранения и экспорта, потому что опасно использовать класс экземпляра как модуль, потому что это вызывает проблемы с памятью, поэтому напишите для этого фабрику

Ответ №2:

Вот кое-что, что вы можете попробовать:

 //file name: slashCmd.js
const Discord = require('discord.js')
module.exports = async function(client, cmdObj) {
     client.api.applications(client.user.id).commands.post(cmdObj)
}
 

Вы можете настроить функцию так, как вам хочется, но вы можете сделать это в своем index.js

 const slashCmd = require('./slashCmd.js');
const client = new Discord.Client()
client.on('ready', () => {
    slashCmd(client, {
        name: 'cmdName',
        description: 'cmdDesc'
    })
})
 

Комментарии:

1. Я попробую это сделать. Спасибо!