Attachment management for messages is good to go, doesn't handle embeds, but the links for those embeds still show up in the messages
This commit is contained in:
parent
c570f57463
commit
b474d55612
BIN
breadbot_test.db
BIN
breadbot_test.db
Binary file not shown.
@ -1,4 +1,4 @@
|
|||||||
import { Message, OmitPartialGroupDMChannel, PartialMessage } from "discord.js";
|
import { Attachment, Message, OmitPartialGroupDMChannel, PartialMessage } from "discord.js";
|
||||||
import { SQLCommon } from "../storage/interfaces";
|
import { SQLCommon } from "../storage/interfaces";
|
||||||
import { SQLResult } from "../storage/enumerations";
|
import { SQLResult } from "../storage/enumerations";
|
||||||
|
|
||||||
@ -13,6 +13,15 @@ export async function doesMessageExist(db: SQLCommon, message: OmitPartialGroupD
|
|||||||
return queryResult.length != 0
|
return queryResult.length != 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function doesAttachmentExist(db: SQLCommon, attachment: Attachment) : Promise<boolean> {
|
||||||
|
const queryResult: Object[] = await db.getAllParameterized(
|
||||||
|
"SELECT * FROM message_attachments WHERE attachment_snowflake = ?",
|
||||||
|
[attachment.id]
|
||||||
|
)
|
||||||
|
|
||||||
|
return queryResult.length != 0
|
||||||
|
}
|
||||||
|
|
||||||
export async function insertMessage(db: SQLCommon, message: OmitPartialGroupDMChannel<Message<boolean>>) : Promise<SQLResult> {
|
export async function insertMessage(db: SQLCommon, message: OmitPartialGroupDMChannel<Message<boolean>>) : Promise<SQLResult> {
|
||||||
const alreadyExists: boolean = await doesMessageExist(db, message)
|
const alreadyExists: boolean = await doesMessageExist(db, message)
|
||||||
|
|
||||||
@ -78,3 +87,25 @@ export async function markMessageDeleted(db: SQLCommon, message: OmitPartialGrou
|
|||||||
return SQLResult.FAILED
|
return SQLResult.FAILED
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function insertAttachment(db: SQLCommon, attachment: Attachment, message: OmitPartialGroupDMChannel<Message<boolean>> | PartialMessage) : Promise<SQLResult> {
|
||||||
|
const alreadyExists: boolean = await doesAttachmentExist(db, attachment)
|
||||||
|
|
||||||
|
if(alreadyExists) {
|
||||||
|
return SQLResult.ALREADYEXISTS
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
await db.runParameterized(
|
||||||
|
"INSERT INTO message_attachments VALUES (?, ?, ?, ?, ?, ?, ?, ?)",
|
||||||
|
[attachment.id, message.id, attachment.name, attachment.description, message.createdTimestamp,
|
||||||
|
attachment.contentType, attachment.url, 0]
|
||||||
|
)
|
||||||
|
|
||||||
|
return SQLResult.CREATED
|
||||||
|
} catch (err) {
|
||||||
|
// TODO Winston should handle this
|
||||||
|
console.log(err)
|
||||||
|
return SQLResult.FAILED
|
||||||
|
}
|
||||||
|
}
|
@ -1,9 +1,9 @@
|
|||||||
import { Client, Events, Message, messageLink, OmitPartialGroupDMChannel, PartialMessage } from "discord.js";
|
import { Client, Events, Message, OmitPartialGroupDMChannel, PartialMessage } from "discord.js";
|
||||||
import { SQLResult } from "../storage/enumerations";
|
import { SQLResult } from "../storage/enumerations";
|
||||||
import { SQLCommon } from "../storage/interfaces";
|
import { SQLCommon } from "../storage/interfaces";
|
||||||
import { insertChannel } from "../discord/channels";
|
import { insertChannel } from "../discord/channels";
|
||||||
import { insertUser } from "../discord/users";
|
import { insertUser } from "../discord/users";
|
||||||
import { doesMessageExist, insertMessage, markMessageDeleted, updateMessageContentHistory } from "../discord/messages";
|
import { insertAttachment, insertMessage, markMessageDeleted, updateMessageContentHistory } from "../discord/messages";
|
||||||
|
|
||||||
export function setupMessageCapture(client: Client, db: SQLCommon) {
|
export function setupMessageCapture(client: Client, db: SQLCommon) {
|
||||||
client.on(Events.MessageCreate, async (message) => {
|
client.on(Events.MessageCreate, async (message) => {
|
||||||
@ -27,13 +27,36 @@ async function processMessageCreate(db: SQLCommon, message: OmitPartialGroupDMCh
|
|||||||
userOk == SQLResult.ALREADYEXISTS || userOk == SQLResult.CREATED) {
|
userOk == SQLResult.ALREADYEXISTS || userOk == SQLResult.CREATED) {
|
||||||
|
|
||||||
await insertMessage(db, message)
|
await insertMessage(db, message)
|
||||||
|
// TODO observe success of message insertion
|
||||||
|
if(message.attachments.size != 0) {
|
||||||
|
const allAttachments: void[] = message.attachments.map((attachment) => {
|
||||||
|
insertAttachment(db, attachment, message)
|
||||||
|
})
|
||||||
|
|
||||||
|
await Promise.all(allAttachments).catch((error) => {
|
||||||
|
// TODO Winston should handle this
|
||||||
|
console.log(error)
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function processMessageModify(db: SQLCommon, newMessage: OmitPartialGroupDMChannel<Message<boolean>>) {
|
async function processMessageModify(db: SQLCommon, newMessage: OmitPartialGroupDMChannel<Message<boolean>>) {
|
||||||
await updateMessageContentHistory(db, newMessage)
|
await updateMessageContentHistory(db, newMessage)
|
||||||
|
|
||||||
|
if(newMessage.attachments.size != 0) {
|
||||||
|
const allAttachments: void[] = newMessage.attachments.map((attachment) => {
|
||||||
|
insertAttachment(db, attachment, newMessage)
|
||||||
|
})
|
||||||
|
|
||||||
|
await Promise.all(allAttachments).catch((error) => {
|
||||||
|
// TODO Winston should handle this
|
||||||
|
console.log(error)
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
async function processMessageDeleted(db: SQLCommon, deletedMessage: OmitPartialGroupDMChannel<Message<boolean>> | PartialMessage) {
|
async function processMessageDeleted(db: SQLCommon, deletedMessage: OmitPartialGroupDMChannel<Message<boolean>> | PartialMessage) {
|
||||||
await markMessageDeleted(db, deletedMessage)
|
await markMessageDeleted(db, deletedMessage)
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user