(api): implement post on emoji route
This commit is contained in:
parent
ec8b59c5e5
commit
e642b6194a
@ -1,10 +1,13 @@
|
||||
import { Router, Request, Response } from "express";
|
||||
import {
|
||||
Config,
|
||||
DiscordApiErrors,
|
||||
emitEvent,
|
||||
Emoji,
|
||||
GuildEmojiUpdateEvent,
|
||||
handleFile,
|
||||
Member,
|
||||
Snowflake,
|
||||
User
|
||||
} from "@fosscord/util";
|
||||
import { HTTPError } from "lambert-server";
|
||||
@ -15,6 +18,7 @@ const router = Router();
|
||||
export interface EmojiCreateSchema {
|
||||
name?: string;
|
||||
image?: string;
|
||||
require_colons?: boolean | null;
|
||||
roles?: string[];
|
||||
}
|
||||
|
||||
@ -44,7 +48,6 @@ router.get("/:emoji_id", route({}), async (req: Request, res: Response) => {
|
||||
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;
|
||||
@ -52,11 +55,42 @@ router.post("/", route({ body: "EmojiCreateSchema", permission: "MANAGE_EMOJIS_A
|
||||
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);
|
||||
if (emoji_count >= maxEmojis) throw DiscordApiErrors.MAXIMUM_NUMBER_OF_EMOJIS_REACHED.withParams(maxEmojis);
|
||||
|
||||
const id = Snowflake.generate();
|
||||
|
||||
if (!body.image) {
|
||||
throw DiscordApiErrors.GENERAL_ERROR.withParams("No image provided");
|
||||
}
|
||||
|
||||
if (body.require_colons === null) body.require_colons = true;
|
||||
|
||||
const user = await User.findOneOrFail({ id: req.user_id });
|
||||
|
||||
body.image = await handleFile(`/emojis/${id}`, body.image);
|
||||
|
||||
const emoji = new Emoji({
|
||||
id: id,
|
||||
guild_id: guild_id,
|
||||
...body,
|
||||
user: user,
|
||||
managed: false,
|
||||
animated: false, // TODO: Add support animated emojis
|
||||
available: true
|
||||
});
|
||||
|
||||
await Promise.all([
|
||||
emoji.save(),
|
||||
emitEvent({
|
||||
event: "GUILD_EMOJI_UPDATE",
|
||||
guild_id: guild_id,
|
||||
data: {
|
||||
guild_id: guild_id,
|
||||
emojis: await Emoji.find({ guild_id: guild_id })
|
||||
}
|
||||
} as GuildEmojiUpdateEvent)
|
||||
]);
|
||||
});
|
||||
*/
|
||||
|
||||
router.patch("/:emoji_id", route({ body: "EmojiModifySchema", permission: "MANAGE_EMOJIS_AND_STICKERS" }), async (req: Request, res: Response) => {
|
||||
const { emoji_id, guild_id } = req.params;
|
||||
|
Loading…
x
Reference in New Issue
Block a user