UNPKG

reddit-informations-channel

Version:

Un module pour avoir des informations sur un channel reddit

63 lines (48 loc) 2.45 kB
const { EventEmitter } = require('events'); const { MessageEmbed } = require('discord.js'); const fetch = require("node-fetch") const dateformat = require("dateformat") const moment = require("moment") module.exports = class RedditImage extends EventEmitter { /** * Instancie la classe 'RedditImage'; obligatoire par la suite * @constructor * @param {Discord.Client} client - Représente le client */ constructor(client) { super() if(!client) throw new Error("Un Discord Client doit être précisé."); this.client = client; }; /** * Create a embed with reddit image * @param {message} message * @param {options} object * @param {args} object */ async create(message, options, args) { if(!message) throw new Error("Vous devez donner un message (paramètre de votre événement)"); if(typeof options !== "object") throw new Error("Les options doivent être dans un objet."); if(!options.ruleschannel) throw new Error("Une option \`ruleschannel\` est nécessaire)"); if(typeof options.ruleschannel !== "string") throw new Error("L'option \"ruleschannel\" doit être de type String.") let url = `https://api.reddit.com/r/${options.ruleschannel}/about.json` await fetch(url, {headers: {Authorization: `fA-srx2u-9kZZaxRt1qOgR7jJZPdHw`}}) .then(res => res.json()) .then(body => { console.log(body) let desc = body.data.description; let publicdescription = body.data.public_description let created = new Date(body.data.created*1000); const embed = new MessageEmbed() .setTitle(`Informations sur le channel ${options.ruleschannel} !`) .setThumbnail(body.data.header_img) .setDescription(`${desc.length < 2048 ? desc : desc.slice(0,2040)+"..."}`) .addField("Lien du Reddit", `[Clique ici](https://www.reddit.com${body.data.url})`, true) .addField("Langue", `${body.data.lang}`, true) .addField("Date de création", `${moment(created).locale('fr').format('LLL')}`) .addField("Description Public", `${publicdescription.length < 2048 ? publicdescription : "La description fait plus de 2048 caractères"}`, true) .setColor(body.data.key_color) message.channel.send(embed) }) } }