Merge branch 'feat/welcomeMessages' into slowcord

This commit is contained in:
Madeline 2022-07-31 22:42:24 +10:00
commit 32a86b26fc

View File

@ -1,4 +1,5 @@
import { PublicUser, User } from "./User"; import { PublicUser, User } from "./User";
import { Message } from "./Message";
import { BaseClass } from "./BaseClass"; import { BaseClass } from "./BaseClass";
import { import {
Column, Column,
@ -19,6 +20,7 @@ import {
GuildMemberAddEvent, GuildMemberAddEvent,
GuildMemberRemoveEvent, GuildMemberRemoveEvent,
GuildMemberUpdateEvent, GuildMemberUpdateEvent,
MessageCreateEvent,
} from "../interfaces"; } from "../interfaces";
import { HTTPError } from "lambert-server"; import { HTTPError } from "lambert-server";
import { Role } from "./Role"; import { Role } from "./Role";
@ -70,7 +72,7 @@ export class Member extends BaseClassWithoutId {
@Column({ nullable: true }) @Column({ nullable: true })
nick?: string; nick?: string;
@JoinTable({ @JoinTable({
name: "member_roles", name: "member_roles",
joinColumn: { name: "index", referencedColumnName: "index" }, joinColumn: { name: "index", referencedColumnName: "index" },
@ -102,14 +104,14 @@ export class Member extends BaseClassWithoutId {
@Column({ nullable: true }) @Column({ nullable: true })
last_message_id?: string; last_message_id?: string;
/** /**
@JoinColumn({ name: "id" }) @JoinColumn({ name: "id" })
@ManyToOne(() => User, { @ManyToOne(() => User, {
onDelete: "DO NOTHING", onDelete: "DO NOTHING",
// do not auto-kick force-joined members just because their joiners left the server // do not auto-kick force-joined members just because their joiners left the server
}) **/ }) **/
@Column({ nullable: true}) @Column({ nullable: true })
joined_by?: string; joined_by?: string;
// TODO: add this when we have proper read receipts // TODO: add this when we have proper read receipts
@ -242,7 +244,7 @@ export class Member extends BaseClassWithoutId {
where: { where: {
id: guild_id, id: guild_id,
}, },
relations: PublicGuildRelations, relations: [ ...PublicGuildRelations, "system_channel" ],
}); });
if (await Member.count({ id: user.id, guild: { id: guild_id } })) if (await Member.count({ id: user.id, guild: { id: guild_id } }))
@ -302,6 +304,27 @@ export class Member extends BaseClassWithoutId {
user_id, user_id,
} as GuildCreateEvent), } as GuildCreateEvent),
]); ]);
if (guild.system_channel_id) {
// send welcome message
const message = new Message({
type: 7,
guild_id: guild.id,
channel_id: guild.system_channel_id,
author: user,
timestamp: new Date(),
reactions: [],
attachments: [],
embeds: [],
sticker_items: [],
edited_timestamp: undefined,
});
await Promise.all([
message.save(),
emitEvent({ event: "MESSAGE_CREATE", channel_id: message.channel_id, data: message } as MessageCreateEvent)
]);
}
} }
} }