1 |
rakinar2 |
577 |
import { GuildMember } from "discord.js"; |
2 |
|
|
import DiscordClient from "../client/Client"; |
3 |
|
|
import MessageEmbed from "../client/MessageEmbed"; |
4 |
|
|
import Service from "../utils/structures/Service"; |
5 |
|
|
|
6 |
|
|
export default class Automute extends Service { |
7 |
|
|
MuteRecord: any; |
8 |
|
|
|
9 |
|
|
constructor(client: DiscordClient) { |
10 |
|
|
super(client); |
11 |
|
|
this.MuteRecord = require("../models/MuteRecord").default; |
12 |
|
|
} |
13 |
|
|
|
14 |
|
|
public async mute(member: GuildMember) { |
15 |
|
|
await member.roles.add(this.client.config.props[member.guild.id].mute_role); |
16 |
|
|
} |
17 |
|
|
|
18 |
|
|
public async onMemberJoin(member: GuildMember) { |
19 |
|
|
const { MuteRecord } = this; |
20 |
|
|
const muteRecord = await MuteRecord.findOne({ |
21 |
|
|
where: { |
22 |
|
|
user_id: member.user.id, |
23 |
|
|
guild_id: member.guild.id |
24 |
|
|
} |
25 |
|
|
}); |
26 |
|
|
|
27 |
|
|
if (!muteRecord) { |
28 |
|
|
return; |
29 |
|
|
} |
30 |
|
|
|
31 |
|
|
await this.mute(member); |
32 |
|
|
|
33 |
|
|
this.client.logger.send(member.guild, { |
34 |
|
|
embeds: [ |
35 |
|
|
new MessageEmbed({ |
36 |
|
|
author: { |
37 |
|
|
name: member.user.tag, |
38 |
|
|
iconURL: member.user.displayAvatarURL(), |
39 |
|
|
}, |
40 |
|
|
description: 'This user had left the server when they were muted. They\'ve been muted again.', |
41 |
|
|
color: 'GOLD', |
42 |
|
|
footer: { text: 'Auto Mute' } |
43 |
|
|
}) |
44 |
|
|
.setTimestamp() |
45 |
|
|
] |
46 |
|
|
}); |
47 |
|
|
|
48 |
|
|
await muteRecord.destroy(); |
49 |
|
|
} |
50 |
|
|
|
51 |
|
|
public async onMemberLeave(member: GuildMember) { |
52 |
|
|
const { MuteRecord } = this; |
53 |
|
|
|
54 |
|
|
if (!member.roles.cache.has(this.client.config.props[member.guild.id].mute_role)) { |
55 |
|
|
return; |
56 |
|
|
} |
57 |
|
|
|
58 |
|
|
const muteRecord = await MuteRecord.findOne({ |
59 |
|
|
where: { |
60 |
|
|
user_id: member.user.id, |
61 |
|
|
guild_id: member.guild.id |
62 |
|
|
} |
63 |
|
|
}); |
64 |
|
|
|
65 |
|
|
if (!muteRecord) { |
66 |
|
|
await MuteRecord.create({ |
67 |
|
|
user_id: member.user.id, |
68 |
|
|
guild_id: member.guild.id |
69 |
|
|
}); |
70 |
|
|
} |
71 |
|
|
} |
72 |
|
|
} |