From e0839677d50abf8be381d3d902620482bc9dd32b Mon Sep 17 00:00:00 2001
From: Lobo Metalúrgico <43734867+LoboMetalurgico@users.noreply.github.com>
Date: Fri, 8 Oct 2021 23:45:12 -0300
Subject: (api): inital emojis route implementation
---
api/src/routes/guilds/#guild_id/emojis.ts | 78 +++++++++++++++++++++++++++++++
1 file changed, 78 insertions(+)
create mode 100644 api/src/routes/guilds/#guild_id/emojis.ts
(limited to 'api')
diff --git a/api/src/routes/guilds/#guild_id/emojis.ts b/api/src/routes/guilds/#guild_id/emojis.ts
new file mode 100644
index 00000000..f1e427e8
--- /dev/null
+++ b/api/src/routes/guilds/#guild_id/emojis.ts
@@ -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;
--
cgit 1.5.1
From 8bc98e5f68350a242418078cf705396511bbf86a Mon Sep 17 00:00:00 2001
From: Lobo Metalúrgico <43734867+LoboMetalurgico@users.noreply.github.com>
Date: Fri, 8 Oct 2021 23:49:45 -0300
Subject: (api): fix route name
---
api/src/routes/guilds/#guild_id/emoji.ts | 78 +++++++++++++++++++++++++++++++
api/src/routes/guilds/#guild_id/emojis.ts | 78 -------------------------------
2 files changed, 78 insertions(+), 78 deletions(-)
create mode 100644 api/src/routes/guilds/#guild_id/emoji.ts
delete mode 100644 api/src/routes/guilds/#guild_id/emojis.ts
(limited to 'api')
diff --git a/api/src/routes/guilds/#guild_id/emoji.ts b/api/src/routes/guilds/#guild_id/emoji.ts
new file mode 100644
index 00000000..f1e427e8
--- /dev/null
+++ b/api/src/routes/guilds/#guild_id/emoji.ts
@@ -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;
diff --git a/api/src/routes/guilds/#guild_id/emojis.ts b/api/src/routes/guilds/#guild_id/emojis.ts
deleted file mode 100644
index f1e427e8..00000000
--- a/api/src/routes/guilds/#guild_id/emojis.ts
+++ /dev/null
@@ -1,78 +0,0 @@
-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;
--
cgit 1.5.1
From d5cdc9198cd6a03a94f1e92b664044ccff5f7aaf Mon Sep 17 00:00:00 2001
From: Flam3rboy <34555296+Flam3rboy@users.noreply.github.com>
Date: Sat, 9 Oct 2021 14:46:59 +0200
Subject: :art: cdn now also works without setting a public endpoint
---
api/src/routes/channels/#channel_id/messages/index.ts | 5 ++++-
bundle/src/Server.ts | 3 ---
2 files changed, 4 insertions(+), 4 deletions(-)
(limited to 'api')
diff --git a/api/src/routes/channels/#channel_id/messages/index.ts b/api/src/routes/channels/#channel_id/messages/index.ts
index 1f856b80..4ec31417 100644
--- a/api/src/routes/channels/#channel_id/messages/index.ts
+++ b/api/src/routes/channels/#channel_id/messages/index.ts
@@ -103,6 +103,7 @@ router.get("/", async (req: Request, res: Response) => {
}
const messages = await Message.find(query);
+ const endpoint = Config.get().cdn.endpointPublic;
return res.json(
messages.map((x) => {
@@ -115,7 +116,9 @@ router.get("/", async (req: Request, res: Response) => {
// @ts-ignore
if (!x.author) x.author = { discriminator: "0000", username: "Deleted User", public_flags: "0", avatar: null };
x.attachments?.forEach((x) => {
- x.proxy_url = `${Config.get().cdn.endpointPublic || "http://localhost:3003"}${new URL(x.proxy_url).pathname}`;
+ // dynamically set attachment proxy_url in case the endpoint changed
+ const uri = x.proxy_url.startsWith("http") ? x.proxy_url : `https://example.org${x.proxy_url}`;
+ x.proxy_url = `${endpoint == null ? "http://localhost:3003" : endpoint}${new URL(uri).pathname}`;
});
return x;
diff --git a/bundle/src/Server.ts b/bundle/src/Server.ts
index 662b9008..5dda2d02 100644
--- a/bundle/src/Server.ts
+++ b/bundle/src/Server.ts
@@ -30,9 +30,6 @@ async function main() {
cdn: {
endpointClient: "${location.host}",
endpointPrivate: `http://localhost:${port}`,
- ...(!Config.get().cdn.endpointPublic && {
- endpointPublic: `http://localhost:${port}`,
- }),
},
gateway: {
endpointClient:
--
cgit 1.5.1
From ec8b59c5e5aa20c4865c5cab0864178a185deb1e Mon Sep 17 00:00:00 2001
From: Lobo Metalúrgico <43734867+LoboMetalurgico@users.noreply.github.com>
Date: Sat, 9 Oct 2021 10:52:43 -0300
Subject: (api): add patch to emoji route
---
api/src/routes/guilds/#guild_id/emoji.ts | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
(limited to 'api')
diff --git a/api/src/routes/guilds/#guild_id/emoji.ts b/api/src/routes/guilds/#guild_id/emoji.ts
index f1e427e8..f14790ed 100644
--- a/api/src/routes/guilds/#guild_id/emoji.ts
+++ b/api/src/routes/guilds/#guild_id/emoji.ts
@@ -18,6 +18,11 @@ export interface EmojiCreateSchema {
roles?: string[];
}
+export interface EmojiModifySchema {
+ name?: string;
+ roles?: string[];
+}
+
router.get("/", route({}), async (req: Request, res: Response) => {
const guild_id = req.params.guild_id;
@@ -53,6 +58,27 @@ router.post("/", route({ body: "EmojiCreateSchema", permission: "MANAGE_EMOJIS_A
});
*/
+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 body = req.body as EmojiModifySchema;
+
+ const emoji = new Emoji({ ...body, id: emoji_id, guild_id: guild_id });
+
+ 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)
+ ])
+
+ return res.json(emoji);
+});
+
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;
--
cgit 1.5.1
From e642b6194aae348e489777008a17a8b6e63b9d0e Mon Sep 17 00:00:00 2001
From: Lobo Metalúrgico <43734867+LoboMetalurgico@users.noreply.github.com>
Date: Sat, 9 Oct 2021 11:36:58 -0300
Subject: (api): implement post on emoji route
---
api/src/routes/guilds/#guild_id/emoji.ts | 42 +++++++++++++++++++++++++++++---
1 file changed, 38 insertions(+), 4 deletions(-)
(limited to 'api')
diff --git a/api/src/routes/guilds/#guild_id/emoji.ts b/api/src/routes/guilds/#guild_id/emoji.ts
index f14790ed..6b194f7b 100644
--- a/api/src/routes/guilds/#guild_id/emoji.ts
+++ b/api/src/routes/guilds/#guild_id/emoji.ts
@@ -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;
--
cgit 1.5.1
From d6bc17a8c7813ba860de0aa554297798f989de0f Mon Sep 17 00:00:00 2001
From: Flam3rboy <34555296+Flam3rboy@users.noreply.github.com>
Date: Sat, 9 Oct 2021 17:33:28 +0200
Subject: :sparkles: added read state
---
.../routes/channels/#channel_id/messages/#message_id/ack.ts | 8 ++++++--
gateway/src/opcodes/Identify.ts | 11 +++++++++--
util/src/entities/ReadState.ts | 13 +++++++------
util/src/util/Config.ts | 1 -
4 files changed, 22 insertions(+), 11 deletions(-)
(limited to 'api')
diff --git a/api/src/routes/channels/#channel_id/messages/#message_id/ack.ts b/api/src/routes/channels/#channel_id/messages/#message_id/ack.ts
index 786e4581..208c1da4 100644
--- a/api/src/routes/channels/#channel_id/messages/#message_id/ack.ts
+++ b/api/src/routes/channels/#channel_id/messages/#message_id/ack.ts
@@ -1,4 +1,4 @@
-import { emitEvent, getPermission, MessageAckEvent, ReadState } from "@fosscord/util";
+import { emitEvent, getPermission, MessageAckEvent, ReadState, Snowflake } from "@fosscord/util";
import { Request, Response, Router } from "express";
import { route } from "@fosscord/api";
@@ -18,7 +18,11 @@ router.post("/", route({ body: "MessageAcknowledgeSchema" }), async (req: Reques
const permission = await getPermission(req.user_id, undefined, channel_id);
permission.hasThrow("VIEW_CHANNEL");
- await ReadState.update({ user_id: req.user_id, channel_id }, { user_id: req.user_id, channel_id, last_message_id: message_id });
+ let read_state = await ReadState.findOne({ user_id: req.user_id, channel_id });
+ if (!read_state) read_state = new ReadState({ user_id: req.user_id, channel_id });
+ read_state.last_message_id = message_id;
+
+ await read_state.save();
await emitEvent({
event: "MESSAGE_ACK",
diff --git a/gateway/src/opcodes/Identify.ts b/gateway/src/opcodes/Identify.ts
index 6decf21c..b81c7bf4 100644
--- a/gateway/src/opcodes/Identify.ts
+++ b/gateway/src/opcodes/Identify.ts
@@ -11,6 +11,7 @@ import {
PublicMember,
PublicUser,
PrivateUserProjection,
+ ReadState,
} from "@fosscord/util";
import { Send } from "../util/Send";
import { CLOSECODES, OPCODES } from "../util/Constants";
@@ -138,6 +139,13 @@ export async function onIdentify(this: WebSocket, data: Payload) {
//We save the session and we delete it when the websocket is closed
await session.save();
+ const read_states = await ReadState.find({ user_id: this.user_id });
+ read_states.forEach((s: any) => {
+ s.id = s.channel_id;
+ delete s.user_id;
+ delete s.channel_id;
+ });
+
const privateUser = {
avatar: user.avatar,
mobile: user.mobile,
@@ -176,8 +184,7 @@ export async function onIdentify(this: WebSocket, data: Payload) {
geo_ordered_rtc_regions: [], // TODO
relationships: user.relationships.map((x) => x.toPublicRelationship()),
read_state: {
- // TODO
- entries: [],
+ entries: read_states,
partial: false,
version: 304128,
},
diff --git a/util/src/entities/ReadState.ts b/util/src/entities/ReadState.ts
index 68e867a0..89480e83 100644
--- a/util/src/entities/ReadState.ts
+++ b/util/src/entities/ReadState.ts
@@ -1,4 +1,4 @@
-import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
+import { Column, Entity, Index, JoinColumn, ManyToOne, RelationId } from "typeorm";
import { BaseClass } from "./BaseClass";
import { Channel } from "./Channel";
import { Message } from "./Message";
@@ -9,8 +9,9 @@ import { User } from "./User";
// public read receipt ≥ notification cursor ≥ private fully read marker
@Entity("read_states")
+@Index(["channel_id", "user_id"], { unique: true })
export class ReadState extends BaseClass {
- @Column({ nullable: true })
+ @Column()
@RelationId((read_state: ReadState) => read_state.channel)
channel_id: string;
@@ -20,7 +21,7 @@ export class ReadState extends BaseClass {
})
channel: Channel;
- @Column({ nullable: true })
+ @Column()
@RelationId((read_state: ReadState) => read_state.user)
user_id: string;
@@ -35,15 +36,15 @@ export class ReadState extends BaseClass {
last_message_id: string;
@JoinColumn({ name: "last_message_id" })
- @ManyToOne(() => Message)
+ @ManyToOne(() => Message, { nullable: true })
last_message?: Message;
@Column({ nullable: true })
last_pin_timestamp?: Date;
- @Column()
+ @Column({ nullable: true })
mention_count: number;
- @Column()
+ @Column({ nullable: true })
manual: boolean;
}
diff --git a/util/src/util/Config.ts b/util/src/util/Config.ts
index eeeaa2ce..704f3f2f 100644
--- a/util/src/util/Config.ts
+++ b/util/src/util/Config.ts
@@ -12,7 +12,6 @@ export const Config = {
if (config) return config;
pairs = await ConfigEntity.find();
config = pairsToConfig(pairs);
- console.log(config.guild.autoJoin);
return this.set((config || {}).merge(DefaultConfigOptions));
},
--
cgit 1.5.1
From a1afb9b6e16412744b07e7508783eaa269d20168 Mon Sep 17 00:00:00 2001
From: Flam3rboy <34555296+Flam3rboy@users.noreply.github.com>
Date: Sat, 9 Oct 2021 18:07:01 +0200
Subject: :bug: rewrite locale en to en-US
---
api/client_test/index.html | 6 ++++++
1 file changed, 6 insertions(+)
(limited to 'api')
diff --git a/api/client_test/index.html b/api/client_test/index.html
index 41d41598..e35fe900 100644
--- a/api/client_test/index.html
+++ b/api/client_test/index.html
@@ -62,6 +62,12 @@
}
});
}
+
+ const settings = JSON.parse(localStorage.getItem("UserSettingsStore"));
+ if (settings && settings.locale === "en") {
+ settings.locale = "en-US";
+ localStorage.setItem("UserSettingsStore", JSON.stringify(settings));
+ }
--
cgit 1.5.1
From 5c4774a6f9ab7fd05f43c1da556d1395ca2d0168 Mon Sep 17 00:00:00 2001
From: Lobo Metalúrgico <43734867+LoboMetalurgico@users.noreply.github.com>
Date: Sat, 9 Oct 2021 11:43:27 -0300
Subject: (api): fix some issues
---
api/src/routes/guilds/#guild_id/emoji.ts | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
(limited to 'api')
diff --git a/api/src/routes/guilds/#guild_id/emoji.ts b/api/src/routes/guilds/#guild_id/emoji.ts
index 6b194f7b..000c9949 100644
--- a/api/src/routes/guilds/#guild_id/emoji.ts
+++ b/api/src/routes/guilds/#guild_id/emoji.ts
@@ -10,7 +10,6 @@ import {
Snowflake,
User
} from "@fosscord/util";
-import { HTTPError } from "lambert-server";
import { route } from "@fosscord/api";
const router = Router();
@@ -75,7 +74,7 @@ router.post("/", route({ body: "EmojiCreateSchema", permission: "MANAGE_EMOJIS_A
...body,
user: user,
managed: false,
- animated: false, // TODO: Add support animated emojis
+ animated: false, // TODO: Add support animated emojis
available: true
});
@@ -108,7 +107,7 @@ router.patch("/:emoji_id", route({ body: "EmojiModifySchema", permission: "MANAG
emojis: await Emoji.find({ guild_id: guild_id })
}
} as GuildEmojiUpdateEvent)
- ])
+ ]);
return res.json(emoji);
});
--
cgit 1.5.1
From 484758b317cc6097c96f45fa419b87a51608d181 Mon Sep 17 00:00:00 2001
From: xnacly
Date: Sat, 9 Oct 2021 22:49:29 +0200
Subject: :sparkles: random guest username generation added
---
api/client_test/index.html | 43 ++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 42 insertions(+), 1 deletion(-)
(limited to 'api')
diff --git a/api/client_test/index.html b/api/client_test/index.html
index e35fe900..20b431b8 100644
--- a/api/client_test/index.html
+++ b/api/client_test/index.html
@@ -5,6 +5,7 @@
Discord Test Client
+