Compare commits

..

No commits in common. "25a386cf1ae475883f7dec985f5836a71d440e2a" and "9e566a2b33165014fb4ad1b215d8cba612a2fafb" have entirely different histories.

6 changed files with 24 additions and 21 deletions

View file

@ -2,5 +2,4 @@
Anonymous confessions for Discord, free as in freedom and price! Anonymous confessions for Discord, free as in freedom and price!
This is a fun little side-project I started after wanting to have my own Discord confessions bot, as an alternative to some that already exist. \ This is a fun little side-project I started after wanting to have my own Discord confessions bot, as an alternative to some that already exist.
**As a result, this bot currently does not scale well. I may make it do so in the future, but it is not currently a priority.**

View file

@ -20,7 +20,7 @@ import {
ActionRowBuilder, ActionRowBuilder,
ButtonBuilder, ButtonBuilder,
ButtonStyle, ButtonStyle,
ChatInputCommandInteraction, CommandInteraction,
ComponentType, ComponentType,
EmbedBuilder, EmbedBuilder,
SlashCommandBuilder, SlashCommandBuilder,
@ -50,7 +50,7 @@ export const data = new SlashCommandBuilder()
.setDescription("The link to an image to attach (optional)") .setDescription("The link to an image to attach (optional)")
); );
export async function execute(interaction: ChatInputCommandInteraction) { export async function execute(interaction: CommandInteraction) {
// TODO: This all works as intended, but I'd like for it so be a reusable function // TODO: This all works as intended, but I'd like for it so be a reusable function
// instead because all of this is reused in src/main.ts:56 // instead because all of this is reused in src/main.ts:56
try { try {
@ -73,11 +73,12 @@ export async function execute(interaction: ChatInputCommandInteraction) {
.confessChannel; .confessChannel;
const adminChannel = dt.getGuildInfo(interaction.guild?.id!)?.settings const adminChannel = dt.getGuildInfo(interaction.guild?.id!)?.settings
.modChannel; .modChannel;
// @ts-ignore
const messageContent: string = `"${interaction.options.getString("message")}"`;
// @ts-ignore
const attachment: string = interaction.options.getString("attachment");
const messageContent = `"${interaction.options.getString("message")}"`; const isAttachment = (text: string) =>
const attachment = interaction.options.getString("attachment")!;
const isAttachment = (text: string | null) =>
text && (text.startsWith("http://") || text.startsWith("https://")); text && (text.startsWith("http://") || text.startsWith("https://"));
const color = getRandomColor(); const color = getRandomColor();
@ -85,6 +86,7 @@ export async function execute(interaction: ChatInputCommandInteraction) {
const userConfessionEmbed = new EmbedBuilder() const userConfessionEmbed = new EmbedBuilder()
.setColor(color) .setColor(color)
.setTitle(`Anonymous Confession \`${messageId}\``) .setTitle(`Anonymous Confession \`${messageId}\``)
// @ts-ignore
.setDescription(messageContent); .setDescription(messageContent);
isAttachment(attachment) && userConfessionEmbed.setImage(attachment); isAttachment(attachment) && userConfessionEmbed.setImage(attachment);
@ -92,6 +94,7 @@ export async function execute(interaction: ChatInputCommandInteraction) {
const adminConfessionEmbed = new EmbedBuilder() const adminConfessionEmbed = new EmbedBuilder()
.setColor(color) .setColor(color)
.setTitle(`Anonymous Confession \`${messageId}\``) .setTitle(`Anonymous Confession \`${messageId}\``)
// @ts-ignore
.setDescription(messageContent) .setDescription(messageContent)
.addFields( .addFields(
{ {

View file

@ -17,7 +17,7 @@
*/ */
import { import {
ChatInputCommandInteraction, CommandInteraction,
PermissionFlagsBits, PermissionFlagsBits,
SlashCommandBuilder SlashCommandBuilder
} from "discord.js"; } from "discord.js";
@ -37,10 +37,11 @@ export const data = new SlashCommandBuilder()
) )
.setDefaultMemberPermissions(PermissionFlagsBits.ModerateMembers); .setDefaultMemberPermissions(PermissionFlagsBits.ModerateMembers);
export async function execute(interaction: ChatInputCommandInteraction) { export async function execute(interaction: CommandInteraction) {
const result = dt.addBan( const result = dt.addBan(
interaction.guild?.id!, interaction.guild?.id!,
interaction.options.getString("id")! // @ts-ignore
interaction.options.getString("id")
); );
try { try {

View file

@ -17,7 +17,6 @@
*/ */
import { import {
ChatInputCommandInteraction,
CommandInteraction, CommandInteraction,
EmbedBuilder, EmbedBuilder,
SlashCommandBuilder, SlashCommandBuilder,
@ -37,7 +36,7 @@ export const data = new SlashCommandBuilder()
option.setName("id").setDescription("The confession id").setRequired(true) option.setName("id").setDescription("The confession id").setRequired(true)
); );
export async function execute(interaction: ChatInputCommandInteraction) { export async function execute(interaction: CommandInteraction) {
if (!dt.getGuildInfo(interaction.guild?.id!)) { if (!dt.getGuildInfo(interaction.guild?.id!)) {
return interaction.reply({ return interaction.reply({
content: content:
@ -46,7 +45,8 @@ export async function execute(interaction: ChatInputCommandInteraction) {
}); });
} }
const idVal = interaction.options.getString("id")!; // @ts-ignore
const idVal = interaction.options.getString("id");
const result = dt.getConfession(interaction.guild?.id!, idVal); const result = dt.getConfession(interaction.guild?.id!, idVal);
if (result) { if (result) {
@ -71,6 +71,8 @@ export async function execute(interaction: ChatInputCommandInteraction) {
}); });
}); });
dt.delConfesssion(interaction, idVal);
return interaction.reply({ return interaction.reply({
content: "Confession removed.", content: "Confession removed.",
ephemeral: true ephemeral: true

View file

@ -17,7 +17,7 @@
*/ */
import { import {
ChatInputCommandInteraction, CommandInteraction,
PermissionFlagsBits, PermissionFlagsBits,
SlashCommandBuilder SlashCommandBuilder
} from "discord.js"; } from "discord.js";
@ -37,10 +37,11 @@ export const data = new SlashCommandBuilder()
) )
.setDefaultMemberPermissions(PermissionFlagsBits.ManageMessages); .setDefaultMemberPermissions(PermissionFlagsBits.ManageMessages);
export function execute(interaction: ChatInputCommandInteraction) { export function execute(interaction: CommandInteraction) {
const result = dt.removeBan( const result = dt.removeBan(
interaction.guild?.id!, interaction.guild?.id!,
interaction.options.getString("id")! // @ts-ignore
interaction.options.getString("id")
); );
try { try {

View file

@ -20,7 +20,6 @@ import {
ActionRowBuilder, ActionRowBuilder,
ButtonBuilder, ButtonBuilder,
ButtonStyle, ButtonStyle,
ChatInputCommandInteraction,
ComponentType, ComponentType,
EmbedBuilder, EmbedBuilder,
Events, Events,
@ -59,9 +58,7 @@ BotClient.on(Events.InteractionCreate, async interaction => {
const { commandName } = interaction; const { commandName } = interaction;
if (commands[commandName as keyof typeof commands]) { if (commands[commandName as keyof typeof commands]) {
commands[commandName as keyof typeof commands].execute( commands[commandName as keyof typeof commands].execute(interaction);
interaction as ChatInputCommandInteraction
);
} }
}); });