diff --git a/src/api/routes/guilds/#guild_id/members/#member_id/index.ts b/src/api/routes/guilds/#guild_id/members/#member_id/index.ts index 6a9cfc559..7049857e7 100644 --- a/src/api/routes/guilds/#guild_id/members/#member_id/index.ts +++ b/src/api/routes/guilds/#guild_id/members/#member_id/index.ts @@ -17,7 +17,7 @@ */ import { route } from "@spacebar/api"; -import { DiscordApiErrors, emitEvent, Emoji, getPermission, getRights, Guild, GuildMemberUpdateEvent, handleFile, Member, Role, Sticker } from "@spacebar/util"; +import { Config, DiscordApiErrors, emitEvent, Emoji, getPermission, getRights, Guild, GuildMemberUpdateEvent, handleFile, Member, Role, Sticker } from "@spacebar/util"; import { Request, Response, Router } from "express"; import { MemberChangeSchema, PublicMemberProjection, PublicUserProjection } from "@spacebar/schemas"; @@ -173,7 +173,7 @@ router.put( if (member_id === "@me") { member_id = req.user_id; rights.hasThrow("JOIN_GUILDS"); - if (req.user_bot) throw DiscordApiErrors.BOT_PROHIBITED_ENDPOINT; + if (req.user_bot && !Config.get().user.botsCanUseInvites) throw DiscordApiErrors.BOT_PROHIBITED_ENDPOINT; } else { // TODO: check oauth2 scope diff --git a/src/api/routes/invites/index.ts b/src/api/routes/invites/index.ts index 7e43aa567..630fe03c3 100644 --- a/src/api/routes/invites/index.ts +++ b/src/api/routes/invites/index.ts @@ -17,7 +17,7 @@ */ import { route } from "@spacebar/api"; -import { Ban, DiscordApiErrors, emitEvent, getPermission, Guild, Invite, InviteDeleteEvent, PublicInviteRelation, User } from "@spacebar/util"; +import { Ban, Config, DiscordApiErrors, emitEvent, getPermission, Guild, Invite, InviteDeleteEvent, PublicInviteRelation, User } from "@spacebar/util"; import { Request, Response, Router } from "express"; import { HTTPError } from "lambert-server"; import { UserFlags } from "@spacebar/schemas"; @@ -68,7 +68,7 @@ router.post( }, }), async (req: Request, res: Response) => { - if (req.user_bot) throw DiscordApiErrors.BOT_PROHIBITED_ENDPOINT; + if (req.user_bot && !Config.get().user.botsCanUseInvites) throw DiscordApiErrors.BOT_PROHIBITED_ENDPOINT; const { invite_code } = req.params; const { public_flags } = req.user; diff --git a/src/util/config/types/UsersConfiguration.ts b/src/util/config/types/UsersConfiguration.ts index 2ac058e92..d51a3b851 100755 --- a/src/util/config/types/UsersConfiguration.ts +++ b/src/util/config/types/UsersConfiguration.ts @@ -19,4 +19,5 @@ export class UserConfiguration { blockedContains: string[] = ["discord", "clyde", "spacebar", "steam", "community", "support", "ticket"]; blockedEquals: string[] = ["everyone", "here"]; + botsCanUseInvites = false; }