Spaces:
Paused
Paused
| import type { Guild, Message, User } from "@buape/carbon"; | |
| import { formatAgentEnvelope, type EnvelopeFormatOptions } from "../../auto-reply/envelope.js"; | |
| import { resolveTimestampMs } from "./format.js"; | |
| import { resolveDiscordSenderIdentity } from "./sender-identity.js"; | |
| export function resolveReplyContext( | |
| message: Message, | |
| resolveDiscordMessageText: (message: Message, options?: { includeForwarded?: boolean }) => string, | |
| options?: { envelope?: EnvelopeFormatOptions }, | |
| ): string | null { | |
| const referenced = message.referencedMessage; | |
| if (!referenced?.author) { | |
| return null; | |
| } | |
| const referencedText = resolveDiscordMessageText(referenced, { | |
| includeForwarded: true, | |
| }); | |
| if (!referencedText) { | |
| return null; | |
| } | |
| const sender = resolveDiscordSenderIdentity({ | |
| author: referenced.author, | |
| pluralkitInfo: null, | |
| }); | |
| const fromLabel = referenced.author ? buildDirectLabel(referenced.author, sender.tag) : "Unknown"; | |
| const body = `${referencedText}\n[discord message id: ${referenced.id} channel: ${referenced.channelId} from: ${sender.tag ?? sender.label} user id:${sender.id}]`; | |
| return formatAgentEnvelope({ | |
| channel: "Discord", | |
| from: fromLabel, | |
| timestamp: resolveTimestampMs(referenced.timestamp), | |
| body, | |
| envelope: options?.envelope, | |
| }); | |
| } | |
| export function buildDirectLabel(author: User, tagOverride?: string) { | |
| const username = | |
| tagOverride?.trim() || resolveDiscordSenderIdentity({ author, pluralkitInfo: null }).tag; | |
| return `${username ?? "unknown"} user id:${author.id}`; | |
| } | |
| export function buildGuildLabel(params: { guild?: Guild; channelName: string; channelId: string }) { | |
| const { guild, channelName, channelId } = params; | |
| return `${guild?.name ?? "Guild"} #${channelName} channel id:${channelId}`; | |
| } | |