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

1
.gitignore vendored
View File

@ -21,3 +21,4 @@ tmp/
dump/ dump/
result 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 { Channel, emitEvent, Message, MessageCreateEvent, Permissions, Sticker } from "@spacebar/util";
import { Request, Response, Router } from "express"; import { Request, Response, Router } from "express";
import { In } from "typeorm"; import { In } from "typeorm";
import { GreetRequestSchema, MessageType } from "@spacebar/schemas" import { GreetRequestSchema, MessageType } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true }); 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 }] : [], sticker_items: randomSticker ? [{ id: randomSticker.id, name: randomSticker.name, format_type: randomSticker.format_type }] : [],
}); });
channel.last_message_id = message.id;
await Promise.all([ await Promise.all([
message.save(), message.save(),
emitEvent({ emitEvent({
@ -95,6 +97,7 @@ router.post(
data: message, data: message,
channel_id, channel_id,
} as MessageCreateEvent), } as MessageCreateEvent),
channel.save(),
]); ]);
res.send(channel); res.send(channel);

View File

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

View File

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

View File

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