Skip to content

Built for people who want to own their automations. Join the waitlist for an invite.

Package listing

@kentcdodds/grok-bot

src/unregister.ts

36 lines · 997 B · TypeScript
import {
	deleteBotRecord,
	requireBotQuery,
	resolveBot,
} from './registry.ts'

export type UnregisterInput = {
	/** Bot id or name (case-insensitive). */
	bot: string
}

export type UnregisterResult =
	| { removed: true; id: string; name: string }
	| { removed: false }

/**
 * Remove a Grok Bot roster row and its alias keys.
 *
 * Does not delete the Kody sender-key secret.
 *
 * @param input.bot - Bot id or name
 * @returns Whether a row was removed
 * @example
 * import unregister from 'kody:@kentcdodds/grok-bot/unregister'
 * const result = await unregister({ bot: 'ship-pr' })
 * // => { removed: true, id, name } or { removed: false }
 */
export default async function unregister(
	input: UnregisterInput = {} as UnregisterInput,
): Promise<UnregisterResult> {
	const botQuery = requireBotQuery(input?.bot)
	const record = await resolveBot(botQuery)
	if (!record) return { removed: false }
	await deleteBotRecord(record)
	return { removed: true, id: record.id, name: record.name }
}