opencode-telegram-group-topics-bot 0.11.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +74 -0
- package/LICENSE +21 -0
- package/README.md +305 -0
- package/dist/agent/manager.js +60 -0
- package/dist/agent/types.js +26 -0
- package/dist/app/start-bot-app.js +47 -0
- package/dist/bot/commands/abort.js +116 -0
- package/dist/bot/commands/commands.js +389 -0
- package/dist/bot/commands/constants.js +20 -0
- package/dist/bot/commands/definitions.js +25 -0
- package/dist/bot/commands/help.js +27 -0
- package/dist/bot/commands/models.js +38 -0
- package/dist/bot/commands/new.js +247 -0
- package/dist/bot/commands/opencode-start.js +85 -0
- package/dist/bot/commands/opencode-stop.js +44 -0
- package/dist/bot/commands/projects.js +304 -0
- package/dist/bot/commands/rename.js +173 -0
- package/dist/bot/commands/sessions.js +491 -0
- package/dist/bot/commands/start.js +67 -0
- package/dist/bot/commands/status.js +138 -0
- package/dist/bot/constants.js +49 -0
- package/dist/bot/handlers/agent.js +127 -0
- package/dist/bot/handlers/context.js +125 -0
- package/dist/bot/handlers/document.js +65 -0
- package/dist/bot/handlers/inline-menu.js +124 -0
- package/dist/bot/handlers/model.js +152 -0
- package/dist/bot/handlers/permission.js +281 -0
- package/dist/bot/handlers/prompt.js +263 -0
- package/dist/bot/handlers/question.js +285 -0
- package/dist/bot/handlers/variant.js +147 -0
- package/dist/bot/handlers/voice.js +173 -0
- package/dist/bot/index.js +945 -0
- package/dist/bot/message-patterns.js +4 -0
- package/dist/bot/middleware/auth.js +30 -0
- package/dist/bot/middleware/interaction-guard.js +80 -0
- package/dist/bot/middleware/unknown-command.js +22 -0
- package/dist/bot/scope.js +222 -0
- package/dist/bot/telegram-constants.js +3 -0
- package/dist/bot/telegram-rate-limiter.js +263 -0
- package/dist/bot/utils/commands.js +21 -0
- package/dist/bot/utils/file-download.js +91 -0
- package/dist/bot/utils/keyboard.js +85 -0
- package/dist/bot/utils/send-with-markdown-fallback.js +57 -0
- package/dist/bot/utils/session-error-filter.js +34 -0
- package/dist/bot/utils/topic-link.js +29 -0
- package/dist/cli/args.js +98 -0
- package/dist/cli.js +80 -0
- package/dist/config.js +103 -0
- package/dist/i18n/de.js +330 -0
- package/dist/i18n/en.js +330 -0
- package/dist/i18n/es.js +330 -0
- package/dist/i18n/index.js +102 -0
- package/dist/i18n/ru.js +330 -0
- package/dist/i18n/zh.js +330 -0
- package/dist/index.js +28 -0
- package/dist/interaction/cleanup.js +24 -0
- package/dist/interaction/constants.js +25 -0
- package/dist/interaction/guard.js +100 -0
- package/dist/interaction/manager.js +113 -0
- package/dist/interaction/types.js +1 -0
- package/dist/keyboard/manager.js +115 -0
- package/dist/keyboard/types.js +1 -0
- package/dist/model/capabilities.js +62 -0
- package/dist/model/manager.js +257 -0
- package/dist/model/types.js +24 -0
- package/dist/opencode/client.js +13 -0
- package/dist/opencode/events.js +159 -0
- package/dist/opencode/prompt-submit-error.js +101 -0
- package/dist/permission/manager.js +92 -0
- package/dist/permission/types.js +1 -0
- package/dist/pinned/manager.js +405 -0
- package/dist/pinned/types.js +1 -0
- package/dist/process/manager.js +273 -0
- package/dist/process/types.js +1 -0
- package/dist/project/manager.js +88 -0
- package/dist/question/manager.js +186 -0
- package/dist/question/types.js +1 -0
- package/dist/rename/manager.js +64 -0
- package/dist/runtime/bootstrap.js +350 -0
- package/dist/runtime/mode.js +74 -0
- package/dist/runtime/paths.js +37 -0
- package/dist/runtime/process-error-handlers.js +24 -0
- package/dist/session/cache-manager.js +455 -0
- package/dist/session/manager.js +87 -0
- package/dist/settings/manager.js +283 -0
- package/dist/stt/client.js +64 -0
- package/dist/summary/aggregator.js +625 -0
- package/dist/summary/formatter.js +417 -0
- package/dist/summary/tool-message-batcher.js +277 -0
- package/dist/topic/colors.js +8 -0
- package/dist/topic/constants.js +10 -0
- package/dist/topic/manager.js +161 -0
- package/dist/topic/title-constants.js +2 -0
- package/dist/topic/title-format.js +10 -0
- package/dist/topic/title-sync.js +17 -0
- package/dist/utils/error-format.js +29 -0
- package/dist/utils/logger.js +175 -0
- package/dist/utils/safe-background-task.js +33 -0
- package/dist/variant/manager.js +103 -0
- package/dist/variant/types.js +1 -0
- package/package.json +76 -0
package/dist/i18n/de.js
ADDED
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
export const de = {
|
|
2
|
+
"cmd.description.status": "Server- und Sitzungsstatus",
|
|
3
|
+
"cmd.description.new": "Neue Sitzung erstellen",
|
|
4
|
+
"cmd.description.abort": "Aktuelle Aktion abbrechen",
|
|
5
|
+
"cmd.description.stop": "Aktuelle Aktion stoppen",
|
|
6
|
+
"cmd.description.sessions": "Sitzungen auflisten",
|
|
7
|
+
"cmd.description.projects": "Projekte auflisten",
|
|
8
|
+
"cmd.description.commands": "Benutzerdefinierte Befehle",
|
|
9
|
+
"cmd.description.model": "Modell auswählen",
|
|
10
|
+
"cmd.description.agent": "Agent-Modus auswählen",
|
|
11
|
+
"cmd.description.cleanup": "Veraltete Themen schließen",
|
|
12
|
+
"cmd.description.opencode_start": "OpenCode-Server starten",
|
|
13
|
+
"cmd.description.opencode_stop": "OpenCode-Server stoppen",
|
|
14
|
+
"cmd.description.help": "Hilfe",
|
|
15
|
+
"callback.unknown_command": "Unbekannter Befehl",
|
|
16
|
+
"callback.processing_error": "Verarbeitungsfehler",
|
|
17
|
+
"error.load_agents": "❌ Agentenliste konnte nicht geladen werden",
|
|
18
|
+
"error.load_models": "❌ Modellliste konnte nicht geladen werden",
|
|
19
|
+
"error.load_variants": "❌ Variantenliste konnte nicht geladen werden",
|
|
20
|
+
"error.context_button": "❌ Kontext-Button konnte nicht verarbeitet werden",
|
|
21
|
+
"error.generic": "🔴 Etwas ist schiefgelaufen.",
|
|
22
|
+
"interaction.blocked.expired": "⚠️ Diese Interaktion ist abgelaufen. Bitte starte sie erneut.",
|
|
23
|
+
"interaction.blocked.expected_callback": "⚠️ Bitte benutze für diesen Schritt die Inline-Buttons oder tippe auf Abbrechen.",
|
|
24
|
+
"interaction.blocked.expected_text": "⚠️ Bitte sende für diesen Schritt eine Textnachricht.",
|
|
25
|
+
"interaction.blocked.expected_command": "⚠️ Bitte sende für diesen Schritt einen Befehl.",
|
|
26
|
+
"interaction.blocked.command_not_allowed": "⚠️ Dieser Befehl ist in diesem Schritt nicht verfügbar.",
|
|
27
|
+
"interaction.blocked.finish_current": "⚠️ Schließe zuerst die aktuelle Interaktion ab (antworten oder abbrechen), dann öffne ein anderes Menü.",
|
|
28
|
+
"inline.blocked.expected_choice": "⚠️ Wähle eine Option über die Inline-Buttons oder tippe auf Abbrechen.",
|
|
29
|
+
"inline.blocked.command_not_allowed": "⚠️ Dieser Befehl ist nicht verfügbar, solange das Inline-Menü aktiv ist.",
|
|
30
|
+
"question.blocked.expected_answer": "⚠️ Beantworte die aktuelle Frage über Buttons, Eigene Antwort oder Abbrechen.",
|
|
31
|
+
"question.blocked.command_not_allowed": "⚠️ Dieser Befehl ist erst verfügbar, wenn der aktuelle Frage-Flow abgeschlossen ist.",
|
|
32
|
+
"inline.button.cancel": "❌ Abbrechen",
|
|
33
|
+
"inline.inactive_callback": "Dieses Menü ist inaktiv",
|
|
34
|
+
"inline.cancelled_callback": "Abgebrochen",
|
|
35
|
+
"common.unknown": "unbekannt",
|
|
36
|
+
"common.unknown_error": "unbekannter Fehler",
|
|
37
|
+
"start.welcome": "👋 Willkommen beim OpenCode Telegram Group Topics Bot!\n\nNutze Befehle:\n/projects — Projekt auswählen\n/sessions — Sitzungsliste\n/new — neue Sitzung\n/status — Status\n/help — Hilfe\n\nNutze die unteren Buttons, um Modus, Modell und Variante zu wählen.",
|
|
38
|
+
"help.keyboard_hint": "💡 Nutze die unteren Buttons für Modus, Modell, Variante und Kontextaktionen.",
|
|
39
|
+
"help.text": "📖 **Hilfe**\n\n/status - Serverstatus prüfen\n/sessions - Sitzungsliste\n/new - Neue Sitzung erstellen\n/help - Hilfe",
|
|
40
|
+
"bot.thinking": "💭 Denke...",
|
|
41
|
+
"bot.project_not_selected": "🏗 Projekt ist nicht ausgewählt.\n\nWähle zuerst ein Projekt mit /projects.",
|
|
42
|
+
"bot.creating_session": "🔄 Erstelle eine neue Sitzung...",
|
|
43
|
+
"bot.create_session_error": "🔴 Sitzung konnte nicht erstellt werden. Versuche /new oder prüfe den Serverstatus mit /status.",
|
|
44
|
+
"bot.session_created": "✅ Sitzung erstellt: {title}",
|
|
45
|
+
"bot.session_busy": "⏳ Deine letzte Anfrage wird noch verarbeitet, deshalb wurde diese neue nicht gestartet.\n\nWarum das passiert ist: OpenCode erlaubt pro Sitzung nur einen aktiven Lauf gleichzeitig.\nWas du tun kannst: warte auf die aktuelle Antwort oder nutze /abort, wenn es festhängt, und sende die Nachricht dann erneut.",
|
|
46
|
+
"bot.session_reset_project_mismatch": "⚠️ Die aktive Sitzung passt nicht zum ausgewählten Projekt und wurde daher zurückgesetzt. Nutze /sessions zur Auswahl oder /new, um eine neue Sitzung zu erstellen.",
|
|
47
|
+
"bot.prompt_send_error": "⚠️ Ich konnte diese Nachricht nicht an OpenCode senden.\n\nWahrscheinliche Ursache: eine vorübergehende Verbindungsstörung zwischen Bot und OpenCode-Server.\nWas du tun kannst: sende die Nachricht erneut. Wenn es weiter passiert, nutze /status und prüfe, ob OpenCode erreichbar ist.",
|
|
48
|
+
"bot.prompt_send_error_session_not_found": "⚠️ Ich konnte diese Nachricht nicht senden, weil die aktive Sitzung nicht mehr verfügbar ist.\n\nWarum das passiert ist: die Sitzung wurde möglicherweise zurückgesetzt, gewechselt oder gelöscht.\nWas du tun kannst: wähl eine Sitzung mit /sessions oder erstelle eine neue mit /new und sende die Nachricht dann erneut.",
|
|
49
|
+
"bot.session_error": "🔴 OpenCode meldete einen Fehler: {message}",
|
|
50
|
+
"bot.session_retry": "🔁 {message}\n\nDer Provider liefert bei wiederholten Versuchen immer wieder denselben Fehler. Mit /abort abbrechen.",
|
|
51
|
+
"bot.unknown_command": "⚠️ Unbekannter Befehl: {command}. Nutze /help, um verfügbare Befehle zu sehen.",
|
|
52
|
+
"bot.photo_downloading": "⏳ Lade Foto herunter...",
|
|
53
|
+
"bot.photo_too_large": "⚠️ Foto ist zu groß (max. {maxSizeMb}MB)",
|
|
54
|
+
"bot.photo_model_no_image": "⚠️ Das aktuelle Modell unterstützt keine Bildeingabe. Sende nur Text.",
|
|
55
|
+
"bot.photo_download_error": "🔴 Foto konnte nicht heruntergeladen werden",
|
|
56
|
+
"bot.photo_no_caption": "💡 Tipp: Füge eine Bildunterschrift hinzu, um zu beschreiben, was du mit diesem Foto tun möchtest.",
|
|
57
|
+
"bot.file_downloading": "⏳ Lade Datei herunter...",
|
|
58
|
+
"bot.file_too_large": "⚠️ Datei ist zu groß (max. {maxSizeMb}MB)",
|
|
59
|
+
"bot.file_download_error": "🔴 Datei konnte nicht heruntergeladen werden",
|
|
60
|
+
"bot.model_no_pdf": "⚠️ Das aktuelle Modell unterstützt keine PDF-Eingabe. Sende nur Text.",
|
|
61
|
+
"bot.text_file_too_large": "⚠️ Textdatei ist zu groß (max. {maxSizeKb}KB)",
|
|
62
|
+
"status.header_running": "🟢 **OpenCode-Server läuft**",
|
|
63
|
+
"status.health.healthy": "OK",
|
|
64
|
+
"status.health.unhealthy": "Nicht OK",
|
|
65
|
+
"status.line.health": "Status: {health}",
|
|
66
|
+
"status.line.version": "Version: {version}",
|
|
67
|
+
"status.line.managed_yes": "Vom Bot verwaltet: Ja",
|
|
68
|
+
"status.line.managed_no": "Vom Bot verwaltet: Nein",
|
|
69
|
+
"status.line.pid": "PID: {pid}",
|
|
70
|
+
"status.line.uptime_sec": "Betriebszeit: {seconds} s",
|
|
71
|
+
"status.line.mode": "Modus: {mode}",
|
|
72
|
+
"status.line.model": "Modell: {model}",
|
|
73
|
+
"status.agent_not_set": "nicht gesetzt",
|
|
74
|
+
"status.project_selected": "🏗 Projekt: {project}",
|
|
75
|
+
"status.project_not_selected": "🏗 Projekt: nicht ausgewählt",
|
|
76
|
+
"status.project_hint": "Nutze /projects, um ein Projekt auszuwahlen",
|
|
77
|
+
"status.session_selected": "📋 Aktuelle Sitzung: {title}",
|
|
78
|
+
"status.session_not_selected": "📋 Aktuelle Sitzung: nicht ausgewählt",
|
|
79
|
+
"status.session_hint": "Nutze /sessions zur Auswahl oder /new zum Erstellen",
|
|
80
|
+
"status.server_unavailable": "🔴 OpenCode-Server ist nicht verfügbar\n\nNutze /opencode_start, um den Server zu starten.",
|
|
81
|
+
"projects.empty": "📭 Keine Projekte gefunden.\n\nÖffne ein Verzeichnis in OpenCode und erstelle mindestens eine Sitzung, dann erscheint es hier.",
|
|
82
|
+
"projects.select": "Projekt auswählen:",
|
|
83
|
+
"projects.select_with_current": "Projekt auswählen:\n\nAktuell: 🏗 {project}",
|
|
84
|
+
"projects.page_indicator": "Seite {current}/{total}",
|
|
85
|
+
"projects.prev_page": "⬅️ Zurück",
|
|
86
|
+
"projects.next_page": "Weiter ➡️",
|
|
87
|
+
"projects.fetch_error": "🔴 OpenCode-Server ist nicht verfügbar oder beim Laden der Projekte ist ein Fehler aufgetreten.",
|
|
88
|
+
"projects.page_load_error": "Diese Seite konnte nicht geladen werden. Bitte versuche es erneut.",
|
|
89
|
+
"projects.selected": "✅ Projekt ausgewählt: {project}\n\n📋 Sitzung wurde zurückgesetzt. Nutze /sessions oder /new für dieses Projekt.",
|
|
90
|
+
"projects.select_error": "🔴 Projekt konnte nicht ausgewählt werden.",
|
|
91
|
+
"projects.locked.topic_scope": "⚠️ Dieses Thema ist an seinen eigenen Projekt-/Sitzungsbereich gebunden. Wechsle Projekte nur im General-Thema, bevor du Themen erstellst.",
|
|
92
|
+
"projects.locked.group_project": "⚠️ Diese Gruppe ist bereits für folgendes Projekt konfiguriert: {project}. Erstelle eine neue Gruppe, wenn du in einem anderen Repository arbeiten willst.",
|
|
93
|
+
"projects.locked.callback": "Projektwechsel ist für diese Gruppe gesperrt.",
|
|
94
|
+
"sessions.project_not_selected": "🏗 Projekt ist nicht ausgewählt.\n\nWähle zuerst ein Projekt mit /projects.",
|
|
95
|
+
"sessions.empty": "📭 Keine Sitzungen gefunden.\n\nErstelle eine neue Sitzung mit /new.",
|
|
96
|
+
"sessions.select": "Sitzung auswählen:",
|
|
97
|
+
"sessions.select_page": "Sitzung auswählen (Seite {page}):",
|
|
98
|
+
"sessions.fetch_error": "🔴 OpenCode-Server ist nicht verfügbar oder beim Laden der Sitzungen ist ein Fehler aufgetreten.",
|
|
99
|
+
"sessions.select_project_first": "🔴 Projekt ist nicht ausgewählt. Nutze /projects.",
|
|
100
|
+
"sessions.page_empty_callback": "Auf dieser Seite gibt es keine Sitzungen",
|
|
101
|
+
"sessions.page_load_error_callback": "Diese Seite kann nicht geladen werden. Bitte versuche es erneut.",
|
|
102
|
+
"sessions.button.prev_page": "⬅️ Zurück",
|
|
103
|
+
"sessions.button.next_page": "Weiter ➡️",
|
|
104
|
+
"sessions.topic_locked": "⚠️ Dieses Thema ist an seine aktuelle Sitzung gebunden. Verwende /new im General-Thema, um ein weiteres Thema zu erstellen.",
|
|
105
|
+
"sessions.general_overview": "Übersicht der Themen-Sitzungen:",
|
|
106
|
+
"sessions.general_item": "• {topic} (Thread #{thread}) - {status}",
|
|
107
|
+
"sessions.general_empty": "Noch keine Sitzungs-Themen. Verwende /new, um eins zu erstellen.",
|
|
108
|
+
"sessions.bound_topic_link": "🔗 Thema für diese Sitzung: {url}",
|
|
109
|
+
"sessions.created_topic_link": "✅ Thema für diese Sitzung erstellt: {url}",
|
|
110
|
+
"sessions.loading_context": "⏳ Lade Kontext und letzte Nachrichten...",
|
|
111
|
+
"sessions.selected": "✅ Sitzung ausgewählt: {title}",
|
|
112
|
+
"sessions.select_error": "🔴 Sitzung konnte nicht ausgewählt werden.",
|
|
113
|
+
"sessions.preview.empty": "Keine neuen Nachrichten.",
|
|
114
|
+
"sessions.preview.title": "Letzte Nachrichten:",
|
|
115
|
+
"sessions.preview.you": "Du:",
|
|
116
|
+
"sessions.preview.agent": "Agent:",
|
|
117
|
+
"new.project_not_selected": "🏗 Projekt ist nicht ausgewählt.\n\nWähle zuerst ein Projekt mit /projects.",
|
|
118
|
+
"new.created": "✅ Neue Sitzung erstellt: {title}",
|
|
119
|
+
"new.topic_only_in_general": "⚠️ Führe /new im General-Thema aus, um ein eigenes Sitzungs-Thema zu erstellen.",
|
|
120
|
+
"new.requires_forum_general": "⚠️ /new benötigt das General-Thema in einer forum-fähigen Supergruppe.",
|
|
121
|
+
"new.topic_created": "✅ Sitzungs-Thema ist bereit: {title}",
|
|
122
|
+
"new.general_created": "✅ Neue OpenCode-Sitzung und Gruppenthema erstellt.",
|
|
123
|
+
"new.topic_create_error": "🔴 Sitzungs-Thema konnte nicht erstellt werden. Prüfe Forum-Berechtigungen und versuche es erneut.",
|
|
124
|
+
"new.topic_create_no_rights": '🔴 Ich kann in dieser Gruppe keine Foren-Themen erstellen. Bitte gib dem Bot die Berechtigung "Themen verwalten" und versuche dann /new erneut.',
|
|
125
|
+
"new.general_open_link": "🔗 Thema öffnen: {url}",
|
|
126
|
+
"new.create_error": "🔴 OpenCode-Server ist nicht verfügbar oder beim Erstellen der Sitzung ist ein Fehler aufgetreten.",
|
|
127
|
+
"cleanup.topic_use_general": "⚠️ Führe /cleanup im General-Thema aus.",
|
|
128
|
+
"cleanup.requires_forum_general": "⚠️ /cleanup ist nur im General-Thema einer forum-fähigen Supergruppe verfügbar.",
|
|
129
|
+
"cleanup.no_topics": "✅ Keine Themen-Sitzungen zum Aufräumen.",
|
|
130
|
+
"cleanup.result": "🧹 Aufräumen abgeschlossen. Geprüft: {inspected}, geschlossen: {closed}, übersprungen: {skipped}, fehlgeschlagen: {failed}.",
|
|
131
|
+
"stop.no_active_session": "🛑 Agent wurde nicht gestartet\n\nErstelle eine Sitzung mit /new oder wähle eine über /sessions aus.",
|
|
132
|
+
"stop.in_progress": "🛑 Event-Stream gestoppt, sende Abbruchsignal...\n\nWarte darauf, dass der Agent stoppt.",
|
|
133
|
+
"stop.warn_unconfirmed": "⚠️ Event-Stream gestoppt, aber der Server hat den Abbruch nicht bestätigt.\n\nPrüfe /status und versuche /abort in ein paar Sekunden erneut.",
|
|
134
|
+
"stop.warn_maybe_finished": "⚠️ Event-Stream gestoppt, aber der Agent konnte bereits fertig sein.",
|
|
135
|
+
"stop.success": "✅ Agent-Aktion unterbrochen. Von diesem Lauf werden keine weiteren Nachrichten gesendet.",
|
|
136
|
+
"stop.warn_still_busy": "⚠️ Signal gesendet, aber der Agent ist noch beschäftigt.\n\nDer Event-Stream ist bereits deaktiviert, daher werden keine Zwischenmeldungen gesendet.",
|
|
137
|
+
"stop.warn_timeout": "⚠️ Timeout beim Abbruch.\n\nDer Event-Stream ist bereits deaktiviert, versuche /abort in ein paar Sekunden erneut.",
|
|
138
|
+
"stop.warn_local_only": "⚠️ Event-Stream lokal gestoppt, aber serverseitiger Abbruch ist fehlgeschlagen.",
|
|
139
|
+
"stop.error": "🔴 Aktion konnte nicht gestoppt werden.\n\nEvent-Stream ist gestoppt, versuche /abort erneut.",
|
|
140
|
+
"opencode_start.already_running_managed": "⚠️ OpenCode-Server läuft bereits\n\nPID: {pid}\nBetriebszeit: {seconds} Sekunden",
|
|
141
|
+
"opencode_start.already_running_external": "✅ OpenCode-Server läuft bereits als externer Prozess\n\nVersion: {version}\n\nDieser Server wurde nicht vom Bot gestartet, daher kann /opencode-stop ihn nicht stoppen.",
|
|
142
|
+
"opencode_start.starting": "🔄 Starte OpenCode-Server...",
|
|
143
|
+
"opencode_start.start_error": "🔴 OpenCode-Server konnte nicht gestartet werden\n\nFehler: {error}\n\nPrüfe, ob OpenCode CLI installiert und im PATH verfügbar ist:\n`opencode --version`\n`npm install -g @opencode-ai/cli`",
|
|
144
|
+
"opencode_start.started_not_ready": "⚠️ OpenCode-Server gestartet, aber reagiert nicht\n\nPID: {pid}\n\nDer Server startet möglicherweise noch. Versuche /status in ein paar Sekunden.",
|
|
145
|
+
"opencode_start.success": "✅ OpenCode-Server erfolgreich gestartet\n\nPID: {pid}\nVersion: {version}",
|
|
146
|
+
"opencode_start.error": "🔴 Beim Starten des Servers ist ein Fehler aufgetreten.\n\nSiehe Anwendungslogs für Details.",
|
|
147
|
+
"opencode_stop.external_running": "⚠️ OpenCode-Server läuft als externer Prozess\n\nDieser Server wurde nicht über /opencode-start gestartet.\nStoppe ihn manuell oder nutze /status, um den Zustand zu prüfen.",
|
|
148
|
+
"opencode_stop.not_running": "⚠️ OpenCode-Server läuft nicht",
|
|
149
|
+
"opencode_stop.stopping": "🛑 Stoppe OpenCode-Server...\n\nPID: {pid}",
|
|
150
|
+
"opencode_stop.stop_error": "🔴 OpenCode-Server konnte nicht gestoppt werden\n\nFehler: {error}",
|
|
151
|
+
"opencode_stop.success": "✅ OpenCode-Server erfolgreich gestoppt",
|
|
152
|
+
"opencode_stop.error": "🔴 Beim Stoppen des Servers ist ein Fehler aufgetreten.\n\nSiehe Anwendungslogs für Details.",
|
|
153
|
+
"agent.changed_callback": "Modus geändert: {name}",
|
|
154
|
+
"agent.changed_message": "✅ Modus geändert zu: {name}",
|
|
155
|
+
"agent.change_error_callback": "Modus konnte nicht geändert werden",
|
|
156
|
+
"agent.menu.current": "Aktueller Modus: {name}\n\nModus auswählen:",
|
|
157
|
+
"agent.menu.select": "Arbeitsmodus auswählen:",
|
|
158
|
+
"agent.menu.empty": "⚠️ Keine verfügbaren Agenten",
|
|
159
|
+
"agent.menu.error": "🔴 Agentenliste konnte nicht geladen werden",
|
|
160
|
+
"model.changed_callback": "Modell geändert: {name}",
|
|
161
|
+
"model.changed_message": "✅ Modell geändert zu: {name}",
|
|
162
|
+
"model.change_error_callback": "Modell konnte nicht geändert werden",
|
|
163
|
+
"model.menu.empty": "⚠️ Keine verfügbaren Modelle",
|
|
164
|
+
"model.menu.select": "Modell auswählen:",
|
|
165
|
+
"model.menu.current": "Aktuelles Modell: {name}\n\nModell auswählen:",
|
|
166
|
+
"model.menu.favorites_title": "⭐ Favoriten (Füge Modelle in OpenCode CLI zu den Favoriten hinzu)",
|
|
167
|
+
"model.menu.favorites_empty": "— Leer.",
|
|
168
|
+
"model.menu.recent_title": "🕘 Zuletzt verwendet",
|
|
169
|
+
"model.menu.recent_empty": "— Leer.",
|
|
170
|
+
"model.menu.favorites_hint": "ℹ️ Füge Modelle in OpenCode CLI zu den Favoriten hinzu, damit sie oben angezeigt werden.",
|
|
171
|
+
"model.menu.error": "🔴 Modellliste konnte nicht geladen werden",
|
|
172
|
+
"variant.model_not_selected_callback": "Fehler: Modell ist nicht ausgewählt",
|
|
173
|
+
"variant.changed_callback": "Variante geändert: {name}",
|
|
174
|
+
"variant.changed_message": "✅ Variante geändert zu: {name}",
|
|
175
|
+
"variant.change_error_callback": "Variante konnte nicht geändert werden",
|
|
176
|
+
"variant.select_model_first": "⚠️ Zuerst ein Modell auswählen",
|
|
177
|
+
"variant.menu.empty": "⚠️ Keine verfügbaren Varianten",
|
|
178
|
+
"variant.menu.current": "Aktuelle Variante: {name}\n\nVariante auswählen:",
|
|
179
|
+
"variant.menu.error": "🔴 Variantenliste konnte nicht geladen werden",
|
|
180
|
+
"context.button.confirm": "✅ Ja, Kontext komprimieren",
|
|
181
|
+
"context.no_active_session": "⚠️ Keine aktive Sitzung. Erstelle eine Sitzung mit /new",
|
|
182
|
+
"context.confirm_text": '📊 Kontext-Komprimierung für Sitzung "{title}"\n\nDadurch wird die Kontextnutzung reduziert, indem alte Nachrichten aus dem Verlauf entfernt werden. Die aktuelle Aufgabe wird nicht unterbrochen.\n\nFortfahren?',
|
|
183
|
+
"context.general_not_available": "⚠️ Kontext-Kompaktierung ist nur innerhalb eines Sitzungs-Themas verfügbar, nicht im General-Thema.",
|
|
184
|
+
"context.general_not_available_callback": "Öffne zuerst ein Sitzungs-Thema.",
|
|
185
|
+
"context.callback_session_not_found": "Sitzung nicht gefunden",
|
|
186
|
+
"context.callback_compacting": "Komprimiere Kontext...",
|
|
187
|
+
"context.progress": "⏳ Komprimiere Kontext...",
|
|
188
|
+
"context.error": "❌ Kontext-Komprimierung fehlgeschlagen",
|
|
189
|
+
"context.success": "✅ Kontext erfolgreich komprimiert",
|
|
190
|
+
"permission.inactive_callback": "Berechtigungsanfrage ist inaktiv",
|
|
191
|
+
"permission.processing_error_callback": "Verarbeitungsfehler",
|
|
192
|
+
"permission.no_active_request_callback": "Fehler: keine aktive Anfrage",
|
|
193
|
+
"permission.reply.once": "Einmal erlaubt",
|
|
194
|
+
"permission.reply.always": "Immer erlaubt",
|
|
195
|
+
"permission.reply.reject": "Abgelehnt",
|
|
196
|
+
"permission.send_reply_error": "❌ Antwort auf Berechtigungsanfrage konnte nicht gesendet werden",
|
|
197
|
+
"permission.blocked.expected_reply": "⚠️ Bitte beantworte zuerst die Berechtigungsanfrage mit den Buttons oben.",
|
|
198
|
+
"permission.blocked.command_not_allowed": "⚠️ Dieser Befehl ist erst verfügbar, wenn du die Berechtigungsanfrage beantwortet hast.",
|
|
199
|
+
"permission.header": "{emoji} **Berechtigungsanfrage: {name}**\n\n",
|
|
200
|
+
"permission.button.allow": "✅ Einmal erlauben",
|
|
201
|
+
"permission.button.always": "🔓 Immer erlauben",
|
|
202
|
+
"permission.button.reject": "❌ Ablehnen",
|
|
203
|
+
"permission.name.bash": "Bash",
|
|
204
|
+
"permission.name.edit": "Bearbeiten",
|
|
205
|
+
"permission.name.write": "Schreiben",
|
|
206
|
+
"permission.name.read": "Lesen",
|
|
207
|
+
"permission.name.webfetch": "Web-Abruf",
|
|
208
|
+
"permission.name.websearch": "Web-Suche",
|
|
209
|
+
"permission.name.glob": "Dateisuche",
|
|
210
|
+
"permission.name.grep": "Inhaltssuche",
|
|
211
|
+
"permission.name.list": "Verzeichnis auflisten",
|
|
212
|
+
"permission.name.task": "Task",
|
|
213
|
+
"permission.name.lsp": "LSP",
|
|
214
|
+
"question.inactive_callback": "Umfrage ist inaktiv",
|
|
215
|
+
"question.processing_error_callback": "Verarbeitungsfehler",
|
|
216
|
+
"question.select_one_required_callback": "Wähle mindestens eine Option",
|
|
217
|
+
"question.enter_custom_callback": "Sende deine eigene Antwort als Nachricht",
|
|
218
|
+
"question.cancelled": "❌ Umfrage abgebrochen",
|
|
219
|
+
"question.answer_already_received": "Antwort bereits erhalten, bitte warten...",
|
|
220
|
+
"question.completed_no_answers": "✅ Umfrage abgeschlossen (keine Antworten)",
|
|
221
|
+
"question.no_active_project": "❌ Kein aktives Projekt",
|
|
222
|
+
"question.no_active_request": "❌ Keine aktive Anfrage",
|
|
223
|
+
"question.send_answers_error": "❌ Antworten konnten nicht an den Agenten gesendet werden",
|
|
224
|
+
"question.multi_hint": "\n*Du kannst mehrere Optionen auswählen*",
|
|
225
|
+
"question.button.submit": "✅ Fertig",
|
|
226
|
+
"question.button.custom": "🔤 Eigene Antwort",
|
|
227
|
+
"question.button.cancel": "❌ Abbrechen",
|
|
228
|
+
"question.use_custom_button_first": '⚠️ Um Text zu senden, tippe zuerst bei der aktuellen Frage auf "Eigene Antwort".',
|
|
229
|
+
"question.summary.title": "✅ Umfrage abgeschlossen!\n\n",
|
|
230
|
+
"question.summary.question": "Frage {index}:\n{question}\n\n",
|
|
231
|
+
"question.summary.answer": "Antwort:\n{answer}\n\n",
|
|
232
|
+
"keyboard.agent_mode": "{emoji} {name} Modus",
|
|
233
|
+
"keyboard.context": "📊 {used} / {limit} ({percent}%)",
|
|
234
|
+
"keyboard.context_empty": "📊 Steuerung",
|
|
235
|
+
"keyboard.general_defaults": "Neue Sitzungs-Standards:",
|
|
236
|
+
"keyboard.general_defaults_info": "Diese Standardwerte gelten für neu erstellte Sitzungen in dieser Gruppe:\n• Agent\n• Modell\n• Variante",
|
|
237
|
+
"keyboard.variant": "💭 {name}",
|
|
238
|
+
"keyboard.variant_default": "💡 Standard",
|
|
239
|
+
"keyboard.updated": "⌨️ Tastatur aktualisiert",
|
|
240
|
+
"keyboard.dm.status": "/status",
|
|
241
|
+
"keyboard.dm.help": "/help",
|
|
242
|
+
"keyboard.dm.opencode_start": "/opencode_start",
|
|
243
|
+
"keyboard.dm.opencode_stop": "/opencode_stop",
|
|
244
|
+
"pinned.default_session_title": "neue Sitzung",
|
|
245
|
+
"pinned.unknown": "Unbekannt",
|
|
246
|
+
"pinned.line.project": "Projekt: {project}",
|
|
247
|
+
"pinned.line.model": "Modell: {model}",
|
|
248
|
+
"pinned.line.context": "Kontext: {used} / {limit} ({percent}%)",
|
|
249
|
+
"pinned.files.title": "Dateien ({count}):",
|
|
250
|
+
"pinned.files.item": " {path}{diff}",
|
|
251
|
+
"pinned.files.more": " ... und {count} mehr",
|
|
252
|
+
"tool.todo.overflow": "*({count} weitere Aufgaben)*",
|
|
253
|
+
"tool.file_header.write": "Datei/Pfad schreiben: {path}\n============================================================\n\n",
|
|
254
|
+
"tool.file_header.edit": "Datei/Pfad bearbeiten: {path}\n============================================================\n\n",
|
|
255
|
+
"runtime.wizard.ask_token": "Telegram-Bot-Token eingeben (von @BotFather).\n> ",
|
|
256
|
+
"runtime.wizard.ask_language": "Oberflächensprache auswählen.\nGib die Sprach-Nummer aus der Liste oder den Locale-Code ein.\nDrücke Enter, um die Standardsprache beizubehalten: {defaultLocale}\n{options}\n> ",
|
|
257
|
+
"runtime.wizard.language_invalid": "Gib eine Sprach-Nummer aus der Liste oder einen unterstützten Locale-Code ein.\n",
|
|
258
|
+
"runtime.wizard.language_selected": "Ausgewählte Sprache: {language}\n",
|
|
259
|
+
"runtime.wizard.token_required": "Token ist erforderlich. Bitte versuche es erneut.\n",
|
|
260
|
+
"runtime.wizard.token_invalid": "Token sieht ungültig aus (erwartetes Format <id>:<secret>). Bitte versuche es erneut.\n",
|
|
261
|
+
"runtime.wizard.ask_user_id": "Gib deine Telegram User ID ein (du bekommst sie bei @userinfobot).\n> ",
|
|
262
|
+
"runtime.wizard.user_id_invalid": "Gib eine positive ganze Zahl ein (> 0).\n",
|
|
263
|
+
"runtime.wizard.ask_api_url": "OpenCode API URL eingeben (optional).\nEnter drücken für Standard: {defaultUrl}\n> ",
|
|
264
|
+
"runtime.wizard.ask_server_username": "Benutzernamen des OpenCode-Servers eingeben (optional).\nEnter drücken für Standard: {defaultUsername}\n> ",
|
|
265
|
+
"runtime.wizard.ask_server_password": "Passwort des OpenCode-Servers eingeben (optional, Eingabe verborgen).\nEnter drücken zum Überspringen.\n> ",
|
|
266
|
+
"runtime.wizard.api_url_invalid": "Gib eine gültige URL (http/https) ein oder drücke Enter für Standard.\n",
|
|
267
|
+
"runtime.wizard.start": "OpenCode Telegram Group Topics Bot Einrichtung.\n",
|
|
268
|
+
"runtime.wizard.saved": "Konfiguration gespeichert:\n- {envPath}\n- {settingsPath}\n",
|
|
269
|
+
"runtime.wizard.not_configured_starting": "Anwendung ist noch nicht konfiguriert. Starte Assistent...\n",
|
|
270
|
+
"runtime.wizard.tty_required": "Der interaktive Assistent erfordert ein TTY-Terminal. Führe `opencode-telegram-group-topics-bot config` in einer interaktiven Shell aus.",
|
|
271
|
+
"rename.no_session": "⚠️ Keine aktive Sitzung. Erstelle oder wähle zuerst eine Sitzung.",
|
|
272
|
+
"rename.prompt": "📝 Neuen Titel für die Sitzung eingeben:\n\nAktuell: {title}",
|
|
273
|
+
"rename.empty_title": "⚠️ Titel darf nicht leer sein.",
|
|
274
|
+
"rename.success": "✅ Sitzung umbenannt in: {title}",
|
|
275
|
+
"rename.error": "🔴 Sitzung konnte nicht umbenannt werden.",
|
|
276
|
+
"rename.cancelled": "❌ Umbenennen abgebrochen.",
|
|
277
|
+
"rename.inactive_callback": "Umbenennen-Anfrage ist inaktiv",
|
|
278
|
+
"rename.inactive": "⚠️ Umbenennen-Anfrage ist nicht aktiv. Starte /rename erneut.",
|
|
279
|
+
"rename.blocked.expected_name": "⚠️ Sende den neuen Sitzungsnamen als Text oder tippe in der Umbenennen-Nachricht auf Abbrechen.",
|
|
280
|
+
"rename.blocked.command_not_allowed": "⚠️ Dieser Befehl ist nicht verfügbar, solange beim Umbenennen auf einen neuen Namen gewartet wird.",
|
|
281
|
+
"rename.button.cancel": "❌ Abbrechen",
|
|
282
|
+
"commands.select": "Wähle einen OpenCode-Befehl:",
|
|
283
|
+
"commands.empty": "📭 Für dieses Projekt sind keine OpenCode-Befehle verfügbar.",
|
|
284
|
+
"commands.fetch_error": "🔴 OpenCode-Befehle konnten nicht geladen werden.",
|
|
285
|
+
"commands.no_description": "Keine Beschreibung",
|
|
286
|
+
"commands.button.execute": "✅ Ausführen",
|
|
287
|
+
"commands.button.cancel": "❌ Abbrechen",
|
|
288
|
+
"commands.confirm": "Bestätige die Ausführung des Befehls {command}. Für die Ausführung mit Argumenten sende die Argumente als Nachricht.",
|
|
289
|
+
"commands.inactive_callback": "Dieses Befehlsmenü ist inaktiv",
|
|
290
|
+
"commands.cancelled_callback": "Abgebrochen",
|
|
291
|
+
"commands.execute_callback": "Befehl wird ausgeführt...",
|
|
292
|
+
"commands.executing_prefix": "⚡ Befehl wird ausgeführt:",
|
|
293
|
+
"commands.arguments_empty": "⚠️ Argumente dürfen nicht leer sein. Sende Text oder tippe auf Ausführen.",
|
|
294
|
+
"commands.execute_error": "🔴 OpenCode-Befehl konnte nicht ausgeführt werden.",
|
|
295
|
+
"cmd.description.rename": "Aktuelle Sitzung umbenennen",
|
|
296
|
+
"cli.usage": "Verwendung:\n opencode-telegram-group-topics-bot [start] [--mode sources|installed]\n opencode-telegram-group-topics-bot status\n opencode-telegram-group-topics-bot stop\n opencode-telegram-group-topics-bot config [--mode sources|installed]\n\nHinweise:\n - Ohne Befehl wird standardmäßig `start` verwendet\n - `config` nutzt standardmäßig den Modus `installed`, außer `--mode sources` wird gesetzt",
|
|
297
|
+
"cli.placeholder.status": "Befehl `status` ist derzeit ein Platzhalter. Echte Statusprüfungen werden in der Service-Schicht hinzugefügt (Phase 5).",
|
|
298
|
+
"cli.placeholder.stop": "Befehl `stop` ist derzeit ein Platzhalter. Ein echter Stop des Hintergrundprozesses wird in der Service-Schicht hinzugefügt (Phase 5).",
|
|
299
|
+
"cli.placeholder.unavailable": "Befehl ist nicht verfügbar.",
|
|
300
|
+
"cli.error.prefix": "CLI-Fehler: {message}",
|
|
301
|
+
"cli.args.unknown_command": "Unbekannter Befehl: {value}",
|
|
302
|
+
"cli.args.mode_requires_value": "Option --mode erfordert einen Wert: sources|installed",
|
|
303
|
+
"cli.args.invalid_mode": "Ungültiger Wert für --mode: {value}. Erwartet sources|installed",
|
|
304
|
+
"cli.args.unknown_option": "Unbekannte Option: {value}",
|
|
305
|
+
"cli.args.mode_only_start": "Option --mode wird nur für die Befehle start und config unterstützt",
|
|
306
|
+
"legacy.models.fetch_error": "🔴 Modellliste konnte nicht geladen werden. Prüfe den Serverstatus mit /status.",
|
|
307
|
+
"legacy.models.empty": "📋 Keine verfügbaren Modelle. Konfiguriere Provider in OpenCode.",
|
|
308
|
+
"legacy.models.header": "📋 **Verfügbare Modelle:**\n\n",
|
|
309
|
+
"legacy.models.no_provider_models": " ⚠️ Keine verfügbaren Modelle\n",
|
|
310
|
+
"legacy.models.env_hint": "💡 Um ein Modell in .env zu nutzen:\n",
|
|
311
|
+
"legacy.models.error": "🔴 Beim Laden der Modellliste ist ein Fehler aufgetreten.",
|
|
312
|
+
"stt.recognizing": "🎤 Erkenne Audio...",
|
|
313
|
+
"stt.recognized": "🎤 Erkannt:\n{text}",
|
|
314
|
+
"stt.not_configured": "🎤 Spracherkennung ist nicht konfiguriert.\n\nSetze STT_API_URL und STT_API_KEY in .env, um sie zu aktivieren.",
|
|
315
|
+
"stt.error": "🔴 Audio konnte nicht erkannt werden: {error}",
|
|
316
|
+
"stt.empty_result": "🎤 Keine Sprache in der Audionachricht erkannt.",
|
|
317
|
+
"start.welcome_dm": "👋 Der DM-Modus ist auf Bot-/Serverstatus und Steuerbefehle beschränkt.\n\nNutze einen Gruppen-Topic-Thread für Projekt-/Sitzungsarbeit.",
|
|
318
|
+
"status.global_overview": "📈 Globaler Überblick",
|
|
319
|
+
"status.global_projects": "Projekte: {count}",
|
|
320
|
+
"status.global_sessions": "Sitzungen: {count}",
|
|
321
|
+
"dm.restricted.command": "⚠️ Sitzungs-Steuerbefehle sind im DM deaktiviert. Nutze einen Gruppen-Topic-Thread für Projekt-/Sitzungsarbeit.",
|
|
322
|
+
"dm.restricted.prompt": "⚠️ Prompts sind im DM deaktiviert. Nutze einen Gruppen-Topic-Thread, um OpenCode-Aufgaben auszuführen.",
|
|
323
|
+
"help.dm.title": "DM-Steuerbefehle",
|
|
324
|
+
"help.dm.command_start": "DM-Modus-Hinweise anzeigen",
|
|
325
|
+
"help.dm.hint": "Nutze Gruppen-Topic-Threads für Projekt-/Sitzungsarbeit.",
|
|
326
|
+
"status.dm.title": "DM-Statusübersicht",
|
|
327
|
+
"status.dm.hint": "Nutze Gruppen-Topic-Threads, um OpenCode-Sitzungen auszuführen.",
|
|
328
|
+
"group.general.prompts_disabled": "⚠️ Prompts sind im General-Thema deaktiviert. Verwende /new, um ein eigenes Sitzungs-Thema zu erstellen.",
|
|
329
|
+
"topic.unbound": "⚠️ Dieses Thema ist keiner Sitzung zugeordnet. Gehe zum General-Thema und führe /new aus.",
|
|
330
|
+
};
|