refactor(reactionAdd): add better/more information to starboard embeds #7

Merged
cosmic merged 1 commits from spif/scythe:spif/refactor/starboard-embed into main 2025-08-30 18:45:42 +00:00
1 changed files with 17 additions and 6 deletions
Showing only changes of commit 303aba80b1 - Show all commits

View File

@ -1,8 +1,8 @@
import { Client, Discord, On, type ArgsOf } from "discordx"; import { type Client, Discord, On, type ArgsOf } from "discordx";
import db from "../db"; import db from "../db";
import { starboardMessagesTable, starboardSettingsTable } from "../db/schema"; import { starboardMessagesTable, starboardSettingsTable } from "../db/schema";
import { eq } from "drizzle-orm"; import { eq } from "drizzle-orm";
import { Colors, EmbedBuilder, TextChannel } from "discord.js"; import { Colors, EmbedBuilder, type TextChannel } from "discord.js";
@Discord() @Discord()
export class ReactionAdd { export class ReactionAdd {
@ -13,10 +13,10 @@ export class ReactionAdd {
.from(starboardSettingsTable) .from(starboardSettingsTable)
.where(eq(starboardSettingsTable.guild, re.message.guildId!)); .where(eq(starboardSettingsTable.guild, re.message.guildId!));
if ( if (
re.count == settings[0].threshold && re.count === settings[0].threshold &&
re.emoji.name == "⭐" && re.emoji.name === "⭐" &&
re.message.channelId !== settings[0].channel && re.message.channelId !== settings[0].channel &&
settings[0].enabled == 1 settings[0].enabled === 1
) { ) {
await db await db
.insert(starboardMessagesTable) .insert(starboardMessagesTable)
@ -25,8 +25,19 @@ export class ReactionAdd {
.get(re.message.guildId!)! .get(re.message.guildId!)!
.members.cache.get(re.message.author!.id); .members.cache.get(re.message.author!.id);
const embed = new EmbedBuilder() const embed = new EmbedBuilder()
.setAuthor({
name: author?.displayName!,
iconURL: author?.displayAvatarURL(),
})
.setTitle(`New message from ${author?.displayName}`) .setTitle(`New message from ${author?.displayName}`)
.setDescription(re.message.content) .setURL(re.message.url)
// Sapphire returns ExpectedValidationError & ExpectedConstraintError
// without specifying null for whatever reason
// Even though .content is already typed as "string | null"
.setDescription(re.message.content || null)
.setImage(re.message.attachments.first()?.url || null)
.setFooter({ text: "\u{00002b50}" })
.setTimestamp(re.message.createdAt)
.setColor(Colors.Yellow); .setColor(Colors.Yellow);
const channel = client.channels.cache.get( const channel = client.channels.cache.get(