From 5d6557ff763e446c41ee4d653cee2d9add0705f7 Mon Sep 17 00:00:00 2001 From: Dragon Fire Date: Mon, 8 Jun 2020 16:15:19 -0400 Subject: [PATCH] Reduce duplicate code in subreddit commands --- commands/random-img/awwnime.js | 11 +---------- commands/random-img/hentai.js | 12 ++---------- commands/random-img/meme.js | 12 ++---------- commands/random-img/porn.js | 12 ++---------- commands/random-res/subreddit.js | 11 +---------- package.json | 2 +- structures/commands/Subreddit.js | 13 +++++++++++++ 7 files changed, 22 insertions(+), 51 deletions(-) diff --git a/commands/random-img/awwnime.js b/commands/random-img/awwnime.js index 17f64f48..3b90523f 100644 --- a/commands/random-img/awwnime.js +++ b/commands/random-img/awwnime.js @@ -1,6 +1,4 @@ const SubredditCommand = require('../../structures/commands/Subreddit'); -const { MessageEmbed } = require('discord.js'); -const { formatNumberK } = require('../../util/Util'); module.exports = class AwwnimeCommand extends SubredditCommand { constructor(client) { @@ -18,13 +16,6 @@ module.exports = class AwwnimeCommand extends SubredditCommand { } generateText(post, subreddit, icon) { - return new MessageEmbed() - .setColor(0xFF4500) - .setAuthor(`r/${subreddit}`, icon, `https://www.reddit.com/r/${subreddit}/`) - .setTitle(post.title) - .setImage(post.post_hint === 'image' ? post.url : null) - .setURL(`https://www.reddit.com${post.permalink}`) - .setTimestamp(post.created_utc * 1000) - .setFooter(`⬆ ${formatNumberK(post.ups)}`); + return this.makeEmbed(post, subreddit, icon); } }; diff --git a/commands/random-img/hentai.js b/commands/random-img/hentai.js index cd0c82e6..380c5de7 100644 --- a/commands/random-img/hentai.js +++ b/commands/random-img/hentai.js @@ -1,6 +1,5 @@ const SubredditCommand = require('../../structures/commands/Subreddit'); -const { MessageEmbed } = require('discord.js'); -const { list, formatNumberK } = require('../../util/Util'); +const { list } = require('../../util/Util'); const subreddits = require('../../assets/json/hentai'); module.exports = class HentaiCommand extends SubredditCommand { @@ -36,13 +35,6 @@ module.exports = class HentaiCommand extends SubredditCommand { } generateText(post, subreddit, icon) { - return new MessageEmbed() - .setColor(0xFF4500) - .setAuthor(`r/${subreddit}`, icon, `https://www.reddit.com/r/${subreddit}/`) - .setTitle(post.title) - .setImage(post.post_hint === 'image' ? post.url : null) - .setURL(`https://www.reddit.com${post.permalink}`) - .setTimestamp(post.created_utc * 1000) - .setFooter(`⬆ ${formatNumberK(post.ups)}`); + return this.makeEmbed(post, subreddit, icon); } }; diff --git a/commands/random-img/meme.js b/commands/random-img/meme.js index 5ca90f27..fe07ff3a 100644 --- a/commands/random-img/meme.js +++ b/commands/random-img/meme.js @@ -1,6 +1,5 @@ const SubredditCommand = require('../../structures/commands/Subreddit'); -const { MessageEmbed } = require('discord.js'); -const { list, formatNumberK } = require('../../util/Util'); +const { list } = require('../../util/Util'); const subreddits = require('../../assets/json/meme'); module.exports = class MemeCommand extends SubredditCommand { @@ -28,13 +27,6 @@ module.exports = class MemeCommand extends SubredditCommand { } generateText(post, subreddit, icon) { - return new MessageEmbed() - .setColor(0xFF4500) - .setAuthor(`r/${subreddit}`, icon, `https://www.reddit.com/r/${subreddit}/`) - .setTitle(post.title) - .setImage(post.post_hint === 'image' ? post.url : null) - .setURL(`https://www.reddit.com${post.permalink}`) - .setTimestamp(post.created_utc * 1000) - .setFooter(`⬆ ${formatNumberK(post.ups)}`); + return this.makeEmbed(post, subreddit, icon); } }; diff --git a/commands/random-img/porn.js b/commands/random-img/porn.js index b26d13bf..afed7df1 100644 --- a/commands/random-img/porn.js +++ b/commands/random-img/porn.js @@ -1,6 +1,5 @@ const SubredditCommand = require('../../structures/commands/Subreddit'); -const { MessageEmbed } = require('discord.js'); -const { list, formatNumberK } = require('../../util/Util'); +const { list } = require('../../util/Util'); const subreddits = require('../../assets/json/porn'); module.exports = class PornCommand extends SubredditCommand { @@ -37,13 +36,6 @@ module.exports = class PornCommand extends SubredditCommand { } generateText(post, subreddit, icon) { - return new MessageEmbed() - .setColor(0xFF4500) - .setAuthor(`r/${subreddit}`, icon, `https://www.reddit.com/r/${subreddit}/`) - .setTitle(post.title) - .setImage(post.post_hint === 'image' ? post.url : null) - .setURL(`https://www.reddit.com${post.permalink}`) - .setTimestamp(post.created_utc * 1000) - .setFooter(`⬆ ${formatNumberK(post.ups)}`); + return this.makeEmbed(post, subreddit, icon); } }; diff --git a/commands/random-res/subreddit.js b/commands/random-res/subreddit.js index 0007d909..aafa05cc 100644 --- a/commands/random-res/subreddit.js +++ b/commands/random-res/subreddit.js @@ -1,6 +1,4 @@ const SubredditCommandBase = require('../../structures/commands/Subreddit'); -const { MessageEmbed } = require('discord.js'); -const { shorten, formatNumberK } = require('../../util/Util'); module.exports = class SubredditCommand extends SubredditCommandBase { constructor(client) { @@ -25,14 +23,7 @@ module.exports = class SubredditCommand extends SubredditCommandBase { } generateText(post, subreddit, icon) { - const embed = new MessageEmbed() - .setColor(0xFF4500) - .setAuthor(`r/${subreddit}`, icon, `https://www.reddit.com/r/${subreddit}/`) - .setTitle(shorten(post.title, 256)) - .setImage(post.post_hint === 'image' ? post.url : null) - .setURL(`https://www.reddit.com${post.permalink}`) - .setTimestamp(post.created_utc * 1000) - .setFooter(`⬆ ${formatNumberK(post.score)}`); + const embed = this.makeEmbed(post, subreddit, icon); if (post.thumbnail && post.thumbnail !== 'self' && post.post_hint !== 'image') { embed.setThumbnail(post.thumbnail); } diff --git a/package.json b/package.json index 1d4119ac..f86d03ea 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "xiao", - "version": "116.8.1", + "version": "116.8.2", "description": "Your personal server companion.", "main": "Xiao.js", "scripts": { diff --git a/structures/commands/Subreddit.js b/structures/commands/Subreddit.js index 4b50e07c..6ee918f4 100644 --- a/structures/commands/Subreddit.js +++ b/structures/commands/Subreddit.js @@ -1,5 +1,7 @@ const request = require('node-superfetch'); const Command = require('../Command'); +const { MessageEmbed } = require('discord.js'); +const { formatNumberK, shorten } = require('../../util/Util'); module.exports = class SubredditCommand extends Command { constructor(client, info) { @@ -34,6 +36,17 @@ module.exports = class SubredditCommand extends Command { throw new Error('The generateText method is required.'); } + makeEmbed(post, subreddit, icon) { + return new MessageEmbed() + .setColor(0xFF4500) + .setAuthor(`r/${subreddit}`, icon, `https://www.reddit.com/r/${subreddit}/`) + .setTitle(shorten(post.title, 256)) + .setImage(post.post_hint === 'image' ? post.url : null) + .setURL(`https://www.reddit.com${post.permalink}`) + .setTimestamp(post.created_utc * 1000) + .setFooter(`⬆ ${formatNumberK(post.ups)}`); + } + async random(subreddit, nsfw) { let icon = null; const { body } = await request