Add missing processMessage/processCallback functions for webhook handling

This commit is contained in:
admin
2026-05-05 12:21:12 +00:00
Unverified
parent 0d6ad8d6a0
commit 4db82f78a6

View File

@@ -77,6 +77,31 @@ export async function initBot(config, api, tools, skills) {
} }
} }
// Process incoming message from Telegram
async function processMessage(chatId, text, user) {
try {
const provider = new (await import('../api/index.js')).ZAIProvider(api);
const response = await provider.complete(text, { model: 'glm-5.1' });
const reply = response.content || '🤖 *zCode*: ' + response;
await sendTelegramMessage(chatId, reply);
} catch (error) {
logger.error('Error processing message:', error.message);
await sendTelegramMessage(chatId, '❌ Sorry, an error occurred while processing your message.');
}
}
// Process callback query
async function processCallback(chatId, data) {
try {
const provider = new (await import('../api/index.js')).ZAIProvider(api);
const response = await provider.complete(data, { model: 'glm-5.1' });
const reply = response.content || '🤖 *zCode*: ' + response;
await sendTelegramMessage(chatId, reply);
} catch (error) {
logger.error('Error processing callback:', error.message);
}
}
// Handle webhook // Handle webhook
// Handle webhook verification (Telegram GET request) // Handle webhook verification (Telegram GET request)
app.get('/telegram/webhook', (req, res) => { app.get('/telegram/webhook', (req, res) => {
@@ -126,4 +151,44 @@ export async function initBot(config, api, tools, skills) {
res.json({ ok: true }); res.json({ ok: true });
} }
}); });
// Set webhook (if URL provided)
async function setWebhook() {
const webhookUrl = process.env.ZCODE_WEBHOOK_URL;
if (webhookUrl) {
const url = `https://api.telegram.org/bot${botToken}/setWebhook`;
const response = await fetch(url, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ url: webhookUrl }),
});
const data = await response.json();
if (data.ok) {
logger.info('✓ Webhook set successfully');
} else {
logger.error('✗ Failed to set webhook:', data.description);
}
}
}
// Start HTTP server
const PORT = process.env.ZCODE_PORT || 3000;
httpServer.listen(PORT, () => {
logger.info(`✓ HTTP server running on port ${PORT}`);
logger.info(`✓ WebSocket server ready`);
});
// Set webhook and keep process alive
await setWebhook();
return {
send: sendTelegramMessage,
ws: sendWebSocketMessage,
waitForMessages: async () => {
// Keep process alive
await new Promise(() => {});
},
getConnections: () => connections.size,
};
} }