fix: solve linter error
Node.js CI / CI (pull_request) Failing after 24s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 53s

This commit is contained in:
2026-02-21 23:36:20 +09:00
parent 0a3c000add
commit 60fec0f2d8
3 changed files with 78 additions and 68 deletions
+73 -66
View File
@@ -13,78 +13,85 @@ import {
EmbedBuilder,
ActionRowBuilder,
ButtonStyle,
type Message,
} from "discord.js";
import { ids } from "../config/ids.js";
import { logger } from "../utils/logger.js";
export const forwardOwnerDM = {
data: new ContextMenuCommandBuilder().setName("Forward to Naomi").
setType(ApplicationCommandType.Message),
async execute(interaction: MessageContextMenuCommandInteraction):
Promise<void> {
await interaction.deferReply({ ephemeral: true });
if (interaction.user.id !== ids.users.naomi) {
await interaction.editReply("❌ Only Naomi can use this command.");
return;
}
const message = interaction.targetMessage;
if (message.author.id === ids.users.naomi) {
await interaction.editReply(
"No need to forward your own message to yourself 😄",
);
return;
}
try {
const naomi = await interaction.client.users.fetch(ids.users.naomi);
const forwardedEmbed = new EmbedBuilder().
setColor(0x58_65_F2).
setTitle(`Message from ${String(message.author.tag)}!`).
setDescription(
`${(message.attachments.size > 0
? `**Attachments:** ${String(message.attachments.size)}
const buildForwardedEmbed = (message: Message): EmbedBuilder => {
const forwardedEmbed = new EmbedBuilder().
setColor(0x58_65_F2).
setTitle(`Message from ${String(message.author.tag)}!`).
setDescription(
`${(message.attachments.size > 0
? `**Attachments:** ${String(message.attachments.size)}
file(s)\n\n`
: "\n")
: "\n")
+ (message.embeds.length > 0
? `**Embeds:** ${String(message.embeds.length)}\n\n`
: "")}
\n${message.content !== "" || message.content !== null
? message.content
: "*[No text content]*"}\n\n`,
);
const viewButton = new ButtonBuilder().
setLabel("View Message").
setURL(message.url).
setStyle(ButtonStyle.Link);
const row = new ActionRowBuilder<ButtonBuilder>().addComponents(
viewButton,
);
await naomi.send({
components: [ row ],
embeds: [ forwardedEmbed ],
files: message.attachments.map((att) => {
return att.url;
}),
});
await interaction.editReply({
content: "✅ Forwarded to your DMs!",
});
} catch (error) {
let replyText = "❌ Failed to forward message.";
if (error instanceof DiscordAPIError && error.code === 50_007) {
replyText = `${replyText} (Naomi's DMs might be closed)`;
}
await interaction.editReply(replyText);
if (error instanceof Error) {
await logger.error("operation", error);
}
}
},
\n${message.content}\n\n`,
);
return forwardedEmbed;
};
const buildViewButtonFunction = (message: Message): ButtonBuilder => {
const viewButton = new ButtonBuilder().
setLabel("View Message").
setURL(message.url).
setStyle(ButtonStyle.Link);
return viewButton;
};
const data = new ContextMenuCommandBuilder().setName("Forward to Naomi").
setType(ApplicationCommandType.Message);
const execute = async(interaction: MessageContextMenuCommandInteraction):
Promise<void> => {
await interaction.deferReply({ ephemeral: true });
if (interaction.user.id !== ids.users.naomi) {
await interaction.editReply("❌ Only Naomi can use this command.");
return;
}
const message = interaction.targetMessage;
if (message.author.id === ids.users.naomi) {
await interaction.editReply(
"No need to forward your own message to yourself 😄",
);
return;
}
try {
const naomi = await interaction.client.users.fetch(ids.users.naomi);
const forwardedEmbed = buildForwardedEmbed(message);
const viewButton = buildViewButtonFunction(message);
const row = new ActionRowBuilder<ButtonBuilder>().addComponents(
viewButton,
);
await naomi.send({
components: [ row ],
embeds: [ forwardedEmbed ],
files: message.attachments.map((att) => {
return att.url;
}),
});
await interaction.editReply({
content: "✅ Forwarded to your DMs!",
});
} catch (error) {
let replyText = "❌ Failed to forward message.";
if (error instanceof DiscordAPIError && error.code === 50_007) {
replyText = `${replyText} (Naomi's DMs might be closed)`;
}
await interaction.editReply(replyText);
await logger.error("operation", error);
}
};
export const forwardOwnerDM = {
data,
execute,
};
+4 -1
View File
@@ -148,7 +148,10 @@ amari.discord.on(Events.ThreadCreate, (thread) => {
const { bugReports, communityFeedback, featureRequests, policyIdeation }
= ids.channels;
if (
![ bugReports, communityFeedback, featureRequests, policyIdeation ].includes(
![ bugReports,
communityFeedback,
featureRequests,
policyIdeation ].includes(
thread.parent.id,
)
) {
+1 -1
View File
@@ -29,4 +29,4 @@ const requestCommand = async(): Promise<void> => {
}
}
};
requestCommand();
void requestCommand();