2018-12-30 01:20:24 +01:00
const { Command } = require ( 'discord-akairo' ) ;
2019-11-25 21:53:19 +01:00
const { MessageEmbed } = require ( 'discord.js' ) ;
2019-02-08 18:59:02 +01:00
const rand = require ( '../../rand.js' ) ;
2018-12-05 00:52:21 +01:00
2018-12-30 01:20:24 +01:00
class SayCommand extends Command {
2019-01-02 08:09:45 +01:00
constructor ( ) {
super ( 'say' , {
2019-11-25 21:53:19 +01:00
aliases : [ 'say' , 'sayd' ] ,
2019-01-02 08:09:45 +01:00
category : 'general' ,
2019-11-30 19:06:11 +01:00
clientPermissions : [ 'SEND_MESSAGES' ] ,
2019-01-02 08:09:45 +01:00
args : [
{
id : 'text' ,
type : 'string' ,
2019-06-23 03:41:59 +02:00
prompt : {
start : 'Write something so i can say it back' ,
} ,
2019-01-10 20:45:29 +01:00
match : 'rest'
2019-01-02 08:09:45 +01:00
}
] ,
description : {
2019-11-25 21:53:19 +01:00
content : 'Repeat what you say, (Use sayd to delete your message) [Click here to see the complete list of "tag"](https://cdn.discordapp.com/attachments/502198809355354133/561043193949585418/unknown.png)' ,
2019-01-02 08:09:45 +01:00
usage : '[text]' ,
2019-04-06 18:53:40 +02:00
examples : [ '[member] is a big [adverbs] [verbs]' ]
2019-01-02 08:09:45 +01:00
}
} ) ;
}
2018-09-18 15:35:06 +02:00
2019-01-02 08:09:45 +01:00
async exec ( message , args ) {
let text = args . text ;
2019-01-02 18:45:53 +01:00
if ( ! text )
return ;
2018-11-28 20:27:29 +01:00
2019-05-08 22:57:00 +02:00
text = rand . random ( text , message ) ;
let attach = '' ;
2019-05-09 21:29:35 +02:00
if ( text . includes ( '[attach:' ) ) {
2019-05-08 22:57:00 +02:00
attach = text . split ( /(\[attach:.*?])/ ) ;
for ( let i = 0 , l = attach . length ; i < l ; i ++ ) {
if ( attach [ i ] . includes ( '[attach:' ) ) {
attach = attach [ i ] . replace ( '[attach:' , '' ) . slice ( 0 , - 1 ) ;
i = attach . length ;
}
}
2019-05-09 21:29:35 +02:00
text = text . replace ( /(\[attach:.*?])/ , '' ) ;
2019-05-08 22:57:00 +02:00
}
// THIS SECTION IS VERY VERY BAD MUST CHANGE
if ( text . includes ( '[embed]' ) ) {
text = text . replace ( /\[embed\]/ , ' ' ) ;
let title = '' ;
let desc = '' ;
let image ;
let thumbnail ;
let footer = '' ;
let color ;
if ( text . includes ( '[embedImage:' ) ) {
image = text . split ( /(\[embedImage:.*?])/ ) ;
for ( let i = 0 , l = image . length ; i < l ; i ++ ) {
if ( image [ i ] . includes ( '[embedImage:' ) ) {
image = image [ i ] . replace ( '[embedImage:' , '' ) . slice ( 0 , - 1 ) ;
text = text . replace ( /(\[embedimage:.*?])/g , '' ) ;
i = image . length ;
}
}
}
if ( text . includes ( '[embedThumbnail:' ) ) {
thumbnail = text . split ( /(\[embedThumbnail:.*?])/ ) ;
for ( let i = 0 , l = thumbnail . length ; i < l ; i ++ ) {
if ( thumbnail [ i ] . includes ( '[embedThumbnail:' ) ) {
thumbnail = thumbnail [ i ] . replace ( '[embedThumbnail:' , '' ) . slice ( 0 , - 1 ) ;
text = text . replace ( /(\[embedThumbnail:.*?])/g , '' ) ;
i = thumbnail . length ;
}
}
}
if ( text . includes ( '[embedColor:' ) ) {
color = text . split ( /(\[embedColor:.*?])/ ) ;
for ( let i = 0 , l = color . length ; i < l ; i ++ ) {
if ( color [ i ] . includes ( '[embedColor:' ) ) {
color = color [ i ] . replace ( '[embedColor:' , '' ) . slice ( 0 , - 1 ) ;
text = text . replace ( /(\[embedColor:.*?])/g , '' ) ;
i = color . length ;
}
}
}
if ( text . includes ( '[embedTitle:' ) ) {
title = text . split ( /(\[embedTitle:.*?])/ ) ;
for ( let i = 0 , l = title . length ; i < l ; i ++ ) {
if ( title [ i ] . includes ( '[embedTitle:' ) ) {
title = title [ i ] . replace ( '[embedTitle:' , '' ) . slice ( 0 , - 1 ) ;
text = text . replace ( /(\[embedTitle:.*?])/g , '' ) ;
i = title . length ;
}
}
}
if ( text . includes ( '[embedFooter:' ) ) {
footer = text . split ( /(\[embedFooter:.*?])/ ) ;
for ( let i = 0 , l = footer . length ; i < l ; i ++ ) {
if ( footer [ i ] . includes ( '[embedFooter:' ) ) {
footer = footer [ i ] . replace ( '[embedFooter:' , '' ) . slice ( 0 , - 1 ) ;
text = text . replace ( /(\[embedFooter:.*?])/g , '' ) ;
i = footer . length ;
}
}
}
if ( text . includes ( '[embedDesc:' ) ) {
desc = text . split ( /(\[embedDesc:.*?])/ ) ;
for ( let i = 0 , l = desc . length ; i < l ; i ++ ) {
if ( desc [ i ] . includes ( '[embedDesc:' ) ) {
desc = desc [ i ] . replace ( '[embedDesc:' , '' ) . slice ( 0 , - 1 ) ;
i = desc . length ;
}
}
}
2019-11-25 21:53:19 +01:00
const embed = new MessageEmbed ( )
2019-05-08 22:57:00 +02:00
. setColor ( color )
. setTitle ( title )
. setImage ( image )
. setThumbnail ( thumbnail )
. setDescription ( desc )
. setFooter ( footer )
. setTimestamp ( ) ;
if ( attach ) {
2019-07-11 00:31:15 +02:00
if ( args . delete )
message . delete ( ) ;
2019-05-08 22:57:00 +02:00
return message . channel . send ( embed , { files : [ attach ] } ) ;
} else {
2019-07-11 00:31:15 +02:00
if ( args . delete )
message . delete ( ) ;
2019-05-08 22:57:00 +02:00
return message . channel . send ( embed ) ;
}
}
2019-07-11 00:31:15 +02:00
2019-01-02 08:09:45 +01:00
// Send the final text
2019-05-08 22:57:00 +02:00
if ( attach ) {
2019-11-25 21:53:19 +01:00
if ( message . util . parsed . alias == 'sayd' )
2019-11-30 19:06:11 +01:00
if ( message . channel . permissionsFor ( this . client . user ) . has ( 'MANAGE_MESSAGES' ) )
message . delete ( ) ;
else
message . channel . send ( 'Im missing he `MANAGE_MESSAGES` perm to delete your message!' ) ;
2019-05-08 22:57:00 +02:00
return message . channel . send ( text , { files : [ attach ] } ) ;
} else {
2019-11-25 21:53:19 +01:00
if ( message . util . parsed . alias == 'sayd' )
2019-11-30 19:06:11 +01:00
if ( message . channel . permissionsFor ( this . client . user ) . has ( 'MANAGE_MESSAGES' ) )
message . delete ( ) ;
else
message . channel . send ( 'Im missing he `MANAGE_MESSAGES` perm to delete your message!' ) ;
2019-05-08 22:57:00 +02:00
return message . channel . send ( text ) ;
}
2019-01-02 08:09:45 +01:00
}
2018-12-30 01:20:24 +01:00
}
module . exports = SayCommand ;