mirror of
https://github.com/harivansh-afk/pi-telegram-webhook.git
synced 2026-04-15 03:00:47 +00:00
- webhook server with secret validation, rate limiting, body guards - streaming replies via sendMessage + editMessageText throttled loop - RPC session management for persistent conversations - 15/15 tests passing
66 lines
1.2 KiB
TypeScript
66 lines
1.2 KiB
TypeScript
/**
|
|
* pi-telegram-webhook — Type definitions.
|
|
*/
|
|
|
|
export interface Config {
|
|
botToken: string;
|
|
webhookUrl: string;
|
|
webhookPort?: number;
|
|
webhookHost?: string;
|
|
webhookPath?: string;
|
|
webhookSecret: string;
|
|
allowedChatIds?: string[];
|
|
streamingThrottleMs?: number;
|
|
minInitialChars?: number;
|
|
trustedProxies?: string[];
|
|
maxConcurrent?: number;
|
|
timeoutMs?: number;
|
|
idleTimeoutMinutes?: number;
|
|
model?: string;
|
|
extensions?: string[];
|
|
}
|
|
|
|
export interface TelegramMessage {
|
|
message_id: number;
|
|
from?: {
|
|
id: number;
|
|
username?: string;
|
|
first_name?: string;
|
|
};
|
|
chat: {
|
|
id: number;
|
|
type: string;
|
|
title?: string;
|
|
};
|
|
date: number;
|
|
text?: string;
|
|
}
|
|
|
|
export interface TelegramUpdate {
|
|
update_id: number;
|
|
message?: TelegramMessage;
|
|
}
|
|
|
|
export interface SenderSession {
|
|
chatId: string;
|
|
queue: QueuedMessage[];
|
|
processing: boolean;
|
|
abortController: AbortController | null;
|
|
messageCount: number;
|
|
startedAt: number;
|
|
}
|
|
|
|
export interface QueuedMessage {
|
|
id: string;
|
|
chatId: string;
|
|
text: string;
|
|
enqueuedAt: number;
|
|
}
|
|
|
|
export interface RunResult {
|
|
ok: boolean;
|
|
response: string;
|
|
error?: string;
|
|
durationMs: number;
|
|
exitCode: number;
|
|
}
|