Feature/81 slash command support (#192)
* Update discord.js * Migrate to slash commands * Clean up imports * Update permissions * Fix guild-specific commands not showing up * Fix changes requested
This commit is contained in:
parent
0465697b87
commit
ed8f5927c8
52 changed files with 1469 additions and 1850 deletions
|
@ -1,8 +1,8 @@
|
|||
import { Event } from "../type/event";
|
||||
import { GuildMember } from "discord.js";
|
||||
import EventEmbed from "../helpers/embeds/EventEmbed";
|
||||
import { EmbedBuilder, GuildMember, TextChannel } from "discord.js";
|
||||
import GuildMemberUpdate from "./MemberEvents/GuildMemberUpdate";
|
||||
import SettingsHelper from "../helpers/SettingsHelper";
|
||||
import EmbedColours from "../constants/EmbedColours";
|
||||
|
||||
export default class MemberEvents extends Event {
|
||||
constructor() {
|
||||
|
@ -15,15 +15,29 @@ export default class MemberEvents extends Event {
|
|||
const enabled = await SettingsHelper.GetSetting("event.member.add.enabled", member.guild.id);
|
||||
if (!enabled || enabled.toLowerCase() != "true") return;
|
||||
|
||||
const embed = new EventEmbed(member.client, member.guild, "Member Joined");
|
||||
embed.AddUser("User", member.user, true);
|
||||
embed.addField("Created", member.user.createdAt.toISOString());
|
||||
embed.setFooter({ text: `Id: ${member.user.id}` });
|
||||
const embed = new EmbedBuilder()
|
||||
.setColor(EmbedColours.Ok)
|
||||
.setTitle('Member Joined')
|
||||
.setDescription(`${member.user} \`${member.user.tag}\``)
|
||||
.setFooter({ text: `Id: ${member.user.id}` })
|
||||
.addFields([
|
||||
{
|
||||
name: 'Created',
|
||||
value: member.user.createdAt.toISOString(),
|
||||
}
|
||||
]);
|
||||
|
||||
const channel = await SettingsHelper.GetSetting("event.member.add.channel", member.guild.id);
|
||||
if (!channel || !member.guild.channels.cache.find(x => x.name == channel)) return;
|
||||
const channelSetting = await SettingsHelper.GetSetting("event.member.add.channel", member.guild.id);
|
||||
|
||||
await embed.SendToChannel(channel);
|
||||
if (!channelSetting) return;
|
||||
|
||||
const channel = member.guild.channels.cache.find(x => x.name == channelSetting);
|
||||
|
||||
if (!channel) return;
|
||||
|
||||
const guildChannel = channel as TextChannel;
|
||||
|
||||
await guildChannel.send({ embeds: [embed ]});
|
||||
}
|
||||
|
||||
public override async guildMemberRemove(member: GuildMember) {
|
||||
|
@ -32,15 +46,29 @@ export default class MemberEvents extends Event {
|
|||
const enabled = await SettingsHelper.GetSetting("event.member.remove.enabled", member.guild.id);
|
||||
if (!enabled || enabled.toLowerCase() != "true") return;
|
||||
|
||||
const embed = new EventEmbed(member.client, member.guild, "Member Left");
|
||||
embed.AddUser("User", member.user, true);
|
||||
embed.addField("Joined", member.joinedAt?.toISOString() || "n/a");
|
||||
embed.setFooter({ text: `Id: ${member.user.id}` });
|
||||
const embed = new EmbedBuilder()
|
||||
.setColor(EmbedColours.Ok)
|
||||
.setTitle('Member Left')
|
||||
.setDescription(`${member.user} \`${member.user.tag}\``)
|
||||
.setFooter({ text: `Id: ${member.user.id}` })
|
||||
.addFields([
|
||||
{
|
||||
name: 'Joined',
|
||||
value: member.joinedAt ? member.joinedAt.toISOString() : "*none*",
|
||||
}
|
||||
]);
|
||||
|
||||
const channel = await SettingsHelper.GetSetting("event.member.remove.channel", member.guild.id);
|
||||
if (!channel || !member.guild.channels.cache.find(x => x.name == channel)) return;
|
||||
|
||||
await embed.SendToChannel(channel);
|
||||
const channelSetting = await SettingsHelper.GetSetting("event.member.remove.channel", member.guild.id);
|
||||
|
||||
if (!channelSetting) return;
|
||||
|
||||
const channel = member.guild.channels.cache.find(x => x.name == channelSetting);
|
||||
|
||||
if (!channel) return;
|
||||
|
||||
const guildChannel = channel as TextChannel;
|
||||
|
||||
await guildChannel.send({ embeds: [embed ]});
|
||||
}
|
||||
|
||||
public override async guildMemberUpdate(oldMember: GuildMember, newMember: GuildMember) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { GuildMember } from "discord.js";
|
||||
import EventEmbed from "../../helpers/embeds/EventEmbed";
|
||||
import { EmbedBuilder, GuildMember, TextChannel } from "discord.js";
|
||||
import EmbedColours from "../../constants/EmbedColours";
|
||||
import SettingsHelper from "../../helpers/SettingsHelper";
|
||||
|
||||
export default class GuildMemberUpdate {
|
||||
|
@ -18,15 +18,32 @@ export default class GuildMemberUpdate {
|
|||
const oldNickname = this.oldMember.nickname || "*none*";
|
||||
const newNickname = this.newMember.nickname || "*none*";
|
||||
|
||||
const embed = new EventEmbed(this.oldMember.client, this.newMember.guild, "Nickname Changed");
|
||||
embed.AddUser("User", this.newMember.user, true);
|
||||
embed.addField("Before", oldNickname, true);
|
||||
embed.addField("After", newNickname, true);
|
||||
embed.setFooter({ text: `Id: ${this.newMember.user.id}` });
|
||||
const embed = new EmbedBuilder()
|
||||
.setColor(EmbedColours.Ok)
|
||||
.setTitle('Nickname Changed')
|
||||
.setDescription(`${this.newMember.user} \`${this.newMember.user.tag}\``)
|
||||
.setFooter({ text: `Id: ${this.newMember.user.id}` })
|
||||
.addFields([
|
||||
{
|
||||
name: 'Before',
|
||||
value: oldNickname,
|
||||
},
|
||||
{
|
||||
name: 'After',
|
||||
value: newNickname,
|
||||
},
|
||||
]);
|
||||
|
||||
const channel = await SettingsHelper.GetSetting("event.member.update.channel", this.newMember.guild.id);
|
||||
if (!channel || channel.toLowerCase() != "true") return;
|
||||
const channelSetting = await SettingsHelper.GetSetting("event.member.update.channel", this.newMember.guild.id);
|
||||
|
||||
await embed.SendToChannel(channel);
|
||||
if (!channelSetting) return;
|
||||
|
||||
const channel = this.newMember.guild.channels.cache.find(x => x.name == channelSetting);
|
||||
|
||||
if (!channel) return;
|
||||
|
||||
const guildChannel = channel as TextChannel;
|
||||
|
||||
await guildChannel.send({ embeds: [embed ]});
|
||||
}
|
||||
}
|
|
@ -1,9 +1,9 @@
|
|||
import { Event } from "../type/event";
|
||||
import { Message } from "discord.js";
|
||||
import EventEmbed from "../helpers/embeds/EventEmbed";
|
||||
import { EmbedBuilder, Message, TextChannel } from "discord.js";
|
||||
import SettingsHelper from "../helpers/SettingsHelper";
|
||||
import OnMessage from "./MessageEvents/OnMessage";
|
||||
import IgnoredChannel from "../entity/IgnoredChannel";
|
||||
import EmbedColours from "../constants/EmbedColours";
|
||||
|
||||
export default class MessageEvents extends Event {
|
||||
constructor() {
|
||||
|
@ -20,19 +20,42 @@ export default class MessageEvents extends Event {
|
|||
const ignored = await IgnoredChannel.IsChannelIgnored(message.channel.id);
|
||||
if (ignored) return;
|
||||
|
||||
const embed = new EventEmbed(message.client, message.guild, "Message Deleted");
|
||||
embed.AddUser("User", message.author, true);
|
||||
embed.addField("Channel", message.channel.toString(), true);
|
||||
embed.addField("Content", `\`\`\`${message.content || "*none*"}\`\`\``);
|
||||
const embed = new EmbedBuilder()
|
||||
.setColor(EmbedColours.Ok)
|
||||
.setTitle("Message Deleted")
|
||||
.setDescription(`${message.author} \`${message.author.tag}\``)
|
||||
.addFields([
|
||||
{
|
||||
name: "Channel",
|
||||
value: message.channel.toString(),
|
||||
inline: true,
|
||||
},
|
||||
{
|
||||
name: "Content",
|
||||
value: `\`\`\`${message.content || "*none*"}\`\`\``,
|
||||
}
|
||||
]);
|
||||
|
||||
if (message.attachments.size > 0) {
|
||||
embed.addField("Attachments", `\`\`\`${message.attachments.map(x => x.url).join("\n")}\`\`\``);
|
||||
embed.addFields([
|
||||
{
|
||||
name: "Attachments",
|
||||
value: `\`\`\`${message.attachments.map(x => x.url).join("\n")}\`\`\``
|
||||
}
|
||||
]);
|
||||
}
|
||||
|
||||
const channel = await SettingsHelper.GetSetting("event.message.delete.channel", message.guild.id);
|
||||
if (!channel || !message.guild.channels.cache.find(x => x.name == channel)) return;
|
||||
const channelSetting = await SettingsHelper.GetSetting("event.message.delete.channel", message.guild.id);
|
||||
|
||||
await embed.SendToChannel(channel);
|
||||
if (!channelSetting) return;
|
||||
|
||||
const channel = message.guild.channels.cache.find(x => x.name == channelSetting);
|
||||
|
||||
if (!channel) return;
|
||||
|
||||
const guildChannel = channel as TextChannel;
|
||||
|
||||
await guildChannel.send({ embeds: [ embed ]});
|
||||
}
|
||||
|
||||
public override async messageUpdate(oldMessage: Message, newMessage: Message) {
|
||||
|
@ -46,16 +69,37 @@ export default class MessageEvents extends Event {
|
|||
const ignored = await IgnoredChannel.IsChannelIgnored(newMessage.channel.id);
|
||||
if (ignored) return;
|
||||
|
||||
const embed = new EventEmbed(newMessage.client, newMessage.guild, "Message Edited");
|
||||
embed.AddUser("User", newMessage.author, true);
|
||||
embed.addField("Channel", newMessage.channel.toString(), true);
|
||||
embed.addField("Before", `\`\`\`${oldMessage.content || "*none*"}\`\`\``);
|
||||
embed.addField("After", `\`\`\`${newMessage.content || "*none*"}\`\`\``);
|
||||
const embed = new EmbedBuilder()
|
||||
.setColor(EmbedColours.Ok)
|
||||
.setTitle("Message Deleted")
|
||||
.setDescription(`${newMessage.author} \`${newMessage.author.tag}\``)
|
||||
.addFields([
|
||||
{
|
||||
name: "Channel",
|
||||
value: newMessage.channel.toString(),
|
||||
inline: true,
|
||||
},
|
||||
{
|
||||
name: "Before",
|
||||
value: `\`\`\`${oldMessage.content || "*none*"}\`\`\``,
|
||||
},
|
||||
{
|
||||
name: "After",
|
||||
value: `\`\`\`${newMessage.content || "*none*"}\`\`\``,
|
||||
}
|
||||
]);
|
||||
|
||||
const channel = await SettingsHelper.GetSetting("event.message.update.channel", newMessage.guild.id);
|
||||
if (!channel || !newMessage.guild.channels.cache.find(x => x.name == channel)) return;
|
||||
const channelSetting = await SettingsHelper.GetSetting("event.message.delete.channel", newMessage.guild.id);
|
||||
|
||||
await embed.SendToChannel(channel);
|
||||
if (!channelSetting) return;
|
||||
|
||||
const channel = newMessage.guild.channels.cache.find(x => x.name == channelSetting);
|
||||
|
||||
if (!channel) return;
|
||||
|
||||
const guildChannel = channel as TextChannel;
|
||||
|
||||
await guildChannel.send({ embeds: [ embed ]});
|
||||
}
|
||||
|
||||
public override async messageCreate(message: Message) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue