(api): inital emojis route implementation
This commit is contained in:
parent
d9e37e5e19
commit
e0839677d5
78
api/src/routes/guilds/#guild_id/emojis.ts
Normal file
78
api/src/routes/guilds/#guild_id/emojis.ts
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
import { Router, Request, Response } from "express";
|
||||||
|
import {
|
||||||
|
Config,
|
||||||
|
emitEvent,
|
||||||
|
Emoji,
|
||||||
|
GuildEmojiUpdateEvent,
|
||||||
|
Member,
|
||||||
|
User
|
||||||
|
} from "@fosscord/util";
|
||||||
|
import { HTTPError } from "lambert-server";
|
||||||
|
import { route } from "@fosscord/api";
|
||||||
|
|
||||||
|
const router = Router();
|
||||||
|
|
||||||
|
export interface EmojiCreateSchema {
|
||||||
|
name?: string;
|
||||||
|
image?: string;
|
||||||
|
roles?: string[];
|
||||||
|
}
|
||||||
|
|
||||||
|
router.get("/", route({}), async (req: Request, res: Response) => {
|
||||||
|
const guild_id = req.params.guild_id;
|
||||||
|
|
||||||
|
await Member.IsInGuildOrFail(req.user_id, guild_id);
|
||||||
|
|
||||||
|
const emojis = await Emoji.find({ guild_id: guild_id });
|
||||||
|
|
||||||
|
return res.json(emojis);
|
||||||
|
});
|
||||||
|
|
||||||
|
router.get("/:emoji_id", route({}), async (req: Request, res: Response) => {
|
||||||
|
const guild_id = req.params.guild_id;
|
||||||
|
const emoji_id = req.params.emoji_id;
|
||||||
|
|
||||||
|
await Member.IsInGuildOrFail(req.user_id, guild_id);
|
||||||
|
|
||||||
|
const emoji = await Emoji.findOneOrFail({ guild_id: guild_id, id: emoji_id });
|
||||||
|
|
||||||
|
return res.json(emoji);
|
||||||
|
});
|
||||||
|
|
||||||
|
/** WIP
|
||||||
|
router.post("/", route({ body: "EmojiCreateSchema", permission: "MANAGE_EMOJIS_AND_STICKERS" }), async (req: Request, res: Response) => {
|
||||||
|
const guild_id = req.params.guild_id;
|
||||||
|
const body = req.body as EmojiCreateSchema;
|
||||||
|
|
||||||
|
const emoji_count = await Emoji.count({ guild_id: guild_id });
|
||||||
|
const { maxEmojis } = Config.get().limits.guild;
|
||||||
|
|
||||||
|
if (emoji_count >= maxEmojis) {
|
||||||
|
throw new HTTPError("Max emojis reached", 400);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
*/
|
||||||
|
|
||||||
|
router.delete("/:emoji_id", route({ permission: "MANAGE_EMOJIS_AND_STICKERS" }), async (req: Request, res: Response) => {
|
||||||
|
const guild_id = req.params.guild_id;
|
||||||
|
const { emoji_id } = req.params;
|
||||||
|
|
||||||
|
await Promise.all([
|
||||||
|
Emoji.delete({
|
||||||
|
id: emoji_id,
|
||||||
|
guild_id: guild_id
|
||||||
|
}),
|
||||||
|
emitEvent({
|
||||||
|
event: "GUILD_EMOJI_UPDATE",
|
||||||
|
guild_id: guild_id,
|
||||||
|
data: {
|
||||||
|
guild_id: guild_id,
|
||||||
|
emojis: await Emoji.find({ guild_id: guild_id })
|
||||||
|
}
|
||||||
|
} as GuildEmojiUpdateEvent)
|
||||||
|
])
|
||||||
|
|
||||||
|
res.sendStatus(204);
|
||||||
|
});
|
||||||
|
|
||||||
|
export default router;
|
@ -64,6 +64,7 @@ export interface ConfigValue {
|
|||||||
};
|
};
|
||||||
guild: {
|
guild: {
|
||||||
maxRoles: number;
|
maxRoles: number;
|
||||||
|
maxEmojis: number;
|
||||||
maxMembers: number;
|
maxMembers: number;
|
||||||
maxChannels: number;
|
maxChannels: number;
|
||||||
maxChannelsInCategory: number;
|
maxChannelsInCategory: number;
|
||||||
@ -187,6 +188,7 @@ export const DefaultConfigOptions: ConfigValue = {
|
|||||||
},
|
},
|
||||||
guild: {
|
guild: {
|
||||||
maxRoles: 250,
|
maxRoles: 250,
|
||||||
|
maxEmojis: 50, // TODO: max emojis per guild per nitro level
|
||||||
maxMembers: 250000,
|
maxMembers: 250000,
|
||||||
maxChannels: 500,
|
maxChannels: 500,
|
||||||
maxChannelsInCategory: 50,
|
maxChannelsInCategory: 50,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user