Turn a channel name into an id before touching a message

conversations.history and chat.delete only take ids, so a stored name like
logbuch answered channel_not_found. The name is resolved through
conversations.list first, and the hint asks for the id.
This commit is contained in:
Matthias G
2026-08-03 13:13:31 +02:00
parent 05e131a0c0
commit 7e2a00842e
4 changed files with 61 additions and 6 deletions
+10 -4
View File
@@ -8,7 +8,7 @@ import {
} from '~/data/repositories/settings'
import { invalid, isUuid, readField, readFlag, type AdminFormState } from './admin-forms'
import { runWeeklyReport } from './report-settings'
import { deleteFromSlack, findMessageTs } from './slack'
import { deleteFromSlack, findMessageTs, resolveChannelId } from './slack'
import { reportText } from './weekly-report'
import type { Viewer } from './auth-access'
@@ -132,12 +132,18 @@ export async function performDeleteMessage(viewer: Viewer, formData: FormData):
return invalid('runNoChannel')
}
const resolved = await resolveChannelId(token, channel)
if (!resolved.ok) {
return invalid('slackSaid', { detail: resolved.detail })
}
let messageTs = run.messageTs
if (!messageTs) {
const lookup = await findMessageTs({
token,
channel,
channel: resolved.id,
text: reportText({ from: run.fromAt, to: run.toAt, total: run.total }),
around: run.createdAt,
})
@@ -149,7 +155,7 @@ export async function performDeleteMessage(viewer: Viewer, formData: FormData):
messageTs = lookup.messageTs
}
const result = await deleteFromSlack(token, channel, messageTs)
const result = await deleteFromSlack(token, resolved.id, messageTs)
if (!result.ok) {
return invalid('slackSaid', { detail: result.detail })
@@ -163,7 +169,7 @@ export async function performDeleteMessage(viewer: Viewer, formData: FormData):
action: 'settings.reportDelete',
entity: 'setting',
entityId: run.id,
data: { channel, messageTs },
data: { channel: resolved.id, messageTs },
})
return { status: 'ok', message: 'messageDeleted' }