Skip to content

Commit 46bd58d

Browse files
committed
feat(api): generate missing icons
1 parent c6a982e commit 46bd58d

File tree

5 files changed

+48
-2
lines changed

5 files changed

+48
-2
lines changed

src/lib/misc.js

+3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
const { createHash } = require('crypto');
22
module.exports.md5 = str => createHash('md5').update(str).digest('hex');
33
module.exports.msToMins = ms => Number((ms / 1000 / 60).toFixed(2));
4+
module.exports.iconURL = guildLike => guildLike.icon
5+
? guildLike.client.rest.cdn.icon(guildLike.id, guildLike.icon)
6+
: `https://api.dicebear.com/8.x/initials/png?seed=${encodeURIComponent(guildLike.name)}&size=96&backgroundType=gradientLinear&fontWeight=600`;

src/routes/api/admin/guilds/[guild]/index.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
/* eslint-disable no-underscore-dangle */
2+
const { iconURL } = require('../../../../../lib/misc');
23
const {
34
getAvgResolutionTime,
45
getAvgResponseTime,
@@ -37,7 +38,7 @@ module.exports.get = fastify => ({
3738
cached = {
3839
createdAt: settings.createdAt,
3940
id: guild.id,
40-
logo: guild.iconURL(),
41+
logo: iconURL(guild),
4142
name: guild.name,
4243
stats: {
4344
avgResolutionTime: ms(getAvgResolutionTime(closedTickets)),

src/routes/api/admin/guilds/index.js

+9-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
const { PermissionsBitField } = require('discord.js');
2+
const { iconURL } = require('../../../../lib/misc');
23

34
module.exports.get = fastify => ({
45
handler: async (req, res) => {
@@ -10,7 +11,14 @@ module.exports.get = fastify => ({
1011
.map(guild => ({
1112
added: client.guilds.cache.has(guild.id),
1213
id: guild.id,
13-
logo: `https://cdn.discordapp.com/icons/${guild.id}/${guild.icon}.webp`,
14+
logo: iconURL(
15+
client.guilds.cache.get(guild.id) ||
16+
{
17+
client,
18+
icon: guild.icon,
19+
id: guild.id,
20+
},
21+
),
1422
name: guild.name,
1523
})),
1624
);
+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
const { iconURL } = require('../../../../lib/misc');
2+
3+
module.exports.get = fastify => ({
4+
handler: async (req, res) => {
5+
const { client } = req.routeOptions.config;
6+
const guild = client.guilds.cache.get(req.params.guild);
7+
if (!guild) return res.status(404).send(new Error('Not Found'));
8+
res.send({
9+
id: guild.id,
10+
logo: iconURL(guild),
11+
name: guild.name,
12+
});
13+
},
14+
onRequest: [fastify.authenticate],
15+
});
16+

src/routes/api/guilds/index.js

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
const { iconURL } = require('../../../lib/misc');
2+
3+
module.exports.get = fastify => ({
4+
handler: async (req, res) => {
5+
const { client } = req.routeOptions.config;
6+
const guilds = await (await fetch('https://discordapp.com/api/users/@me/guilds', { headers: { 'Authorization': `Bearer ${req.user.accessToken}` } })).json();
7+
res.send(
8+
guilds
9+
.filter(guild => client.guilds.cache.has(guild.id))
10+
.map(guild => ({
11+
id: guild.id,
12+
logo: iconURL(client.guilds.cache.get(guild.id)),
13+
name: guild.name,
14+
})),
15+
);
16+
},
17+
onRequest: [fastify.authenticate],
18+
});

0 commit comments

Comments
 (0)