Haha-Yes/commands/general/say.js

161 lines
4.2 KiB
JavaScript
Raw Normal View History

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-25 21:53:19 +01:00
clientPermissions: ['SEND_MESSAGES', 'MANAGE_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]',
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) {
if (args.delete)
message.delete();
2019-05-08 22:57:00 +02:00
return message.channel.send(embed, {files: [attach]});
} else {
if (args.delete)
message.delete();
2019-05-08 22:57:00 +02:00
return message.channel.send(embed);
}
}
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')
message.delete();
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')
message.delete();
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;