feat: edit existing messages for workflow run updates

This commit is contained in:
RhenCloud 2026-08-03 09:43:36 +08:00
parent 4b3f5189a8
commit 78f0a4e28a
No known key found for this signature in database
GPG key ID: A574A617378C4E0B
8 changed files with 187 additions and 16 deletions

View file

@ -7,20 +7,17 @@ interface DiscordMessage {
id?: string;
}
export async function sendMessage(
async function request(
url: string,
method: string,
token: string,
channelId: string,
message: unknown,
threadId?: string,
channelId: string,
): Promise<SendResult> {
const url = threadId
? `${DISCORD_API}/channels/${threadId}/messages`
: `${DISCORD_API}/channels/${channelId}/messages`;
for (let attempt = 0; attempt < 3; attempt++) {
try {
const res = await fetch(url, {
method: "POST",
method,
headers: {
Authorization: `Bot ${token}`,
"Content-Type": "application/json",
@ -80,3 +77,27 @@ export async function sendMessage(
return { ok: false, error: "Max retries exceeded", errorCode: "RETRIES", attempts: 3 };
}
export async function sendMessage(
token: string,
channelId: string,
message: unknown,
threadId?: string,
): Promise<SendResult> {
const url = threadId
? `${DISCORD_API}/channels/${threadId}/messages`
: `${DISCORD_API}/channels/${channelId}/messages`;
return request(url, "POST", token, message, channelId);
}
export async function editMessage(
token: string,
channelId: string,
messageId: string,
message: unknown,
threadId?: string,
): Promise<SendResult> {
const base = threadId ?? channelId;
const url = `${DISCORD_API}/channels/${base}/messages/${messageId}`;
return request(url, "PATCH", token, message, channelId);
}