MCPcopy
hub / github.com/stephengpope/thepopebot / registerTelegramWebhook

Function registerTelegramWebhook

lib/chat/actions.js:1099–1152  ·  view source on GitHub ↗
(webhookUrl)

Source from the content-addressed store, hash-verified

1097 * to the APP_URL-derived default.
1098 */
1099export async function registerTelegramWebhook(webhookUrl) {
1100 const user = await requireAdmin();
1101 try {
1102 const { getConfigSecret, setConfigSecret, getConfigValue, setConfigValue, deleteConfigValue } =
1103 await import('../db/config.js');
1104 const { getConfig } = await import('../config.js');
1105 const { setTelegramWebhook, generateWebhookSecret } = await import('../tools/telegram.js');
1106
1107 const botToken = getConfigSecret('TELEGRAM_BOT_TOKEN');
1108 if (!botToken) return { error: 'Bot token must be set first' };
1109
1110 const appUrl = getConfig('APP_URL');
1111 const defaultUrl = appUrl ? `${appUrl.replace(/\/$/, '')}/api/telegram/webhook` : '';
1112
1113 // Resolve the URL to register.
1114 let urlToRegister;
1115 if (typeof webhookUrl === 'string') {
1116 const trimmed = webhookUrl.trim();
1117 if (!trimmed || trimmed === defaultUrl) {
1118 deleteConfigValue('TELEGRAM_WEBHOOK_URL');
1119 urlToRegister = trimmed || defaultUrl;
1120 } else {
1121 setConfigValue('TELEGRAM_WEBHOOK_URL', trimmed, user.id);
1122 urlToRegister = trimmed;
1123 }
1124 } else {
1125 urlToRegister = getConfigValue('TELEGRAM_WEBHOOK_URL') || defaultUrl;
1126 }
1127
1128 if (!urlToRegister) {
1129 return { error: 'Webhook URL is required (set APP_URL or supply a URL)' };
1130 }
1131 try {
1132 const parsed = new URL(urlToRegister);
1133 if (parsed.protocol !== 'https:') {
1134 return { error: 'Webhook URL must use https://' };
1135 }
1136 } catch {
1137 return { error: 'Webhook URL is not a valid URL' };
1138 }
1139
1140 const secret = generateWebhookSecret();
1141 setConfigSecret('TELEGRAM_WEBHOOK_SECRET', secret, user.id);
1142
1143 const result = await setTelegramWebhook(botToken, urlToRegister, secret);
1144 if (!result.ok) {
1145 return { error: result.description || 'Failed to register webhook' };
1146 }
1147 return { success: true, webhookUrl: urlToRegister };
1148 } catch (err) {
1149 console.error('Failed to register Telegram webhook:', err);
1150 return { error: err.message };
1151 }
1152}
1153
1154// ─────────────────────────────────────────────────────────────────────────────
1155// Settings — Chat sub-tab

Callers 1

handleRegisterWebhookFunction · 0.90

Calls 9

requireAdminFunction · 0.90
getConfigSecretFunction · 0.85
getConfigFunction · 0.85
deleteConfigValueFunction · 0.85
setConfigValueFunction · 0.85
getConfigValueFunction · 0.85
setConfigSecretFunction · 0.85
setTelegramWebhookFunction · 0.85
generateWebhookSecretFunction · 0.50

Tested by

no test coverage detected