Note editing

This commit is contained in:
Tarrgon
2025-07-01 14:39:09 -04:00
parent c003b50f8d
commit 6d2eff0e85
2 changed files with 74 additions and 0 deletions
+60
View File
@@ -30,6 +30,30 @@ export default {
.setRequired(true) .setRequired(true)
) )
) )
.addSubcommand(subcommand =>
subcommand
.setName('edit')
.setDescription('Edit notes on a user.')
.addStringOption(option =>
option
.setName('user')
.setDescription('The discord user mention, or ID, to edit the notes of.')
.setRequired(true)
)
.addIntegerOption(option =>
option
.setName('note')
.setDescription('The note to edit.')
.setRequired(true)
.setAutocomplete(true)
)
.addStringOption(option =>
option
.setName('new-reason')
.setDescription('The new reason for the note.')
.setRequired(true)
)
)
.addSubcommand(subcommand => .addSubcommand(subcommand =>
subcommand subcommand
.setName('remove') .setName('remove')
@@ -125,6 +149,42 @@ export default {
await Database.removeNote(noteId); await Database.removeNote(noteId);
interaction.editReply('Removed note.'); interaction.editReply('Removed note.');
} else if (subcommand == 'edit') {
const noteId = interaction.options.getInteger('note', true);
const notes = await Database.getNotes(idToUse);
const note = notes.find(n => n.id == noteId);
if (!note) return interaction.editReply('Note not found.');
const reason = interaction.options.getString('new-reason', true);
logCustomEvent(interaction.guild!, {
title: 'Note Edited',
description: null,
color: 0x00FF00,
timestamp: new Date(),
fields: [
{
name: 'User',
value: `<@${interaction.user.id}>\n${interaction.user.username}`,
inline: true
},
{
name: 'Old reason',
value: note.reason
},
{
name: 'New reason',
value: reason,
inline: true
}
]
});
await Database.editNote(noteId, note.reason, reason, interaction.user.id);
interaction.editReply(`Note on <@${idToUse}> edited.\n\nNew reason:\n${reason}`);
} else if (subcommand == 'list') { } else if (subcommand == 'list') {
const noteMessage = await getNoteMessage(idToUse, 1); const noteMessage = await getNoteMessage(idToUse, 1);
+14
View File
@@ -64,6 +64,15 @@ const DB_SCHEMA = `
timestamp datetime NOT NULL DEFAULT (datetime('now', 'localtime')) timestamp datetime NOT NULL DEFAULT (datetime('now', 'localtime'))
); );
CREATE TABLE IF NOT EXISTS note_edits (
id INTEGER PRIMARY KEY,
note_id INTEGER,
mod_id TEXT,
previous_reason TEXT,
timestamp datetime NOT NULL DEFAULT (datetime('now', 'localtime')),
FOREIGN KEY(note_id) REFERENCES notes(id)
);
CREATE TABLE IF NOT EXISTS bans ( CREATE TABLE IF NOT EXISTS bans (
id INTEGER PRIMARY KEY, id INTEGER PRIMARY KEY,
user_id TEXT, user_id TEXT,
@@ -302,6 +311,11 @@ export class Database {
await Database.db.run('INSERT INTO notes(user_id, reason, mod_id) VALUES (?, ?, ?)', userId, reason, modId); await Database.db.run('INSERT INTO notes(user_id, reason, mod_id) VALUES (?, ?, ?)', userId, reason, modId);
} }
static async editNote(id: number, oldReason: string, newReason: string, modId: string) {
await Database.db.run('UPDATE notes SET reason = ?, mod_id = ? WHERE id = ?', newReason, modId, id);
await Database.db.run('INSERT INTO note_edits(note_id, mod_id, previous_reason) VALUES (?, ?, ?)', id, modId, oldReason);
}
static async removeNote(id: number): Promise<boolean> { static async removeNote(id: number): Promise<boolean> {
const res = await Database.db.run('DELETE from notes WHERE id = ?', id); const res = await Database.db.run('DELETE from notes WHERE id = ?', id);