Migrate events to typescript
This commit is contained in:
parent
24818bcb44
commit
44571d735a
10 changed files with 155 additions and 142 deletions
36
src/events/MemberEvents.ts
Normal file
36
src/events/MemberEvents.ts
Normal file
|
@ -0,0 +1,36 @@
|
|||
import { Event } from "vylbot-core";
|
||||
import { GuildMember } from "discord.js";
|
||||
import EventEmbed from "../helpers/EventEmbed";
|
||||
import GuildMemberUpdate from "./MemberEvents/GuildMemberUpdate";
|
||||
|
||||
export default class MemberEvents extends Event {
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
public override guildMemberAdd(member: GuildMember) {
|
||||
const embed = new EventEmbed(member.guild, "Member Joined");
|
||||
embed.AddUser("User", member.user, true);
|
||||
embed.addField("Created", member.user.createdAt);
|
||||
embed.setFooter(`Id: ${member.user.id}`);
|
||||
|
||||
embed.SendToMemberLogsChannel();
|
||||
}
|
||||
|
||||
public override guildMemberRemove(member: GuildMember) {
|
||||
const embed = new EventEmbed(member.guild, "Member Left");
|
||||
embed.AddUser("User", member.user, true);
|
||||
embed.addField("Joined", member.joinedAt);
|
||||
embed.setFooter(`Id: ${member.user.id}`);
|
||||
|
||||
embed.SendToMemberLogsChannel();
|
||||
}
|
||||
|
||||
public override guildMemberUpdate(oldMember: GuildMember, newMember: GuildMember) {
|
||||
const handler = new GuildMemberUpdate(oldMember, newMember);
|
||||
|
||||
if (oldMember.nickname != newMember.nickname) { // Nickname change
|
||||
handler.NicknameChanged();
|
||||
}
|
||||
}
|
||||
}
|
25
src/events/MemberEvents/GuildMemberUpdate.ts
Normal file
25
src/events/MemberEvents/GuildMemberUpdate.ts
Normal file
|
@ -0,0 +1,25 @@
|
|||
import { GuildMember } from "discord.js";
|
||||
import EventEmbed from "../../helpers/EventEmbed";
|
||||
|
||||
export default class GuildMemberUpdate {
|
||||
private _oldMember: GuildMember;
|
||||
private _newMember: GuildMember;
|
||||
|
||||
constructor(oldMember: GuildMember, newMember: GuildMember) {
|
||||
this._oldMember = oldMember;
|
||||
this._newMember = newMember;
|
||||
}
|
||||
|
||||
public NicknameChanged() {
|
||||
const oldNickname = this._oldMember.nickname || "*none*";
|
||||
const newNickname = this._newMember.nickname || "*none*";
|
||||
|
||||
const embed = new EventEmbed(this._newMember.guild, "Nickname Changed");
|
||||
embed.AddUser("User", this._newMember.user, true);
|
||||
embed.addField("Before", oldNickname, true);
|
||||
embed.addField("After", newNickname, true);
|
||||
embed.setFooter(`Id: ${this._newMember.user.id}`);
|
||||
|
||||
embed.SendToMemberLogsChannel();
|
||||
}
|
||||
}
|
35
src/events/MessageEvents.ts
Normal file
35
src/events/MessageEvents.ts
Normal file
|
@ -0,0 +1,35 @@
|
|||
import { Event } from "vylbot-core";
|
||||
import { Message } from "discord.js";
|
||||
import EventEmbed from "../helpers/EventEmbed";
|
||||
|
||||
export default class MessageEvents extends Event {
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
public override messageDelete(message: Message) {
|
||||
if (!message.guild) return;
|
||||
|
||||
const embed = new EventEmbed(message.guild, "Message Deleted");
|
||||
embed.AddUser("User", message.author, true);
|
||||
embed.addField("Channel", message.channel, true);
|
||||
embed.addField("Content", `\`\`\`${message.content || "*none*"}\`\`\``);
|
||||
embed.addField("Attachments", `\`\`\`${message.attachments.map(x => x.url).join("\n")}`);
|
||||
|
||||
embed.SendToMessageLogsChannel();
|
||||
}
|
||||
|
||||
public override messageUpdate(oldMessage: Message, newMessage: Message) {
|
||||
if (!newMessage.guild) return;
|
||||
if (newMessage.author.bot) return;
|
||||
if (oldMessage.content == newMessage.content) return;
|
||||
|
||||
const embed = new EventEmbed(newMessage.guild, "Message Edited");
|
||||
embed.AddUser("User", newMessage.author, true);
|
||||
embed.addField("Channel", newMessage.channel, true);
|
||||
embed.addField("Before", `\`\`\`${oldMessage.content || "*none*"}\`\`\``);
|
||||
embed.addField("After", `\`\`\`${newMessage.content || "*none*"}\`\`\``);
|
||||
|
||||
embed.SendToMessageLogsChannel();
|
||||
}
|
||||
}
|
54
src/helpers/EventEmbed.ts
Normal file
54
src/helpers/EventEmbed.ts
Normal file
|
@ -0,0 +1,54 @@
|
|||
import { MessageEmbed, TextChannel, User, Guild } from "discord.js";
|
||||
import ErrorMessages from "../constants/ErrorMessages";
|
||||
import ErrorEmbed from "./ErrorEmbed";
|
||||
|
||||
export default class EventEmbed extends MessageEmbed {
|
||||
private _guild: Guild;
|
||||
|
||||
constructor(guild: Guild, title: string) {
|
||||
super();
|
||||
|
||||
super.setColor(process.env.EMBED_COLOUR!);
|
||||
super.setTitle(title);
|
||||
|
||||
this._guild = guild;
|
||||
}
|
||||
|
||||
// Detail methods
|
||||
public AddUser(title: string, user: User, setThumbnail: boolean = false) {
|
||||
super.addField(title, `${user} \`${user.tag}\``, true);
|
||||
|
||||
if (setThumbnail) {
|
||||
super.setThumbnail(user.displayAvatarURL());
|
||||
}
|
||||
}
|
||||
|
||||
public AddReason(message: String) {
|
||||
super.addField("Reason", message || "*none*");
|
||||
}
|
||||
|
||||
// Send methods
|
||||
public SendToChannel(name: string) {
|
||||
const channel = this._guild.channels.cache
|
||||
.find(channel => channel.name == name) as TextChannel;
|
||||
|
||||
if (!channel) {
|
||||
console.error(`Unable to find channel ${name}`);
|
||||
return;
|
||||
}
|
||||
|
||||
channel.send(this);
|
||||
}
|
||||
|
||||
public SendToMessageLogsChannel() {
|
||||
this.SendToChannel(process.env.CHANNELS_LOGS_MESSAGE!)
|
||||
}
|
||||
|
||||
public SendToMemberLogsChannel() {
|
||||
this.SendToChannel(process.env.CHANNELS_LOGS_MEMBER!)
|
||||
}
|
||||
|
||||
public SendToModLogsChannel() {
|
||||
this.SendToChannel(process.env.CHANNELS_LOGS_MOD!)
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue