You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
User feedback after running the new commands: the reply messages for
/personality and /show_tools were hardcoded English (no translation
fallback for es/de/fr/ru/zh users), and /memory_remove + /memory_export
were registered handlers but didn't appear in the Telegram autocomplete
menu.
Fix:
1. New i18n keys in all six locales:
- cmd.description.memory_remove, cmd.description.memory_export
- personality.updated, personality.label, personality.empty_help,
personality.error
- show_tools.current_visible, show_tools.current_hidden,
show_tools.usage, show_tools.invalid_value, show_tools.now_visible,
show_tools.now_hidden, show_tools.error
Spanish, German, French, Russian and Chinese translations included.
The empty_help texts keep the example list locale-agnostic enough
that the Spanish-speaker default audience still gets useful prompts
even on other locales.
2. memory-commands.ts now imports `t()` from i18n and calls it for
every /personality and /show_tools reply. No more hardcoded English
in those handlers. The two commands also drop the inline literals
from the source so future tweaks live in one place per locale.
3. definitions.ts adds memory_remove and memory_export to BOT_COMMANDS
so they appear in Telegram's command autocomplete. They were
already wired up via bot.command() — only the menu listing was
missing.
Test suite still 942/942.
After this commit, on an existing install:
git pull
docker compose down
docker compose up -d --build
Then on first /help (or after Telegram refreshes the menu) the two
new entries appear, and /personality + /show_tools reply in the locale
selected via BOT_LOCALE.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
"cmd.description.memory_search": "In gespeicherten Fakten suchen",
30
+
"cmd.description.memory_remove": "Einen gespeicherten Fakt nach ID löschen",
31
+
"cmd.description.memory_export": "Speicher in Markdown-Dateien exportieren",
30
32
"cmd.description.help": "Hilfe",
31
33
32
34
"callback.unknown_command": "Unbekannter Befehl",
@@ -134,6 +136,23 @@ export const de: I18nDictionary = {
134
136
"tts.disabled": "🔇 Audioantworten global deaktiviert.",
135
137
"tts.failed": "⚠️ Audioreply konnte nicht erzeugt werden.",
136
138
139
+
"personality.updated":
140
+
"✅ Persönlichkeit aktualisiert. Öffne eine neue Sitzung (/new), damit die Änderung angewendet wird.",
141
+
"personality.label": "Persönlichkeit",
142
+
"personality.empty_help":
143
+
"Persönlichkeit ist leer.\n\nVerwende /personality <text>, um Verhaltensregeln festzulegen. Beispiele:\n /personality sprich mich immer mit \"Sir\" an. Formeller Ton, auf Deutsch.\n /personality knappe Antworten, maximal 3 Zeilen\n /personality antworte auf Englisch, außer ich wechsle die Sprache\n\nPersonality ist für das WIE der Assistent antworten soll. Speichere FAKTEN über dich mit /memory oder indem du dem Assistenten sagst, dass er sich etwas merken soll.",
144
+
"personality.error": "Persönlichkeit konnte nicht abgerufen werden.",
145
+
146
+
"show_tools.current_visible": "Tool-Nachrichten sind derzeit SICHTBAR.",
147
+
"show_tools.current_hidden": "Tool-Nachrichten sind derzeit AUSGEBLENDET.",
148
+
"show_tools.usage":
149
+
"Verwendung:\n /show_tools on — Tool-Aufrufe anzeigen (Standard)\n /show_tools off — verbergen, nur Antworten des Assistenten anzeigen",
150
+
"show_tools.invalid_value": "Ungültiger Wert. Verwende /show_tools on oder /show_tools off.",
151
+
"show_tools.now_visible": "✅ Tool-Nachrichten sind jetzt SICHTBAR.",
152
+
"show_tools.now_hidden":
153
+
"✅ Tool-Nachrichten sind jetzt AUSGEBLENDET. Nur Assistenten-Antworten erscheinen.",
154
+
"show_tools.error": "Tool-Sichtbarkeit konnte nicht aktualisiert werden.",
155
+
137
156
"projects.empty":
138
157
"📭 Keine Projekte gefunden.\n\nÖffne ein Verzeichnis in OpenCode und erstelle mindestens eine Sitzung, dann erscheint es hier.",
"tts.failed": "⚠️ Failed to generate audio reply.",
129
131
132
+
"personality.updated":
133
+
"✅ Personality updated. Open a new session (/new) for the change to apply.",
134
+
"personality.label": "Personality",
135
+
"personality.empty_help":
136
+
"Personality is empty.\n\nUse /personality <text> to set behaviour rules. Examples:\n /personality always address me as \"sir\". Formal tone, replies in English.\n /personality concise responses, max 3 lines\n /personality reply in English unless I explicitly switch language\n\nPersonality is for HOW you want the assistant to respond. Save FACTS about you with /memory or by telling the assistant to remember them.",
137
+
"personality.error": "Failed to access personality.",
138
+
139
+
"show_tools.current_visible": "Tool messages are currently VISIBLE.",
140
+
"show_tools.current_hidden": "Tool messages are currently HIDDEN.",
141
+
"show_tools.usage":
142
+
"Usage:\n /show_tools on — show tool calls (default)\n /show_tools off — hide them, only assistant responses appear",
143
+
"show_tools.invalid_value": "Invalid value. Use /show_tools on or /show_tools off.",
144
+
"show_tools.now_visible": "✅ Tool messages are now VISIBLE.",
145
+
"show_tools.now_hidden": "✅ Tool messages are now HIDDEN. Only assistant responses will appear.",
146
+
"show_tools.error": "Failed to update tool visibility setting.",
147
+
130
148
"projects.empty":
131
149
"📭 No projects found.\n\nOpen a directory in OpenCode and create at least one session, then it will appear here.",
"tts.disabled": "🔇 Respuestas de audio desactivadas globalmente.",
135
137
"tts.failed": "⚠️ No se pudo generar la respuesta de audio.",
136
138
139
+
"personality.updated":
140
+
"✅ Personalidad actualizada. Abre una sesión nueva (/new) para que el cambio se aplique.",
141
+
"personality.label": "Personalidad",
142
+
"personality.empty_help":
143
+
"Personalidad vacía.\n\nUsa /personality <texto> para definir reglas de comportamiento. Ejemplos:\n /personality dime siempre \"señor\". Tono formal, en español.\n /personality respuestas concisas, máximo 3 líneas\n /personality habla en inglés salvo que pregunte en otro idioma\n\nPersonality es para CÓMO quieres que responda el asistente. Guarda DATOS sobre ti con /memory o pidiéndole al asistente que los recuerde.",
144
+
"personality.error": "No se pudo acceder a la personalidad.",
145
+
146
+
"show_tools.current_visible": "Los mensajes de herramientas están actualmente VISIBLES.",
147
+
"show_tools.current_hidden": "Los mensajes de herramientas están actualmente OCULTOS.",
148
+
"show_tools.usage":
149
+
"Uso:\n /show_tools on — mostrar llamadas a herramientas (por defecto)\n /show_tools off — ocultarlas, solo aparece la respuesta del asistente",
150
+
"show_tools.invalid_value": "Valor inválido. Usa /show_tools on o /show_tools off.",
151
+
"show_tools.now_visible": "✅ Los mensajes de herramientas ahora son VISIBLES.",
152
+
"show_tools.now_hidden":
153
+
"✅ Los mensajes de herramientas ahora están OCULTOS. Solo aparecerán las respuestas del asistente.",
154
+
"show_tools.error": "No se pudo actualizar la visibilidad de las herramientas.",
155
+
137
156
"projects.empty":
138
157
"📭 No se encontraron proyectos.\n\nAbre un directorio en OpenCode y crea al menos una sesión; entonces aparecerá aquí.",
"tts.failed": "⚠️ Impossible de générer la réponse audio.",
137
139
140
+
"personality.updated":
141
+
"✅ Personnalité mise à jour. Ouvre une nouvelle session (/new) pour que le changement s'applique.",
142
+
"personality.label": "Personnalité",
143
+
"personality.empty_help":
144
+
"Personnalité vide.\n\nUtilise /personality <texte> pour définir des règles de comportement. Exemples :\n /personality appelle-moi toujours \"monsieur\". Ton formel, en français.\n /personality réponses concises, maximum 3 lignes\n /personality réponds en anglais sauf si je change de langue\n\nPersonality concerne COMMENT tu veux que l'assistant réponde. Enregistre des FAITS sur toi avec /memory ou en demandant à l'assistant de s'en souvenir.",
145
+
"personality.error": "Impossible d'accéder à la personnalité.",
146
+
147
+
"show_tools.current_visible": "Les messages d'outils sont actuellement VISIBLES.",
148
+
"show_tools.current_hidden": "Les messages d'outils sont actuellement MASQUÉS.",
149
+
"show_tools.usage":
150
+
"Utilisation :\n /show_tools on — afficher les appels d'outils (par défaut)\n /show_tools off — les masquer, seules les réponses de l'assistant apparaissent",
151
+
"show_tools.invalid_value": "Valeur invalide. Utilise /show_tools on ou /show_tools off.",
152
+
"show_tools.now_visible": "✅ Les messages d'outils sont maintenant VISIBLES.",
153
+
"show_tools.now_hidden":
154
+
"✅ Les messages d'outils sont maintenant MASQUÉS. Seules les réponses de l'assistant apparaîtront.",
155
+
"show_tools.error": "Impossible de mettre à jour la visibilité des outils.",
156
+
138
157
"projects.empty":
139
158
"📭 Aucun projet trouvé.\n\nOuvrez un répertoire dans OpenCode et créez au moins une session, il apparaîtra ensuite ici.",
"tts.failed": "⚠️ Не удалось создать аудиоответ.",
129
131
132
+
"personality.updated":
133
+
"✅ Личность обновлена. Открой новую сессию (/new), чтобы изменения применились.",
134
+
"personality.label": "Личность",
135
+
"personality.empty_help":
136
+
"Личность пуста.\n\nИспользуй /personality <текст>, чтобы задать правила поведения. Примеры:\n /personality всегда обращайся ко мне на «вы». Формальный тон, на русском.\n /personality краткие ответы, максимум 3 строки\n /personality отвечай на английском, пока я не переключу язык\n\nPersonality — это про КАК ассистент должен отвечать. Сохраняй ФАКТЫ о себе через /memory или просто скажи ассистенту запомнить.",
137
+
"personality.error": "Не удалось получить доступ к личности.",
138
+
139
+
"show_tools.current_visible": "Сообщения инструментов сейчас ВИДИМЫ.",
140
+
"show_tools.current_hidden": "Сообщения инструментов сейчас СКРЫТЫ.",
141
+
"show_tools.usage":
142
+
"Использование:\n /show_tools on — показывать вызовы инструментов (по умолчанию)\n /show_tools off — скрывать их, видны только ответы ассистента",
143
+
"show_tools.invalid_value": "Неверное значение. Используй /show_tools on или /show_tools off.",
144
+
"show_tools.now_visible": "✅ Сообщения инструментов теперь ВИДИМЫ.",
145
+
"show_tools.now_hidden":
146
+
"✅ Сообщения инструментов теперь СКРЫТЫ. Будут видны только ответы ассистента.",
147
+
"show_tools.error": "Не удалось обновить видимость инструментов.",
148
+
130
149
"projects.empty":
131
150
"📭 Проектов нет.\n\nОткройте директорию в OpenCode и создайте хотя бы одну сессию, после этого она появится здесь.",
0 commit comments