(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 { Router, Request, Response } from "express";
|
||||||
import {
|
import {
|
||||||
Config,
|
Config,
|
||||||
|
DiscordApiErrors,
|
||||||
emitEvent,
|
emitEvent,
|
||||||
Emoji,
|
Emoji,
|
||||||
GuildEmojiUpdateEvent,
|
GuildEmojiUpdateEvent,
|
||||||
|
handleFile,
|
||||||
Member,
|
Member,
|
||||||
|
Snowflake,
|
||||||
User
|
User
|
||||||
} from "@fosscord/util";
|
} from "@fosscord/util";
|
||||||
import { HTTPError } from "lambert-server";
|
import { HTTPError } from "lambert-server";
|
||||||
@ -15,6 +18,7 @@ const router = Router();
|
|||||||
export interface EmojiCreateSchema {
|
export interface EmojiCreateSchema {
|
||||||
name?: string;
|
name?: string;
|
||||||
image?: string;
|
image?: string;
|
||||||
|
require_colons?: boolean | null;
|
||||||
roles?: string[];
|
roles?: string[];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,7 +48,6 @@ router.get("/:emoji_id", route({}), async (req: Request, res: Response) => {
|
|||||||
return res.json(emoji);
|
return res.json(emoji);
|
||||||
});
|
});
|
||||||
|
|
||||||
/** WIP
|
|
||||||
router.post("/", route({ body: "EmojiCreateSchema", permission: "MANAGE_EMOJIS_AND_STICKERS" }), async (req: Request, res: Response) => {
|
router.post("/", route({ body: "EmojiCreateSchema", permission: "MANAGE_EMOJIS_AND_STICKERS" }), async (req: Request, res: Response) => {
|
||||||
const guild_id = req.params.guild_id;
|
const guild_id = req.params.guild_id;
|
||||||
const body = req.body as EmojiCreateSchema;
|
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 emoji_count = await Emoji.count({ guild_id: guild_id });
|
||||||
const { maxEmojis } = Config.get().limits.guild;
|
const { maxEmojis } = Config.get().limits.guild;
|
||||||
|
|
||||||
if (emoji_count >= maxEmojis) {
|
if (emoji_count >= maxEmojis) throw DiscordApiErrors.MAXIMUM_NUMBER_OF_EMOJIS_REACHED.withParams(maxEmojis);
|
||||||
throw new HTTPError("Max emojis reached", 400);
|
|
||||||
|
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) => {
|
router.patch("/:emoji_id", route({ body: "EmojiModifySchema", permission: "MANAGE_EMOJIS_AND_STICKERS" }), async (req: Request, res: Response) => {
|
||||||
const { emoji_id, guild_id } = req.params;
|
const { emoji_id, guild_id } = req.params;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user