3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-05-10 20:35:02 +00:00

Allow certain or all roles to be removed upon mute and readded on unmute (#140)

This commit is contained in:
Nils 2021-02-13 19:04:40 +01:00 committed by GitHub
parent 8e812aab2f
commit a13b0b6fda
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 135 additions and 27 deletions

View file

@ -34,7 +34,7 @@ export class GuildMutes extends BaseGuildRepository {
return mute != null;
}
async addMute(userId, expiryTime): Promise<Mute> {
async addMute(userId, expiryTime, rolesToRestore?: string[]): Promise<Mute> {
const expiresAt = expiryTime
? moment
.utc()
@ -46,12 +46,13 @@ export class GuildMutes extends BaseGuildRepository {
guild_id: this.guildId,
user_id: userId,
expires_at: expiresAt,
roles_to_restore: rolesToRestore ?? [],
});
return (await this.mutes.findOne({ where: result.identifiers[0] }))!;
}
async updateExpiryTime(userId, newExpiryTime) {
async updateExpiryTime(userId, newExpiryTime, rolesToRestore?: string[]) {
const expiresAt = newExpiryTime
? moment
.utc()
@ -59,15 +60,28 @@ export class GuildMutes extends BaseGuildRepository {
.format("YYYY-MM-DD HH:mm:ss")
: null;
return this.mutes.update(
{
guild_id: this.guildId,
user_id: userId,
},
{
expires_at: expiresAt,
},
);
if (rolesToRestore && rolesToRestore.length) {
return this.mutes.update(
{
guild_id: this.guildId,
user_id: userId,
},
{
expires_at: expiresAt,
roles_to_restore: rolesToRestore,
},
);
} else {
return this.mutes.update(
{
guild_id: this.guildId,
user_id: userId,
},
{
expires_at: expiresAt,
},
);
}
}
async getActiveMutes(): Promise<Mute[]> {

View file

@ -15,4 +15,6 @@ export class Mute {
@Column({ type: String, nullable: true }) expires_at: string | null;
@Column() case_id: number;
@Column("simple-array") roles_to_restore: string[];
}