diff --git a/event/listeners/message.js b/event/listeners/message.js index 93315a96..20d9786b 100644 --- a/event/listeners/message.js +++ b/event/listeners/message.js @@ -81,213 +81,215 @@ class messageListener extends Listener { */ // auto responses - const autoresponseStat = await autoResponseStat.findOne({where: {serverID: message.guild.id, stat: 'enable'}}); - if (autoresponseStat) { - // Infinit haha very yes - if (message.content.toLowerCase().startsWith('haha very') && message.content.toLowerCase().endsWith('yes')) { - let yes = message.content.toLowerCase().replace('haha', ''); - yes = yes.replace('yes', ''); - yes += 'very'; - return message.channel.send(`haha${yes} yes`); - } else if (message.content.toLowerCase() == 'haha yes') { - return message.channel.send('haha very yes'); + if (message.guild) { + const autoresponseStat = await autoResponseStat.findOne({where: {serverID: message.guild.id, stat: 'enable'}}); + if (autoresponseStat) { + // Infinit haha very yes + if (message.content.toLowerCase().startsWith('haha very') && message.content.toLowerCase().endsWith('yes')) { + let yes = message.content.toLowerCase().replace('haha', ''); + yes = yes.replace('yes', ''); + yes += 'very'; + return message.channel.send(`haha${yes} yes`); + } else if (message.content.toLowerCase() == 'haha yes') { + return message.channel.send('haha very yes'); + } + + // Reply with images as attachement + const autoresponse = await autoResponse.findOne({where: {trigger: message.content.toLowerCase()}}); + + if (autoresponse) { + autoResponse.findOne({where: {trigger: message.content.toLowerCase()}}); + let trigger = autoresponse.get('trigger'); + let type = autoresponse.get('type'); + let content = autoresponse.get('response'); + + if (trigger == message.content.toLowerCase() && type == 'text') { + return message.channel.send(content); + } else if (trigger == message.content.toLowerCase() && type == 'react') { + return message.react(content); + } else if (trigger == message.content.toLowerCase() && type == 'image') { + return message.channel.send({files: [content]}); + } + } } - // Reply with images as attachement - const autoresponse = await autoResponse.findOne({where: {trigger: message.content.toLowerCase()}}); - - if (autoresponse) { - autoResponse.findOne({where: {trigger: message.content.toLowerCase()}}); - let trigger = autoresponse.get('trigger'); - let type = autoresponse.get('type'); - let content = autoresponse.get('response'); - - if (trigger == message.content.toLowerCase() && type == 'text') { - return message.channel.send(content); - } else if (trigger == message.content.toLowerCase() && type == 'react') { - return message.react(content); - } else if (trigger == message.content.toLowerCase() && type == 'image') { - return message.channel.send({files: [content]}); + // User autoresponse + const tag = await Tag.findOne({where: {trigger: message.content.toLowerCase(), serverID: message.guild.id}}); + if (tag) { + Tag.findOne({where: {trigger: message.content.toLowerCase(), serverID: message.guild.id}}); + let text = tag.get('response'); + if (text.includes('[ban]')) { + message.member.ban('Tag ban :^)'); + } else if (text.includes('[kick]')) { + message.member.kick('Tag kick :^)'); + } else if (text.includes('[delete]')) { + message.delete(); } - } - } - // User autoresponse - const tag = await Tag.findOne({where: {trigger: message.content.toLowerCase(), serverID: message.guild.id}}); - if (tag) { - Tag.findOne({where: {trigger: message.content.toLowerCase(), serverID: message.guild.id}}); - let text = tag.get('response'); - if (text.includes('[ban]')) { - message.member.ban('Tag ban :^)'); - } else if (text.includes('[kick]')) { - message.member.kick('Tag kick :^)'); - } else if (text.includes('[delete]')) { - message.delete(); - } + text = rand.random(text, message); - text = rand.random(text, message); + let attach = ''; - let attach = ''; - - if (text.includes('[attach:')) { - 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; - } - } - text = text.replace(/(\[attach:.*?])/, ''); - } - - // 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('[attach:')) { + 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; } } + text = text.replace(/(\[attach:.*?])/, ''); } - if (text.includes('[embedThumbnail:')) { - thumbnail = text.split(/(\[embedThumbnail:.*?])/); + // THIS SECTION IS VERY VERY BAD MUST CHANGE + if (text.includes('[embed]')) { + text = text.replace(/\[embed\]/, ' '); - 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; + 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('[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('[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('[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('[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('[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('[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('[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; + 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; + } + } + } + + const embed = this.client.util.embed() + .setColor(color) + .setTitle(title) + .setImage(image) + .setThumbnail(thumbnail) + .setDescription(desc) + .setFooter(footer) + .setTimestamp(); + + + if (attach) { + return message.channel.send(embed, {files: [attach]}); + } else { + return message.channel.send(embed); + + } + } - - const embed = this.client.util.embed() - .setColor(color) - .setTitle(title) - .setImage(image) - .setThumbnail(thumbnail) - .setDescription(desc) - .setFooter(footer) - .setTimestamp(); - - if (attach) { - return message.channel.send(embed, {files: [attach]}); + return message.channel.send(text, {files: [attach]}); } else { - return message.channel.send(embed); - + return message.channel.send(text); } } - if (attach) { - return message.channel.send(text, {files: [attach]}); - } else { - return message.channel.send(text); + + /* Quotation feature + * + * This section will contain the code for the quotation feature, it will detect link for it and send it as embed + * + */ + const quotationstat = await quotationStat.findOne({where: {serverID: message.guild.id, stat: 'enable'}}); + + if (quotationstat && (message.content.includes('discordapp.com/channels/') || message.content.includes('discord.com/channels/'))) { + let url = message.content.split('/'); + let guildID = url[4]; + let channelID = url[5]; + let messageID = url[6].split(' ')[0]; + + + // Verify if the guild, channel and message exist + let guild = this.client.guilds.resolve(guildID); + if (!guild) return; + let channel = this.client.channels.resolve(channelID); + if (!channel) return; + let quote = await channel.messages.fetch(messageID) + .catch(() => { + return; + }); + if (!quote) return; + + let Embed = this.client.util.embed() + .setAuthor(quote.author.username, quote.author.displayAvatarURL()) + .setColor(message.member ? message.member.displayHexColor : 'NAVY') + .addField('Jump to', `[message](https://discordapp.com/channels/${message.guild.id}/${channelID}/${messageID})`, true) + .addField('In channel', quote.channel.name, true) + .addField('Quoted by', message.author, true) + .setDescription(quote.content) + .setTimestamp(quote.createdTimestamp); + + if (quote.member) Embed.setAuthor(`${quote.author.username}#${quote.author.discriminator}`, quote.author.displayAvatarURL()); + + if (quote.author.bot) Embed.setAuthor(`${quote.author.username}#${quote.author.discriminator} (bot)`, quote.author.displayAvatarURL()); + + if (guild.id != message.guild.id) Embed.addField('In guild', guild.name, true); + let Attachment = (quote.attachments).array(); + if (Attachment[0]) Embed.setImage(Attachment[0].url); + + return message.channel.send(Embed); } - - } - - /* Quotation feature - * - * This section will contain the code for the quotation feature, it will detect link for it and send it as embed - * - */ - const quotationstat = await quotationStat.findOne({where: {serverID: message.guild.id, stat: 'enable'}}); - - if (quotationstat && (message.content.includes('discordapp.com/channels/') || message.content.includes('discord.com/channels/'))) { - let url = message.content.split('/'); - let guildID = url[4]; - let channelID = url[5]; - let messageID = url[6].split(' ')[0]; - - - // Verify if the guild, channel and message exist - let guild = this.client.guilds.resolve(guildID); - if (!guild) return; - let channel = this.client.channels.resolve(channelID); - if (!channel) return; - let quote = await channel.messages.fetch(messageID) - .catch(() => { - return; - }); - if (!quote) return; - - let Embed = this.client.util.embed() - .setAuthor(quote.author.username, quote.author.displayAvatarURL()) - .setColor(message.member ? message.member.displayHexColor : 'NAVY') - .addField('Jump to', `[message](https://discordapp.com/channels/${message.guild.id}/${channelID}/${messageID})`, true) - .addField('In channel', quote.channel.name, true) - .addField('Quoted by', message.author, true) - .setDescription(quote.content) - .setTimestamp(quote.createdTimestamp); - - if (quote.member) Embed.setAuthor(`${quote.author.username}#${quote.author.discriminator}`, quote.author.displayAvatarURL()); - - if (quote.author.bot) Embed.setAuthor(`${quote.author.username}#${quote.author.discriminator} (bot)`, quote.author.displayAvatarURL()); - - if (guild.id != message.guild.id) Embed.addField('In guild', guild.name, true); - let Attachment = (quote.attachments).array(); - if (Attachment[0]) Embed.setImage(Attachment[0].url); - - return message.channel.send(Embed); } } }