summaryrefslogtreecommitdiff
path: root/dist/models/commands/Subreddit.js
diff options
context:
space:
mode:
author8cy <[email protected]>2020-04-29 04:36:14 -0700
committer8cy <[email protected]>2020-04-29 04:36:14 -0700
commit68d32ab1fa9c79e848038ca1c451e7d8f368531b (patch)
tree6142669ecc054e8a94bad4723dc6fb5c83f8cee1 /dist/models/commands/Subreddit.js
parentThe Return, v8.2.0 (diff)
downloaddep-core-68d32ab1fa9c79e848038ca1c451e7d8f368531b.tar.xz
dep-core-68d32ab1fa9c79e848038ca1c451e7d8f368531b.zip
Cerasus, v9.0.0
basically just add an insane amount of things - all new animal commands - waifu cmds - change/ move clientid, invite, uwufy, support, howify, say, pfp - add ip, security key, vote, datefacts, githubzen, fmk, fml, offsptring, facts, rate, opinion, onion, quantum coin, rolldie, romannumerals, russianrullete, smashorpass, spoiler, sub - minecraft cmds - SERVER check cmds - lewd cmds - roleplay commands - fun commands and games - utils
Diffstat (limited to 'dist/models/commands/Subreddit.js')
-rw-r--r--dist/models/commands/Subreddit.js90
1 files changed, 90 insertions, 0 deletions
diff --git a/dist/models/commands/Subreddit.js b/dist/models/commands/Subreddit.js
new file mode 100644
index 0000000..055b718
--- /dev/null
+++ b/dist/models/commands/Subreddit.js
@@ -0,0 +1,90 @@
+"use strict";
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const Command_js_1 = __importDefault(require("../Command.js"));
+const node_superfetch_1 = __importDefault(require("node-superfetch"));
+const emoji_random_1 = __importDefault(require("emoji-random"));
+module.exports = class SubredditCommand extends Command_js_1.default {
+ constructor(client, info) {
+ super(client, info);
+ this.subreddit = info.subreddit;
+ this.postType = info.postType ? Array.isArray(info.postType) ? info.postType : [info.postType] : null;
+ this.getIcon = info.getIcon || false;
+ this.credit.push({
+ name: 'Reddit',
+ url: 'https://www.reddit.com/',
+ reason: 'API',
+ reasonURL: 'https://www.reddit.com/dev/api/'
+ });
+ }
+ run(msg, { subreddit }, fromPattern) {
+ return __awaiter(this, void 0, void 0, function* () {
+ if (fromPattern)
+ subreddit = msg.patternMatches[1];
+ if (!subreddit)
+ subreddit = typeof this.subreddit === 'function' ? this.subreddit() : this.subreddit;
+ try {
+ const post = yield this.random(subreddit, msg.channel.nsfw);
+ if (!post)
+ return msg.reply('Could not find any results. ' + emoji_random_1.default.random());
+ return msg.say(this.generateText(post.post, post.origin, post.icon));
+ }
+ catch (err) {
+ if (err.status === 403)
+ return msg.reply('This subreddit is private. ' + emoji_random_1.default.random());
+ if (err.status === 404)
+ return msg.reply('Could not find any results. ' + emoji_random_1.default.random());
+ return msg.reply(`Oh no, an error occurred: \`${err.message}\`. Try again later!`);
+ }
+ });
+ }
+ generateText() {
+ throw new Error('The generateText method is required.');
+ }
+ random(subreddit, nsfw) {
+ return __awaiter(this, void 0, void 0, function* () {
+ let icon = null;
+ const { body } = yield node_superfetch_1.default
+ .get(`https://www.reddit.com/r/${subreddit}/hot.json`)
+ .query({ limit: 100 });
+ if (!body.data.children.length)
+ return null;
+ const posts = body.data.children.filter(post => {
+ if (!post.data)
+ return false;
+ if (!nsfw && post.data.over_18)
+ return false;
+ return (this.postType ? this.postType.includes(post.data.post_hint) : true) && post.data.url && post.data.title;
+ });
+ if (!posts.length)
+ return null;
+ if (this.getIcon)
+ icon = yield this.fetchIcon(subreddit);
+ return {
+ origin: subreddit,
+ post: posts[Math.floor(Math.random() * posts.length)].data,
+ icon
+ };
+ });
+ }
+ fetchIcon(subreddit) {
+ return __awaiter(this, void 0, void 0, function* () {
+ const { body } = yield node_superfetch_1.default.get(`https://www.reddit.com/r/${subreddit}/about.json`);
+ if (!body.data.icon_img && !body.data.community_icon)
+ return 'https://i.imgur.com/DSBOK0P.png';
+ return body.data.icon_img || body.data.community_icon;
+ });
+ }
+};
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3VicmVkZGl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vZGVscy9jb21tYW5kcy9TdWJyZWRkaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFDQSwrREFBbUM7QUFDbkMsc0VBQXFDO0FBQ3JDLGdFQUFnQztBQUVoQyxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sZ0JBQWlCLFNBQVEsb0JBQU87SUFDbkQsWUFBWSxNQUFNLEVBQUUsSUFBSTtRQUNwQixLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXBCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3RHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUM7UUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDYixJQUFJLEVBQUUsUUFBUTtZQUNkLEdBQUcsRUFBRSx5QkFBeUI7WUFDOUIsTUFBTSxFQUFFLEtBQUs7WUFDYixTQUFTLEVBQUUsaUNBQWlDO1NBQy9DLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFSyxHQUFHLENBQUMsR0FBb0IsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLFdBQVc7O1lBQ3RELElBQUksV0FBVztnQkFBRSxTQUFTLEdBQUcsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRCxJQUFJLENBQUMsU0FBUztnQkFBRSxTQUFTLEdBQUcsT0FBTyxJ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 \ No newline at end of file