Fork of upstream llblab/[email protected].0 (SHA afe09c5) repackaged as a drop-in extension for can1357/oh-my-pi (omp >= 16.5.2). Changes vs upstream: - Rename package: @llblab/pi-telegram -> @evandrodevbr/oh-my-pi-telegram - Bump version: 0.22.0 -> 0.22.0-evandro.1 - Update repository/homepage/bugs URLs to evandrodevbr - Add omp field in package.json (displayName + compatibleWith) - README: prepend 'Oh My Pi (omp) Compatibility' section with install commands, verified-components table, upstream lineage, and rationale - CHANGELOG: add '0.22.0-evandro.1' entry under Unreleased - docs/: rename @llblab/pi-telegram imports to @evandrodevbr/oh-my-pi-telegram - tests/public-api.test.ts: rename package import paths Gates re-run on the fork: - npm run typecheck -> tsc --noEmit (success) - npm test -> 1229 pass / 0 fail / 1 platform-only skip - npm run audit -> found 0 vulnerabilities - npm run pack:check -> evandrodevbr-oh-my-pi-telegram-0.22.0-evandro.1.tgz Verified: - omp install --link ./pi-telegram -> Linked OK - omp plugin list -> @evandrodevbr/[email protected].0-evandro.1 Upstream lineage: badlogic/pi-telegram -> llblab/pi-telegram (0.22.0) -> evandrodevbr/oh-my-pi-telegram (this fork)
50 lines
1.3 KiB
TypeScript
50 lines
1.3 KiB
TypeScript
/**
|
|
* Telegram transport destination value helpers
|
|
* Zones: Bot API transport, routing, replies/previews, ownership, multi-instance bus
|
|
* Owns the minimal `{ chatId, threadId? }` address shape shared by classic private chats
|
|
* and Telegram UI threads mapped through Bot API `message_thread_id`.
|
|
*/
|
|
|
|
export interface TelegramTarget {
|
|
chatId: number;
|
|
threadId?: number;
|
|
}
|
|
|
|
const PRIVATE_TARGET_THREAD_KEY = "private";
|
|
|
|
export function createTelegramPrivateTarget(chatId: number): TelegramTarget {
|
|
return { chatId };
|
|
}
|
|
|
|
export function createTelegramThreadTarget(
|
|
chatId: number,
|
|
threadId: number,
|
|
): TelegramTarget {
|
|
return { chatId, threadId };
|
|
}
|
|
|
|
export function getTelegramTargetKey(target: TelegramTarget): string {
|
|
return `${target.chatId}:${target.threadId ?? PRIVATE_TARGET_THREAD_KEY}`;
|
|
}
|
|
|
|
export function isTelegramThreadTarget(
|
|
target: TelegramTarget,
|
|
): target is TelegramTarget & { threadId: number } {
|
|
return Number.isInteger(target.threadId);
|
|
}
|
|
|
|
export function areTelegramTargetsEqual(
|
|
left: TelegramTarget,
|
|
right: TelegramTarget,
|
|
): boolean {
|
|
return left.chatId === right.chatId && left.threadId === right.threadId;
|
|
}
|
|
|
|
export function getTelegramTargetThreadParams(
|
|
target: TelegramTarget,
|
|
): { message_thread_id?: number } {
|
|
return isTelegramThreadTarget(target)
|
|
? { message_thread_id: target.threadId }
|
|
: {};
|
|
}
|