import { Command } from 'discord-akairo'; import { Message } from 'discord.js'; import request from 'node-superfetch'; export default class FactFun extends Command { public constructor() { super('fact', { aliases: ['fact', 'facts'], category: 'fun', description: { content: 'Grabs a random fact.', usage: '', examples: [ '' ] }, ratelimit: 3 }); } public async exec(msg: Message): Promise { const article = await this.randomWikipediaArticle(); const body = await request.get('https://en.wikipedia.org/w/api.php') .query({ action: 'query', prop: 'extracts', format: 'json', titles: article, exintro: '', explaintext: '', redirects: '', //@ts-ignore formatversion: 2 }) .catch(err => { console.error(err); msg.reply('Woops, there was an error regarding the (http://en.wikipedia.org) API.'); }); //@ts-ignore let fact = body.query.pages[0].extract; if (fact.length > 200) { const facts = fact.split('.'); fact = `${facts[0]}.`; if (fact.length < 200 && facts.length > 1) fact += `${facts[1]}.`; } return msg.reply(fact); } public async randomWikipediaArticle() { const { body } = await request.get('https://en.wikipedia.org/w/api.php') .query({ action: 'query', list: 'random', //@ts-ignore rnnamespace: 0, //@ts-ignore rnlimit: 1, format: 'json', //@ts-ignore formatversion: 2 }); //@ts-ignore if (!body.query.random[0].title) return 'Facts are hard to find sometimes.'; //@ts-ignore return body.query.random[0].title; } }