From 5482146da4c0db1ddab84ddc65f55a75d4251344 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Intevel=20=E3=83=84?= <59223342+Intevel@users.noreply.github.com> Date: Sat, 8 May 2021 13:04:23 +0200 Subject: [PATCH] Member Function addRole --- src/util/Member.ts | 42 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/src/util/Member.ts b/src/util/Member.ts index 2be9686e..2a5bab72 100644 --- a/src/util/Member.ts +++ b/src/util/Member.ts @@ -4,10 +4,13 @@ import { GuildDeleteEvent, GuildMemberAddEvent, GuildMemberRemoveEvent, + GuildMemberUpdateEvent, GuildModel, MemberModel, + RoleModel, UserModel, } from "@fosscord/server-util"; +import { response } from "express"; import { HTTPError } from "lambert-server"; import Config from "./Config"; import { emitEvent } from "./Event"; @@ -107,13 +110,36 @@ export async function removeMember(user_id: string, guild_id: string) { }, user_id: user_id, } as GuildDeleteEvent), - emitEvent({ - event: "GUILD_MEMBER_REMOVE", - data: { - guild_id: guild_id, - user: user, - }, - guild_id: guild_id, - } as GuildMemberRemoveEvent), ]); } + +export async function addRole(user_id: string, guild_id: string, role_id: string) { + const user = await getPublicUser(user_id); + + const guild = await GuildModel.findOne({ id: guild_id }).exec(); + if (!guild) throw new HTTPError("Guild not found", 404); + + const role = await RoleModel.findOne({ id: role_id, guild_id: guild_id }).exec(); + if (!role) throw new HTTPError("role not found", 404); + + var memberObj = await MemberModel.findOneAndUpdate({ + id: user_id, + guild_id: guild_id, + }, { $push: { roles: role_id } }).exec(); + + if(!memberObj) throw new Error("Internal server error"); + + emitEvent({ + event: "GUILD_MEMBER_UPDATE", + data: { + guild_id: guild_id, + user: user, + roles: memberObj.roles + + }, + user_id: user_id, + } as GuildMemberUpdateEvent); + +} + +