Telegram Bots als eigenständige Entität mit eigener Page
- Neue Tabelle 'telegram_bots' (bot_id, name, bot_token, webhook_secret, is_public)
- Automatische Migration bestehender Session-Telegram-Configs in telegram_bots
- Sessions verweisen via telegram_bot_id auf Bot (mehrere Sessions pro Bot möglich)
- Webhook-URL: /api/telegram/webhook/{botId} statt {sessionId}
- Eigene Telegram-Bot-Page (wie Agent/Cronjob/Session) statt Modal
- Bot-Page: Name, Token, Secret, Webhook-Verwaltung (registrieren/status/entfernen), Löschen
- Dashboard: Telegram Bots Section mit Cards (Name, maskierter Token, Session-Count)
- Session-Page: Bot-Picker (wie Agent-Picker) statt Token-Input, Chat-ID readonly + Unlink-Button
- Public-Flag: Bot kann von anderen Usern in ihren Sessions ausgewählt werden
- Vereinfacht: 1 Session = max. 1 Telegram Chat, allowed_chat_ids entfällt
- /start zeigt Chat-ID an, /unlink entfernt (Unlink nur über Web-UI)
- Nachrichten-Routing: Bot + Chat-ID → Session Lookup
This commit is contained in:
1 parent
3b7bdb7a20
commit
ec73ccd71e
13 files changed
+907
-371
No files matched your search
@@ -172,6 +172,20 @@ function _openPickerModal(title, items, currentId, onSelect, options) {
|
||||
});
|
||||
}
|
||||
|
||||
// ── Telegram Bot Picker Modal ──
|
||||
|
||||
function openTelegramBotPickerModal(bots, currentBotId, onSelect) {
|
||||
var items = bots.map(function(b) {
|
||||
b._pickerId = b.botId;
|
||||
return b;
|
||||
});
|
||||
_openPickerModal('Telegram Bot auswählen', items, currentBotId, onSelect, {
|
||||
noneLabel: 'Kein Bot',
|
||||
noneIcon: 'fa-paper-plane',
|
||||
buildCard: function(b) { return buildTelegramBotCard(b); }
|
||||
});
|
||||
}
|
||||
|
||||
// ── OpenClaw Import Modal ──
|
||||
|
||||
async function showOpenClawImportModal(sessionId) {
|
||||
|
||||
Reference in new issue
Block a user