diff --git a/src/commands/djs.ts b/src/commands/djs.ts new file mode 100644 index 0000000..9060c82 --- /dev/null +++ b/src/commands/djs.ts @@ -0,0 +1,53 @@ +import { Message } from 'eris'; +import axios from 'axios'; +import { Client, Command, RichEmbed } from '../class'; + +export default class DJS extends Command { + constructor(client: Client) { + super(client); + this.name = 'djs'; + this.description = 'Get information about Discord.js.'; + this.usage = 'djs '; + this.permissions = 0; + this.guildOnly = false; + this.enabled = true; + } + + public async run(message: Message, args: string[]) { + try { + if (!args[0]) return this.client.commands.get('help').run(message, [this.name]); + + let res; + try { + res = await axios.get(`https://djsdocs.sorta.moe/v2/embed?src=master&q=${args[0]}`); + } catch (err) { + this.error(message.channel, 'Please try again later, something unexpected happened.'); + return this.client.util.handleError(err, message, this); + } + const { data } = res; + if (!data) return this.error(message.channel, 'Could not find information. Try something else.'); + + const name: string = data.author?.name || ''; + const icon_url: string = data.author?.icon_url || ''; + const author_url: string = data.author?.url || ''; + const description: string = data.description || 'None'; + const title: string = data.title || ''; + + const embed = new RichEmbed(); + embed.setAuthor(name, icon_url, author_url); + embed.setColor(0x2296f3); + embed.setTitle(title); + embed.setDescription(description); + if (data.fields !== undefined && data.fields.length > 0) { + data.fields.forEach((field) => { + embed.addField(field.name, field.value); + }); + } + embed.setFooter(this.client.user.username, this.client.user.avatarURL); + embed.setTimestamp(); + return message.channel.createMessage({ embed }); + } catch (err) { + return this.client.util.handleError(err, message, this); + } + } +}