summary refs log tree commit diff
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2026-01-24 19:27:39 +0100
committerRory& <root@rory.gay>2026-01-24 19:27:39 +0100
commit4dd959ad549fe9855ef338b1dbdedbb498bb9727 (patch)
tree5b087508a0b871825ce4ac586c5ae9fc715281b6
parentForbid dashes in emoji names (diff)
downloadserver-ts-4dd959ad549fe9855ef338b1dbdedbb498bb9727.tar.xz
Make bot invites configurable
-rw-r--r--src/api/routes/guilds/#guild_id/members/#member_id/index.ts4
-rw-r--r--src/api/routes/invites/index.ts4
-rwxr-xr-xsrc/util/config/types/UsersConfiguration.ts1
3 files changed, 5 insertions, 4 deletions
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 6a9cfc55..7049857e 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 7e43aa56..630fe03c 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 2ac058e9..d51a3b85 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; }