Merge branch 'master' into RoleTypeFix2

This commit is contained in:
Cyber 2025-11-18 07:34:56 +01:00 committed by GitHub
commit 13a750da76
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 26 additions and 4 deletions

3
.gitignore vendored
View File

@ -20,4 +20,5 @@ build
tmp/
dump/
result
jwt.key*
jwt.key*
bun.lock

View File

@ -20,7 +20,7 @@ import { route } from "@spacebar/api";
import { Channel, emitEvent, Message, MessageCreateEvent, Permissions, Sticker } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { In } from "typeorm";
import { GreetRequestSchema, MessageType } from "@spacebar/schemas"
import { GreetRequestSchema, MessageType } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
@ -88,6 +88,8 @@ router.post(
sticker_items: randomSticker ? [{ id: randomSticker.id, name: randomSticker.name, format_type: randomSticker.format_type }] : [],
});
channel.last_message_id = message.id;
await Promise.all([
message.save(),
emitEvent({
@ -95,6 +97,7 @@ router.post(
data: message,
channel_id,
} as MessageCreateEvent),
channel.save(),
]);
res.send(channel);

View File

@ -20,4 +20,5 @@ export class AutoJoinConfiguration {
enabled: boolean = true;
guilds: string[] = [];
canLeave: boolean = true;
bots: boolean = false;
}

View File

@ -358,7 +358,7 @@ export class Member extends BaseClassWithoutId {
hide_muted_channels: false,
notify_highlights: 0,
channel_overrides: {},
message_notifications: 0,
message_notifications: guild.default_message_notifications,
mobile_push: true,
muted: false,
suppress_everyone: false,
@ -397,6 +397,9 @@ export class Member extends BaseClassWithoutId {
]);
if (guild.system_channel_id) {
const channel = await Channel.findOneOrFail({
where: { id: guild.system_channel_id },
});
// Send a welcome message
const message = Message.create({
type: 7,
@ -414,6 +417,9 @@ export class Member extends BaseClassWithoutId {
mention_roles: [],
mention_everyone: false,
});
channel.last_message_id = message.id;
await Promise.all([
message.save(),
emitEvent({
@ -421,6 +427,7 @@ export class Member extends BaseClassWithoutId {
channel_id: message.channel_id,
data: message,
} as MessageCreateEvent),
channel.save(),
]);
}
}

View File

@ -157,7 +157,7 @@ export class User extends BaseClass {
@OneToOne(() => UserSettings, {
cascade: true,
orphanedRowAction: "delete",
nullable: true
nullable: true,
})
@JoinColumn()
settings?: UserSettings;
@ -257,6 +257,7 @@ export class User extends BaseClass {
password,
id,
req,
bot,
}: {
username: string;
password?: string;
@ -264,6 +265,7 @@ export class User extends BaseClass {
date_of_birth?: Date; // "2000-04-03"
id?: string;
req?: Request;
bot?: boolean;
}) {
// trim special uf8 control characters -> Backspace, Newline, ...
username = trimSpecial(username);
@ -306,6 +308,7 @@ export class User extends BaseClass {
premium_type: Config.get().defaults.user.premiumType ?? 0,
verified: Config.get().defaults.user.verified ?? true,
created_at: new Date(),
bot: !!bot,
});
user.validate();
@ -319,6 +322,12 @@ export class User extends BaseClass {
}
setImmediate(async () => {
if (bot) {
const { guild } = Config.get();
if (!guild.autoJoin.bots) {
return;
}
}
if (Config.get().guild.autoJoin.enabled) {
for (const guild of Config.get().guild.autoJoin.guilds || []) {
await Member.addToGuild(user.id, guild).catch((e) => console.error("[Autojoin]", e));

View File

@ -7,6 +7,7 @@ export async function createAppBotUser(app: Application, req: Request) {
password: undefined,
id: app.id,
req,
bot: true,
});
user.id = app.id;