mirror of
https://github.com/ReCloudStudio/WebHooker.git
synced 2026-09-23 00:21:28 +00:00
Add a platform-aware route target system so a single route can forward to several destinations at once (e.g. a Discord channel and a Telegram group). Route.target becomes Route.targets[] with per-entry platform, channelId/threadId for Discord and chatId/topicId for Telegram; the legacy single-target format is normalized on load and accepted by the admin API. Implement the Telegram driver with HTML rendering and Bot API sendMessage (chat_id + message_thread_id for topics, retry on 429/5xx), plus /gh commands served over POST /telegram/webhook: login, logout, comment, merge and close. The comment/merge/close commands resolve the issue or PR from the replied-to notification message. OAuth binding now stores a D1 telegram_links mapping and replies with a confirmation. Sync the Telegram webhook from the scheduled trigger via setWebhook.
26 lines
769 B
TypeScript
26 lines
769 B
TypeScript
import { createServer } from "./server";
|
|
import { syncCommands } from "./drivers/discord/commands";
|
|
import { syncTelegramWebhook } from "./drivers/telegram/commands";
|
|
import type { Env } from "./types";
|
|
import { log } from "./lib/log";
|
|
|
|
const app = createServer();
|
|
|
|
export default {
|
|
async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
|
|
return app.fetch(request, env, ctx);
|
|
},
|
|
|
|
async scheduled(_event: ScheduledEvent, env: Env): Promise<void> {
|
|
try {
|
|
await syncCommands(env);
|
|
} catch (err) {
|
|
log.error({ err }, "Discord command sync from cron failed");
|
|
}
|
|
try {
|
|
await syncTelegramWebhook(env);
|
|
} catch (err) {
|
|
log.error({ err }, "Telegram webhook sync from cron failed");
|
|
}
|
|
},
|
|
};
|