ban reaction
This commit is contained in:
parent
b51e508357
commit
0529a9d4d7
13 changed files with 305 additions and 79 deletions
116
src/bot/commands/banreaction/add.ts
Normal file
116
src/bot/commands/banreaction/add.ts
Normal file
|
@ -0,0 +1,116 @@
|
|||
import { Client, ChatInputCommandInteraction, GuildChannelResolvable, PermissionsBitField, ChannelType, EmbedBuilder } from "discord.js";
|
||||
|
||||
import { schemas } from "../../../database";
|
||||
|
||||
import YALAS from 'mcstatusbot-logger';
|
||||
|
||||
import { GuildInstance } from "../../../database/schemas/Guild";
|
||||
import { UserInstance } from "../../../database/schemas/User";
|
||||
|
||||
|
||||
export async function chatInputCommand(client: Client, interaction: ChatInputCommandInteraction, guild: GuildInstance, user: UserInstance) {
|
||||
if (!interaction.guild) return interaction.reply("must be done in discord server");
|
||||
|
||||
const botMember = interaction.guild.members.me;
|
||||
if (!botMember) {
|
||||
YALAS.error("reactionrole add: bot in guild null");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
//get and validate channel
|
||||
const channel = interaction.options.getChannel('channel');
|
||||
if (channel == undefined) {
|
||||
return interaction.reply({
|
||||
embeds: [{
|
||||
title: "Channel Not Found",
|
||||
description: "The selected channel could not be found please try again."
|
||||
}]
|
||||
});
|
||||
}
|
||||
|
||||
if (channel.type !== ChannelType.GuildText) {
|
||||
return interaction.reply({
|
||||
embeds: [{
|
||||
title: "That Will Not Work",
|
||||
description: "The selected channel is not a text channel please select a text channel."
|
||||
}]
|
||||
});
|
||||
}
|
||||
|
||||
const botPermSM = botMember.permissionsIn((channel as GuildChannelResolvable)).toArray();
|
||||
if (botPermSM && !botPermSM.includes('SendMessages')) {
|
||||
return interaction.reply({
|
||||
embeds: [{
|
||||
title: "Missing permission",
|
||||
description: "you need to give me the send message permission in the selected channel."
|
||||
}]
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
//check bot has manage roles perm
|
||||
const botPermMR = botMember.permissions.has(PermissionsBitField.Flags.BanMembers);
|
||||
if (!botPermMR) {
|
||||
return interaction.reply({
|
||||
embeds: [{
|
||||
title: "Missing permission",
|
||||
description: "you need to give me the Ban Members permission in this server."
|
||||
}]
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
await interaction.deferReply();
|
||||
//check emoji does net exist for reaction in channel
|
||||
try {
|
||||
const BanReaction = await schemas['BanReaction'].findOne({
|
||||
where: {
|
||||
guild: guild.id,
|
||||
channel: channel.id
|
||||
}
|
||||
});
|
||||
|
||||
if (BanReaction !== null) {
|
||||
return interaction.editReply({
|
||||
embeds: [{
|
||||
title: "Ban Reaction Exists",
|
||||
description: "This is already setup in selected channel."
|
||||
}]
|
||||
});
|
||||
}
|
||||
} catch (err: any) {
|
||||
YALAS.error(err)
|
||||
YALAS.error(err.stack || err);
|
||||
return interaction.editReply("error when checking for existing ban reaction in database.");
|
||||
}
|
||||
|
||||
try {
|
||||
await schemas['BanReaction'].create({
|
||||
guild: guild.id,
|
||||
channel: channel.id
|
||||
});
|
||||
} catch (err: any) {
|
||||
YALAS.error(err.stack || err);
|
||||
return interaction.editReply("error when saving ban reaction to database.");
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
const textChannel = interaction.guild?.channels.cache.get(channel.id);
|
||||
if (textChannel === undefined || textChannel.type !== 0) return;
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setDescription("React with a ❌")
|
||||
.setFooter({ text: 'to get banned this is no joke' });
|
||||
|
||||
|
||||
const BanReactionMsg = await textChannel.send({ embeds: [embed] });
|
||||
await BanReactionMsg.react('❌');
|
||||
return interaction.editReply("ban reaction added to channel <#" + textChannel.id + ">.");
|
||||
} catch (err: any) {
|
||||
YALAS.error(err.stack || err);
|
||||
return interaction.editReply("error when making ban reaction embed.");
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue