UNPKG

1.19 kBPlain TextView Raw
1import { Server } from '../types/fastify'
2import { Guild, GuildChannel, GuildMember } from 'discord.js'
3
4function channel ({ type, name, id, parent }: GuildChannel) {
5 return {
6 type, name, id,
7 category: parent ? parent.id : null
8 }
9}
10
11function member ({ nickname, user: { discriminator, username } }: GuildMember) {
12 return {
13 nickname, username, discriminator
14 }
15}
16
17function guildWithChannels ({ name, id, channels }: Guild) {
18 return {
19 name, id,
20 channels: channels.array().map(channel)
21 }
22}
23
24function guildWithUsers ({ name, id, members }: Guild) {
25 return {
26 name, id,
27 users: members.array().map(member)
28 }
29}
30
31export default async (app: Server) => {
32 app.get('/channels', async (request, reply) => {
33 return discord.client.guilds.array().map(guildWithChannels)
34 })
35
36 app.get('/users', async (request, reply) => {
37 return discord.client.guilds.array().map(guildWithUsers)
38 })
39
40 app.get('/guilds/:guild/channels', async (request, reply) => {
41 if (!discord.client.guilds.has(request.params.guild)) return reply.sendError(404, 'Guild not found')
42 return discord.client.guilds.get(request.params.guild)!!.channels.array().map(channel)
43 })
44}