Как сделать команду объявления редактирования в Discord. js - PullRequest
0 голосов
/ 04 августа 2020

У меня есть команда объявления, которая помогает пользователям Discord отправлять пользовательские вставки, но я хочу сделать команду объявления редактирования, которая поможет пользователям редактировать вставку, отправленную ими с помощью этого идентификатора сообщения. Мой код объявления прилагается ниже, пожалуйста, расскажите мне, как сделать команду объявления редактирования.

const Discord = require('discord.js');



module.exports = {
    name: "announce",
    category: "Moderation",
    aliases: ["announcement", "broadcast"],
    description: "Announce a embedded message",
    async run(client, message, args) {

        if(!message.member.hasPermission("MANAGE_MESSAGES")) return message.channel.send('You can\'t use that!')
        if(!message.guild.me.hasPermission("MANAGE_MESSAGES")) return message.channel.send('I don\'t have the right permissions.')

        message.delete();
        let split = '|';

        if(!args[0]) {

            const invalid = new Discord.MessageEmbed()
            .setAuthor("Announce", client.user.displayAvatarURL({ format: "png", dynamic: true, size: 2048 }))
            .setColor("#eb0936")
            .setTitle("Invalid Argument")
            .setDescription("**USAGE**\n`announce <embedTitle>|<embedMessage>|<embedColor>|<embedThubmnail>|<embedImage>`\n\n**FOR MORE HELP**\n`helpannounce`")
            
            return message.channel.send({embed: invalid})
        }

        args = args.join(' ').split(split)

        for (var i = 0; i < args.length; i++) args[i].trim();

        if (args[5]) args[5] = parseInt(`0x${args[5]}`);    

        let options = {
            title: args[0] ,
            message: args[1] || 'Undefined',
            embedColor: args[2] || 0xffffff,
            thumbnail: args[3],
            image: args[4]
            
          


        }

        const embed =  new Discord.MessageEmbed()
            .setColor(options.embedColor)
            .setTitle(options.title)
            .setThumbnail(options.thumbnail)
            .setImage(options.image)
            
            
            
            if (options.message) embed.setDescription(options.message);
            

           message.channel.send(embed)



    }
}

1 Ответ

0 голосов
/ 04 августа 2020

Я создал команду editAnnounce:

const Discord = require('discord.js');

module.exports = {
  name: 'editAnnounce',
  category: 'Moderation',
  aliases: ['editAnnouncement', 'editBroadcast'],
  description: 'Edit an announcement',
  async run(client, message, args) {
    if (!args[0] || !(args[1] || args[2] || args[3] || args[4] || args[5])) {
      const invalid = new Discord.MessageEmbed()
        .setAuthor('Announce', client.user.displayAvatarURL({ format: 'png', dynamic: true, size: 2048 }))
        .setColor('#eb0936')
        .setTitle('Invalid Arguments')
        .setDescription('**USAGE**\n`announce <messageID> [embedTitle]|[embedMessage]|[embedColor]|[embedThumbnail]|[embedImage]`\n*leaving a field blank will result in that field remaining unmodified.*');

      return message.reply(invalid);
    }

    message.delete();

    const msg = await message.channel.messages.fetch(args[0]);
    if (!msg) return message.reply('the specified message could not be found.');
    if (!msg.embeds[0]) return message.reply('the specified message does not contain an embed.');

    const oldFields = msg.embeds[0];
    const fields = args.slice(1).join(' ').split('|').map(arg => arg.trim());

    let embed = new Discord.MessageEmbed();

    if (fields[0] || oldFields.title) embed.setTitle(fields[0] || oldFields.title);
    if (fields[1] || oldFields.description) embed.setDescription(fields[1] || oldFields.description);
    if (fields[2] || oldFields.color) embed.setColor(fields[2] || oldFields.color);
    if (fields[3] || oldFields.thumbnail && oldFields.thumbnail.url) embed.setThumbnail(fields[3] || oldFields.thumbnail.url);
    if (fields[4] || oldFields.image && oldFields.image.url) embed.setImage(fields[4] || oldFields.image.url);

    msg.edit(embed);
  }
};
...