🐛 fix /guilds/ route type

This commit is contained in:
Flam3rboy 2021-02-14 21:56:31 +01:00
parent 45116c6d8f
commit e49591a78e
2 changed files with 24 additions and 23 deletions

4
package-lock.json generated
View File

@ -780,7 +780,7 @@
}, },
"node_modules/fosscord-server-util": { "node_modules/fosscord-server-util": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "git+ssh://git@github.com/fosscord/fosscord-server-util.git#4125b7810d6da218fef6e26ec7cfbd1032c4cbb3", "resolved": "git+ssh://git@github.com/fosscord/fosscord-server-util.git#775296d0048d290b959f07cde10a3ffc1430bad9",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"jsonwebtoken": "^8.5.1", "jsonwebtoken": "^8.5.1",
@ -2998,7 +2998,7 @@
"integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
}, },
"fosscord-server-util": { "fosscord-server-util": {
"version": "git+ssh://git@github.com/fosscord/fosscord-server-util.git#4125b7810d6da218fef6e26ec7cfbd1032c4cbb3", "version": "git+ssh://git@github.com/fosscord/fosscord-server-util.git#775296d0048d290b959f07cde10a3ffc1430bad9",
"from": "fosscord-server-util@github:fosscord/fosscord-server-util", "from": "fosscord-server-util@github:fosscord/fosscord-server-util",
"requires": { "requires": {
"jsonwebtoken": "^8.5.1", "jsonwebtoken": "^8.5.1",

View File

@ -9,6 +9,9 @@ import {
UserModel, UserModel,
Snowflake, Snowflake,
getPermission, getPermission,
Guild,
Member,
PublicMember,
} from "fosscord-server-util"; } from "fosscord-server-util";
import { HTTPError } from "lambert-server"; import { HTTPError } from "lambert-server";
import { check } from "./../../../../util/instanceOf"; import { check } from "./../../../../util/instanceOf";
@ -50,7 +53,10 @@ router.post("/", check(GuildCreateSchema), async (req: Request, res: Response) =
// // TODO: check if user is in more than (config max guilds) // // TODO: check if user is in more than (config max guilds)
const { maxGuilds } = Config.get().limits.user; const { maxGuilds } = Config.get().limits.user;
const user = await UserModel.findOne({ id: req.userid }, "guilds").exec(); const user = await UserModel.findOne(
{ id: req.userid },
"guilds username discriminator id public_flags avatar"
).exec();
if (!user) throw new HTTPError("User not found", 404); if (!user) throw new HTTPError("User not found", 404);
@ -59,11 +65,7 @@ router.post("/", check(GuildCreateSchema), async (req: Request, res: Response) =
} }
const guildID = Snowflake.generate(); const guildID = Snowflake.generate();
const guild: any = { const guild: Guild = {
// TODO:
// ! temp fix [Type: any] for:
// ! Conversion of type '{ event: "GUILD_CREATE"; data: { guild_id: bigint; name: string; region: string; owner_id: any; icon: undefined; afk_channel_id: undefined; afk_timeout: number; application_id: undefined; banner: undefined; ... 27 more ...; widget_enabled: boolean; }; guild_id: bigint; }' to type 'GuildCreateEvent' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.Type '{ event: "GUILD_CREATE"; data: { guild_id: bigint; name: string; region: string; owner_id: any; icon: undefined; afk_channel_id: undefined; afk_timeout: number; application_id: undefined; banner: undefined; ... 27 more ...; widget_enabled: boolean; }; guild_id: bigint; }' is missing the following properties from type 'GuildCreateEvent': $ignore, $isDefault, $isDeleted, $isEmpty, and 44 more.ts(2352)
name: body.name, name: body.name,
region: body.region || "en-US", region: body.region || "en-US",
owner_id: req.userid, owner_id: req.userid,
@ -96,7 +98,6 @@ router.post("/", check(GuildCreateSchema), async (req: Request, res: Response) =
unavailable: false, unavailable: false,
vanity_url_code: undefined, vanity_url_code: undefined,
verification_level: undefined, verification_level: undefined,
voice_states: [],
welcome_screen: [], welcome_screen: [],
widget_channel_id: undefined, widget_channel_id: undefined,
widget_enabled: false, widget_enabled: false,
@ -119,22 +120,19 @@ router.post("/", check(GuildCreateSchema), async (req: Request, res: Response) =
}).save(); }).save();
// // TODO: automatically add user to guild // // TODO: automatically add user to guild
const member: any = { const member = {
// TODO:
// ! temp fix [Type: any] for:
// ! Conversion of type '{ event: "GUILD_MEMBER_ADD"; data: { guild_id: bigint; id: any; nick: null; roles: bigint[]; joined_at: number; premium_since: null; deaf: boolean; mute: boolean; pending: boolean; permissions: number; }; guild_id: bigint; }' to type 'GuildMemberAddEvent' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.Type '{ event: "GUILD_MEMBER_ADD"; data: { guild_id: bigint; id: any; nick: null; roles: bigint[]; joined_at: number; premium_since: null; deaf: boolean; mute: boolean; pending: boolean; permissions: number; }; guild_id: bigint; }' is missing the following properties from type 'GuildMemberAddEvent': $ignore, $isDefault, $isDeleted, $isEmpty, and 44 more.ts(2352)
id: req.userid, id: req.userid,
guild_id: guildID, guild_id: guildID,
nick: null, nick: undefined,
roles: [guildID], roles: [guildID],
joined_at: Date.now(), joined_at: Date.now(),
premium_since: null, premium_since: undefined,
deaf: false, deaf: false,
mute: false, mute: false,
pending: false, pending: false,
permissions: 8, permissions: 8n,
}; };
await new MemberModel({ await new MemberModel({
...member, ...member,
settings: { settings: {
@ -154,16 +152,21 @@ router.post("/", check(GuildCreateSchema), async (req: Request, res: Response) =
event: "GUILD_MEMBER_ADD", event: "GUILD_MEMBER_ADD",
data: { data: {
...member, ...member,
user: {
username: user.username,
discriminator: user.discriminator,
id: user.id,
publicFlags: user.public_flags,
avatar: user.avatar,
},
guild_id: guildID, guild_id: guildID,
}, },
guild_id: guildID, guild_id: guildID,
} as GuildMemberAddEvent); } as GuildMemberAddEvent);
await emitEvent({ await emitEvent({
event: "GUILD_CREATE", event: "GUILD_CREATE",
data: { data: guild,
...guild,
guild_id: guildID,
},
guild_id: guildID, guild_id: guildID,
} as GuildCreateEvent); } as GuildCreateEvent);
} catch (error) { } catch (error) {
@ -197,5 +200,3 @@ router.delete("/:id", async (req: Request, res: Response) => {
}); });
export default router; export default router;
export async function addMember(guild: bigint, user: bigint) {}