videoscriber-backend / scripts /telegram-set-webhook.js
Rimas Kavaliauskas
Add Telegram MVP UX flow and HF health compatibility
9e3a0e2
import 'dotenv/config';
function required(name) {
const value = String(process.env[name] || '').trim();
if (!value) {
throw new Error(`${name} is required`);
}
return value;
}
async function main() {
const token = required('TELEGRAM_BOT_TOKEN');
const secret = required('TELEGRAM_WEBHOOK_SECRET');
const baseUrl = required('HF_BACKEND_BASE_URL').replace(/\/+$/, '');
const webhookUrl = `${baseUrl}/api/telegram/webhook/${secret}`;
const response = await fetch(`https://api.telegram.org/bot${token}/setWebhook`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
url: webhookUrl,
secret_token: secret,
drop_pending_updates: false,
allowed_updates: ['message', 'edited_message'],
}),
});
const payload = await response.json().catch(() => ({}));
if (!response.ok || payload?.ok === false) {
throw new Error(payload?.description || `setWebhook failed (${response.status})`);
}
console.log(
JSON.stringify(
{
ok: true,
webhook_url: webhookUrl,
telegram_result: payload.result || true,
},
null,
2
)
);
}
main().catch((error) => {
console.error('Failed to set Telegram webhook:', error?.message || String(error));
process.exit(1);
});