Merge pull request #1052 from spacebarchat/feat/auto-create-bot-users

Feat: Auto add bot users to new apps
This commit is contained in:
Puyodead1 2023-05-07 00:15:04 -04:00 committed by GitHub
commit ba0d1bb6ff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 45 additions and 18 deletions

View File

@ -7199,9 +7199,14 @@
},
"instanceId": {
"type": "string"
},
"autoCreateBotUsers": {
"type": "boolean",
"default": false
}
},
"required": [
"autoCreateBotUsers",
"correspondenceEmail",
"correspondenceUserID",
"frontPage",

View File

@ -422590,10 +422590,15 @@
},
"instanceId": {
"type": "string"
},
"autoCreateBotUsers": {
"type": "boolean",
"default": false
}
},
"additionalProperties": false,
"required": [
"autoCreateBotUsers",
"correspondenceEmail",
"correspondenceUserID",
"frontPage",

View File

@ -22,6 +22,7 @@ import {
BotModifySchema,
DiscordApiErrors,
User,
createAppBotUser,
generateToken,
handleFile,
} from "@spacebar/util";
@ -52,23 +53,7 @@ router.post(
if (app.owner.id != req.user_id)
throw DiscordApiErrors.ACTION_NOT_AUTHORIZED_ON_APPLICATION;
const user = await User.register({
username: app.name,
password: undefined,
id: app.id,
req,
});
user.id = app.id;
user.premium_since = new Date();
user.bot = true;
await user.save();
// flags is NaN here?
app.assign({ bot: user, flags: app.flags || 0 });
await app.save();
const user = await createAppBotUser(app, req);
res.send({
token: await generateToken(user.id),

View File

@ -20,7 +20,9 @@ import { route } from "@spacebar/api";
import {
Application,
ApplicationCreateSchema,
Config,
User,
createAppBotUser,
trimSpecial,
} from "@spacebar/util";
import { Request, Response, Router } from "express";
@ -68,7 +70,11 @@ router.post(
flags: 0,
});
await app.save();
// april 14, 2023: discord made bot users be automatically added to all new apps
const { autoCreateBotUsers } = Config.get().general;
if (autoCreateBotUsers) {
await createAppBotUser(app, req);
} else await app.save();
res.json(app);
},

View File

@ -28,4 +28,5 @@ export class GeneralConfiguration {
correspondenceUserID: string | null = null;
image: string | null = null;
instanceId: string = Snowflake.generate();
autoCreateBotUsers: boolean = false;
}

View File

@ -0,0 +1,24 @@
import { Request } from "express";
import { Application, User } from "../entities";
export async function createAppBotUser(app: Application, req: Request) {
const user = await User.register({
username: app.name,
password: undefined,
id: app.id,
req,
});
user.id = app.id;
user.premium_since = new Date();
user.bot = true;
await user.save();
// flags is NaN here?
app.assign({ bot: user, flags: app.flags || 0 });
await app.save();
return user;
}

View File

@ -42,3 +42,4 @@ export * from "./Token";
export * from "./TraverseDirectory";
export * from "./WebAuthn";
export * from "./Gifs";
export * from "./Application";