diff --git a/src/premium/attachmentLogs.ts b/src/premium/attachmentLogs.ts
index 0c491b7..abda27d 100644
--- a/src/premium/attachmentLogs.ts
+++ b/src/premium/attachmentLogs.ts
@@ -4,7 +4,7 @@
 import { saveAttachment } from "../reflex/scanners.js";
 import EmojiEmbed from "../utils/generateEmojiEmbed.js";
 import addPlural from "../utils/plurals.js";
-import type { Message } from "discord.js";
+import type { GuildTextBasedChannel, Message } from "discord.js";
 
 export default async function logAttachment(message: Message): Promise<AttachmentLogSchema> {
     if (!message.guild) throw new Error("Tried to log an attachment in a non-guild message");
@@ -31,7 +31,7 @@
         }
     }
     if (attachments.length === 0) return { files: [] };
-    if (client.database.premium.hasPremium(message.guild.id)) {
+    if (await client.database.premium.hasPremium(message.guild.id)) {
         const channel = (await client.database.guilds.read(message.guild.id)).logging.attachments.channel;
         if (!channel) {
             singleNotify(
@@ -52,7 +52,7 @@
             );
             return { files: attachments };
         }
-        const m = await channelObj.send({
+        const m = await (channelObj as GuildTextBasedChannel).send({
             embeds: [
                 new EmojiEmbed()
                     .setTitle(`${addPlural(attachments.length, "Attachment")} Sent`)
@@ -60,8 +60,8 @@
                         keyValueList({
                             messageId: `\`${message.id}\``,
                             sentBy: renderUser(message.author),
-                            sentIn: renderChannel(message.channel),
-                            sent: renderDelta(new Date(message.createdTimestamp))
+                            sentIn: renderChannel(message.channel as GuildTextBasedChannel),
+                            sent: renderDelta((new Date(message.createdTimestamp)).getTime())
                         }) + `\n[[Jump to message]](${message.url})`
                     )
                     .setEmoji("ICONS.ATTACHMENT")
diff --git a/src/premium/createTranscript.ts b/src/premium/createTranscript.ts
index 6805017..e755b83 100644
--- a/src/premium/createTranscript.ts
+++ b/src/premium/createTranscript.ts
@@ -6,7 +6,8 @@
     ButtonBuilder,
     MessageComponentInteraction,
     TextChannel,
-    ButtonStyle
+    ButtonStyle,
+    User
 } from "discord.js";
 import EmojiEmbed from "../utils/generateEmojiEmbed.js";
 import getEmojiByName from "../utils/getEmojiByName.js";
@@ -76,7 +77,7 @@
                     .setEmoji("CONTROL.DOWNLOAD")
             ],
             components: [
-                new ActionRowBuilder().addComponents([
+                new ActionRowBuilder<ButtonBuilder>().addComponents([
                     new ButtonBuilder().setLabel("View").setStyle(ButtonStyle.Link).setURL(url),
                     new ButtonBuilder()
                         .setLabel("Delete")
@@ -99,7 +100,7 @@
                     .setEmoji("CONTROL.DOWNLOAD")
             ],
             components: [
-                new ActionRowBuilder().addComponents([
+                new ActionRowBuilder<ButtonBuilder>().addComponents([
                     new ButtonBuilder()
                         .setLabel("Delete")
                         .setStyle(ButtonStyle.Danger)
@@ -128,8 +129,8 @@
         },
         list: {
             ticketFor: member ? entry(member.id, renderUser(member.user)) : entry(null, "*Unknown*"),
-            deletedBy: entry(interaction.member!.user.id, renderUser(interaction.member!.user)),
-            deleted: entry(new Date().getTime(), renderDelta(new Date().getTime()))
+            deletedBy: entry(interaction.member!.user.id, renderUser(interaction.member!.user as User)),
+            deleted: entry(new Date().getTime().toString(), renderDelta(new Date().getTime()))
         },
         hidden: {
             guild: interaction.guild!.id
