// bot/src/channelKey.ts — extração de chave de projeto Jira a partir do canal Slack

import type { WebClient } from '@slack/web-api'

export class ChannelKeyMissingError extends Error {
  constructor(channelId: string) {
    super(
      `Canal ${channelId} não tem "key: PROJ" no tópico ou descrição. ` +
      `Configure com: /bot help`
    )
    this.name = 'ChannelKeyMissingError'
  }
}

const KEY_RE = /key\s*:\s*([A-Z][A-Z0-9]+)/i

export async function extractProjectKey(
  client: WebClient,
  channelId: string
): Promise<string> {
  const info = await client.conversations.info({ channel: channelId })
  const topic   = info.channel?.topic?.value   ?? ''
  const purpose = info.channel?.purpose?.value ?? ''
  const m = KEY_RE.exec(topic) ?? KEY_RE.exec(purpose)
  if (!m) throw new ChannelKeyMissingError(channelId)
  return m[1].toUpperCase()
}
