mirror of
https://github.com/ZeppelinBot/Zeppelin.git
synced 2025-05-13 21:35:02 +00:00
Remove manual mutes (#33)
The unmute command can now unmute users who have had the mute role manually applied to them
This commit is contained in:
parent
5d49a3b5eb
commit
4eb28c3bd8
2 changed files with 24 additions and 9 deletions
backend/src/plugins
|
@ -275,14 +275,18 @@ export class MutesPlugin extends ZeppelinPlugin<TConfigSchema> {
|
|||
caseArgs: Partial<CaseArgs> = {},
|
||||
): Promise<UnmuteResult> {
|
||||
const existingMute = await this.mutes.findExistingMuteForUserId(userId);
|
||||
if (!existingMute) return;
|
||||
|
||||
const user = await this.resolveUser(userId);
|
||||
const member = await this.getMember(userId, true); // Grab the fresh member so we don't have stale role info
|
||||
|
||||
if (!existingMute && !this.hasMutedRole(member)) return;
|
||||
|
||||
if (unmuteTime) {
|
||||
// Schedule timed unmute (= just set the mute's duration)
|
||||
await this.mutes.updateExpiryTime(userId, unmuteTime);
|
||||
if (!existingMute) {
|
||||
await this.mutes.addMute(userId, unmuteTime);
|
||||
} else {
|
||||
await this.mutes.updateExpiryTime(userId, unmuteTime);
|
||||
}
|
||||
} else {
|
||||
// Unmute immediately
|
||||
if (member) {
|
||||
|
@ -295,8 +299,9 @@ export class MutesPlugin extends ZeppelinPlugin<TConfigSchema> {
|
|||
`Member ${userId} not found in guild ${this.guild.name} (${this.guildId}) when attempting to unmute`,
|
||||
);
|
||||
}
|
||||
|
||||
await this.mutes.clear(userId);
|
||||
if (existingMute) {
|
||||
await this.mutes.clear(userId);
|
||||
}
|
||||
}
|
||||
|
||||
const timeUntilUnmute = unmuteTime && humanizeDuration(unmuteTime);
|
||||
|
@ -308,6 +313,9 @@ export class MutesPlugin extends ZeppelinPlugin<TConfigSchema> {
|
|||
} else {
|
||||
noteDetails.push(`Unmuted immediately`);
|
||||
}
|
||||
if (!existingMute) {
|
||||
noteDetails.push(`Removed external mute`);
|
||||
}
|
||||
|
||||
const casesPlugin = this.getPlugin<CasesPlugin>("cases");
|
||||
const createdCase = await casesPlugin.createCase({
|
||||
|
@ -338,6 +346,13 @@ export class MutesPlugin extends ZeppelinPlugin<TConfigSchema> {
|
|||
};
|
||||
}
|
||||
|
||||
public hasMutedRole(member: Member) {
|
||||
if (member.roles.includes(this.getConfig().mute_role)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@d.command("mutes", [], {
|
||||
options: [
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue