Você está na página 1de 4

const Discord = require('discord.

js')
const { Database } = require('simpl.db');
const { ApplicationCommandType, ApplicationCommandOptionType, ChannelType } =
require('discord.js');
const config = require('../../config.json')
const { MessageEmbed, MessageActionRow, SelectMenuBuilder } =
require('discord.js');
const { ActionRowBuilder, EmbedBuilder } = require('@discordjs/builders');

module.exports = {
name: 'say',
type: ApplicationCommandType.ChatInput,
description: 'Faz com que o bot diga alguma mensagem.',
options: [
{
name: 'mensagem',
type: ApplicationCommandOptionType.String,
description: 'A mensagem que será enviada no canal.',
required: true
},
{
name: 'título',
type: ApplicationCommandOptionType.String,
description: 'A mensagem que será enviada no canal.',
required: true
},
{
name: 'cor',
type: ApplicationCommandOptionType.String,
description: 'Cores disponíveis: RED, BLUE, PURPLE, YELLOW,
ORANGE, GREEN, WHITE, BLACK.',
required: true
}
],

run: async (client, interaction, args) => {

let cor = interaction.options.getString('cor')


const cores = ["RED", "BLUE", "PURPLE", "YELLOW", "ORANGE", "GREEN",
"WHITE", "BLACK"]

let embedcores = new Discord.EmbedBuilder()


.setDescription(`> **Erro**\n\n> A cor que forneceu não é
**válida**`)
.setColor('FF3232')
.setThumbnail(interaction.guild.iconURL())
.setFooter({ text: interaction.guild.name})
.setTimestamp(new Date())

if (!cores.some(c => cor === c)){ return interaction.followUp({embeds:


[embedcores], components: [] })}

switch(cor) {
case "RED":
cor = 'FF3232'
break

case "GREEN":
cor = '75FF54'

break

case "BLUE":
cor = '30D0FF'

break

case "PURPLE":
cor = 'B706A9'

break

case "YELLOW":
cor = 'E8FF00'

break

case "ORANGE":
cor = 'FF7D10'

break

case "WHITE":
cor = 'FFFFFF'

break

case "BLACK":
cor = '000000'

break

if (!interaction.member.permissions.has('ManageMessages')) return
interaction.followUp({ content: 'Você não possui permissão para usar este
comando :c', ephemeral: true })

const channels = interaction.guild.channels.cache

let embedcanais = new Discord.EmbedBuilder()


.setDescription(`> **Erro**\n\n> Não consigo enviar a **mensagem**
em nenhum dos canais do **servidor**.`)
.setColor('FF3232')
.setThumbnail(interaction.guild.iconURL())
.setFooter({ text: interaction.guild.name})
.setTimestamp(new Date())

if (!channels.size) return interaction.followUp({ embeds:


[embedcanais], components: [], ephemeral: true })
const actionRow = new ActionRowBuilder()
.addComponents([
new SelectMenuBuilder()
.setCustomId('channelSelect')
.setPlaceholder('Selecione um canal')
.addOptions(
channels
.map(c => {
return {
label: c.name,
value: c.id
}
})
)
])

const reply = await interaction.followUp({content: '**Selecione abaixo o


canal onde deseja enviar a mensagem**',components: [actionRow]})

const filter = (i) => i.user.id === interaction.user.id


const collector = reply.createMessageComponentCollector({ filter, max: 1,
time: (3 * 60000) })

collector.on('collect', (i) => {


const idCanal = i.values[0]

const categoria1 = client.channels.cache.get(idCanal);

let embedcanal = new Discord.EmbedBuilder()


.setColor('FF3232')
.setDescription(`**Erro**\n\n> O **canal** fornecido não é válido\n\n>
**Canal** fornecido: **<#${idCanal}>**`)

if (categoria1.type !== ChannelType.GuildText) return


interaction.followUp({embeds: [embedcanal]})

const canal = interaction.guild.channels.cache.get(idCanal)

const texto = interaction.options.getString('mensagem')


const titulo = interaction.options.getString('título')

const embed = new Discord.EmbedBuilder()


.setTitle(`> ${titulo}`)
.setDescription(`> ${texto}`)
.setColor(cor)
.setThumbnail(interaction.guild.iconURL())
.setFooter({ text: interaction.guild.name})
.setTimestamp(new Date())

const embed1 = new Discord.EmbedBuilder()


.setDescription(`> **Erro**\n\n> Ocorreu um **erro** ao tentar
enviar a **mensagem**`)
.setColor('FF3232')
.setThumbnail(interaction.guild.iconURL())
.setFooter({ text: interaction.guild.name})
.setTimestamp(new Date())
const embed2 = new Discord.EmbedBuilder()
.setDescription(`> **Mensagem**\n\n> Mensagem enviada com
**sucesso** no canal ${canal.toString()}`)
.setColor('75FF54')
.setThumbnail(interaction.guild.iconURL())
.setFooter({ text: interaction.guild.name})
.setTimestamp(new Date())

canal.send({ embeds: [embed] })


.then(() => interaction.editReply({ embeds: [embed2], components:
[] }))
.catch(() => interaction.editReply({ embeds: [embed1], components:
[] }))
})

const embed3 = new Discord.EmbedBuilder()


.setDescription(`> **Erro**\n\n> O tempo para **informar** o canal
se **esgotou**`)
.setColor('FF3232')
.setThumbnail(interaction.guild.iconURL())
.setFooter({ text: interaction.guild.name})
.setTimestamp(new Date())

collector.on('end', (collected, reason) => {


if (reason === 'time') interaction.editReply({ embeds: [embed3],
components: [] })
})
}
}

Você também pode gostar