Message content changes and message deletions are now tracked

This commit is contained in:
2025-06-29 09:28:03 -04:00
parent ac2dd9983e
commit c570f57463
6 changed files with 75 additions and 22 deletions

View File

@@ -1,8 +1,10 @@
import { Message, OmitPartialGroupDMChannel } from "discord.js";
import { Message, OmitPartialGroupDMChannel, PartialMessage } from "discord.js";
import { SQLCommon } from "../storage/interfaces";
import { SQLResult } from "../storage/enumerations";
export async function doesMessageExist(db: SQLCommon, message: OmitPartialGroupDMChannel<Message<boolean>>) : Promise<boolean> {
// TODO Do partial messages affect other functionality elsewhere?
export async function doesMessageExist(db: SQLCommon, message: OmitPartialGroupDMChannel<Message<boolean>> | PartialMessage) : Promise<boolean> {
const queryResult: Object[] = await db.getAllParameterized(
"SELECT * FROM messages WHERE message_snowflake = ?",
[message.id]
@@ -31,4 +33,48 @@ export async function insertMessage(db: SQLCommon, message: OmitPartialGroupDMCh
console.log(err)
return SQLResult.FAILED
}
}
export async function updateMessageContentHistory(db: SQLCommon, message: OmitPartialGroupDMChannel<Message<boolean>>) : Promise<SQLResult> {
const messageIDExists: boolean = await doesMessageExist(db, message)
if(!messageIDExists) {
return SQLResult.FAILED
}
try {
await db.runParameterized(
"INSERT INTO message_content_changes (message_snowflake, message_change_old_timestamp, message_change_old_content) " +
"SELECT message_snowflake, message_timestamp, message_content FROM messages WHERE message_snowflake = ?;" +
"UPDATE messages SET message_timestamp = ?, message_content = ? WHERE message_snowflake = ?;",
[message.id, message.editedTimestamp, message.content, message.id]
)
return SQLResult.UPDATED
} catch (err) {
//TODO Winston should handle this
console.log(err)
return SQLResult.FAILED
}
}
export async function markMessageDeleted(db: SQLCommon, message: OmitPartialGroupDMChannel<Message<boolean>> | PartialMessage) : Promise<SQLResult> {
const messageIDExists: boolean = await doesMessageExist(db, message)
if(!messageIDExists) {
return SQLResult.FAILED
}
try {
await db.runParameterized(
"UPDATE messages SET message_deleted = 1 WHERE message_snowflake = ?",
[message.id]
)
return SQLResult.UPDATED
} catch (err) {
// TODO Winston should handle this
console.log(err)
return SQLResult.FAILED
}
}