From e51bc36af79ab8895d4085b9af4dbcb192a8e034 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:25 -0400 Subject: [PATCH 001/104] New translations messages.pot (French) [ci skip] --- appeals/db/migrations/locales/fr-FR.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 appeals/db/migrations/locales/fr-FR.po diff --git a/appeals/db/migrations/locales/fr-FR.po b/appeals/db/migrations/locales/fr-FR.po new file mode 100644 index 000000000..88de66311 --- /dev/null +++ b/appeals/db/migrations/locales/fr-FR.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: French\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: fr\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/appeals/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 821\n" +"Language: fr_FR\n" + From 3defdd976b9ef6817977ccc0f18cfc08096905e6 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:27 -0400 Subject: [PATCH 002/104] New translations messages.pot (French) [ci skip] --- cowclicker/db/migrations/locales/fr-FR.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 cowclicker/db/migrations/locales/fr-FR.po diff --git a/cowclicker/db/migrations/locales/fr-FR.po b/cowclicker/db/migrations/locales/fr-FR.po new file mode 100644 index 000000000..8121e601b --- /dev/null +++ b/cowclicker/db/migrations/locales/fr-FR.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: French\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: fr\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/cowclicker/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 823\n" +"Language: fr_FR\n" + From 45898299230d3d22fc2f7e7dd122d7ff8a798250 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:28 -0400 Subject: [PATCH 003/104] New translations messages.pot (French) [ci skip] --- metrics/db/migrations/locales/fr-FR.po | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 metrics/db/migrations/locales/fr-FR.po diff --git a/metrics/db/migrations/locales/fr-FR.po b/metrics/db/migrations/locales/fr-FR.po new file mode 100644 index 000000000..d047e9db1 --- /dev/null +++ b/metrics/db/migrations/locales/fr-FR.po @@ -0,0 +1,34 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: French\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: fr\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/metrics/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 825\n" +"Language: fr_FR\n" + +#: metrics\db\migrations\metrics_2026_01_22t17_30_00_000000.py:22 +#, docstring +msgid "Migrate global_snapshot data to the three new global tables." +msgstr "" + +#: metrics\db\migrations\metrics_2026_01_22t17_30_00_000000.py:65 +#, docstring +msgid "Migrate guild_snapshot data to the two new guild tables." +msgstr "" + +#: metrics\db\migrations\metrics_2026_01_22t17_30_00_000000.py:92 +#, docstring +msgid "Drop the old snapshot tables after data migration." +msgstr "" + From eb8b55e748e94cdc18358620757ecbe262ddd139 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:29 -0400 Subject: [PATCH 004/104] New translations messages.pot (French) [ci skip] --- miner/db/migrations/locales/fr-FR.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 miner/db/migrations/locales/fr-FR.po diff --git a/miner/db/migrations/locales/fr-FR.po b/miner/db/migrations/locales/fr-FR.po new file mode 100644 index 000000000..71a6f03a7 --- /dev/null +++ b/miner/db/migrations/locales/fr-FR.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: French\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: fr\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/miner/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 827\n" +"Language: fr_FR\n" + From 22a55846bb212c6dae02246cf53388ca99e6538e Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:30 -0400 Subject: [PATCH 005/104] New translations messages.pot (French) [ci skip] --- referrals/db/migrations/locales/fr-FR.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 referrals/db/migrations/locales/fr-FR.po diff --git a/referrals/db/migrations/locales/fr-FR.po b/referrals/db/migrations/locales/fr-FR.po new file mode 100644 index 000000000..9f9bec45f --- /dev/null +++ b/referrals/db/migrations/locales/fr-FR.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: French\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: fr\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/referrals/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 829\n" +"Language: fr_FR\n" + From 00015b2bd25510cc31e0abfc9a823c6af8730dca Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:32 -0400 Subject: [PATCH 006/104] New translations messages.pot (Spanish) [ci skip] --- appeals/db/migrations/locales/es-ES.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 appeals/db/migrations/locales/es-ES.po diff --git a/appeals/db/migrations/locales/es-ES.po b/appeals/db/migrations/locales/es-ES.po new file mode 100644 index 000000000..1ee59b649 --- /dev/null +++ b/appeals/db/migrations/locales/es-ES.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: Spanish\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: es-ES\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/appeals/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 821\n" +"Language: es_ES\n" + From 9c0329abdafb0e2c4a0518651c45419f93d45887 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:33 -0400 Subject: [PATCH 007/104] New translations messages.pot (Spanish) [ci skip] --- cowclicker/db/migrations/locales/es-ES.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 cowclicker/db/migrations/locales/es-ES.po diff --git a/cowclicker/db/migrations/locales/es-ES.po b/cowclicker/db/migrations/locales/es-ES.po new file mode 100644 index 000000000..88e1dc174 --- /dev/null +++ b/cowclicker/db/migrations/locales/es-ES.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: Spanish\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: es-ES\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/cowclicker/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 823\n" +"Language: es_ES\n" + From 7fa8d4d83c4adc9bea7414154d85a4a6a7143233 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:34 -0400 Subject: [PATCH 008/104] New translations messages.pot (Spanish) [ci skip] --- metrics/db/migrations/locales/es-ES.po | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 metrics/db/migrations/locales/es-ES.po diff --git a/metrics/db/migrations/locales/es-ES.po b/metrics/db/migrations/locales/es-ES.po new file mode 100644 index 000000000..6d3a60488 --- /dev/null +++ b/metrics/db/migrations/locales/es-ES.po @@ -0,0 +1,34 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: Spanish\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: es-ES\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/metrics/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 825\n" +"Language: es_ES\n" + +#: metrics\db\migrations\metrics_2026_01_22t17_30_00_000000.py:22 +#, docstring +msgid "Migrate global_snapshot data to the three new global tables." +msgstr "" + +#: metrics\db\migrations\metrics_2026_01_22t17_30_00_000000.py:65 +#, docstring +msgid "Migrate guild_snapshot data to the two new guild tables." +msgstr "" + +#: metrics\db\migrations\metrics_2026_01_22t17_30_00_000000.py:92 +#, docstring +msgid "Drop the old snapshot tables after data migration." +msgstr "" + From 853b378b7eae340f449d55fdcc8474aa4f85d95e Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:35 -0400 Subject: [PATCH 009/104] New translations messages.pot (Spanish) [ci skip] --- miner/db/migrations/locales/es-ES.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 miner/db/migrations/locales/es-ES.po diff --git a/miner/db/migrations/locales/es-ES.po b/miner/db/migrations/locales/es-ES.po new file mode 100644 index 000000000..8de16f447 --- /dev/null +++ b/miner/db/migrations/locales/es-ES.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: Spanish\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: es-ES\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/miner/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 827\n" +"Language: es_ES\n" + From 1468f632273721b5663d6a611be606090cffe18e Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:36 -0400 Subject: [PATCH 010/104] New translations messages.pot (Spanish) [ci skip] --- referrals/db/migrations/locales/es-ES.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 referrals/db/migrations/locales/es-ES.po diff --git a/referrals/db/migrations/locales/es-ES.po b/referrals/db/migrations/locales/es-ES.po new file mode 100644 index 000000000..3d1e6dac1 --- /dev/null +++ b/referrals/db/migrations/locales/es-ES.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: Spanish\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: es-ES\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/referrals/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 829\n" +"Language: es_ES\n" + From dced8ff0d94da3f1fd4a672613a3b47dce1813ab Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:37 -0400 Subject: [PATCH 011/104] New translations messages.pot (German) [ci skip] --- appeals/db/migrations/locales/de-DE.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 appeals/db/migrations/locales/de-DE.po diff --git a/appeals/db/migrations/locales/de-DE.po b/appeals/db/migrations/locales/de-DE.po new file mode 100644 index 000000000..07b5bbd81 --- /dev/null +++ b/appeals/db/migrations/locales/de-DE.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: German\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: de\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/appeals/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 821\n" +"Language: de_DE\n" + From 119ed8fa9edcc874a68e4c71a1813ea4a7cc0a88 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:38 -0400 Subject: [PATCH 012/104] New translations messages.pot (German) [ci skip] --- cowclicker/db/migrations/locales/de-DE.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 cowclicker/db/migrations/locales/de-DE.po diff --git a/cowclicker/db/migrations/locales/de-DE.po b/cowclicker/db/migrations/locales/de-DE.po new file mode 100644 index 000000000..09d57fa20 --- /dev/null +++ b/cowclicker/db/migrations/locales/de-DE.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: German\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: de\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/cowclicker/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 823\n" +"Language: de_DE\n" + From ef7afb9d77525f3eb348d7db2939af32858c86f4 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:40 -0400 Subject: [PATCH 013/104] New translations messages.pot (German) [ci skip] --- metrics/db/migrations/locales/de-DE.po | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 metrics/db/migrations/locales/de-DE.po diff --git a/metrics/db/migrations/locales/de-DE.po b/metrics/db/migrations/locales/de-DE.po new file mode 100644 index 000000000..aac8b30a4 --- /dev/null +++ b/metrics/db/migrations/locales/de-DE.po @@ -0,0 +1,34 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: German\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: de\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/metrics/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 825\n" +"Language: de_DE\n" + +#: metrics\db\migrations\metrics_2026_01_22t17_30_00_000000.py:22 +#, docstring +msgid "Migrate global_snapshot data to the three new global tables." +msgstr "" + +#: metrics\db\migrations\metrics_2026_01_22t17_30_00_000000.py:65 +#, docstring +msgid "Migrate guild_snapshot data to the two new guild tables." +msgstr "" + +#: metrics\db\migrations\metrics_2026_01_22t17_30_00_000000.py:92 +#, docstring +msgid "Drop the old snapshot tables after data migration." +msgstr "" + From 27a5e0e89ff630fe0be21d1b499f12b26798e664 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:41 -0400 Subject: [PATCH 014/104] New translations messages.pot (German) [ci skip] --- miner/db/migrations/locales/de-DE.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 miner/db/migrations/locales/de-DE.po diff --git a/miner/db/migrations/locales/de-DE.po b/miner/db/migrations/locales/de-DE.po new file mode 100644 index 000000000..31d650c9a --- /dev/null +++ b/miner/db/migrations/locales/de-DE.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: German\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: de\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/miner/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 827\n" +"Language: de_DE\n" + From e150e184a12085dbb853c289b981eb3e0e5b3cbd Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:42 -0400 Subject: [PATCH 015/104] New translations messages.pot (German) [ci skip] --- referrals/db/migrations/locales/de-DE.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 referrals/db/migrations/locales/de-DE.po diff --git a/referrals/db/migrations/locales/de-DE.po b/referrals/db/migrations/locales/de-DE.po new file mode 100644 index 000000000..14a87feac --- /dev/null +++ b/referrals/db/migrations/locales/de-DE.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: German\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: de\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/referrals/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 829\n" +"Language: de_DE\n" + From 3fa3223b016df3e63277a781ae23fdfaaa8ae3a4 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:43 -0400 Subject: [PATCH 016/104] New translations messages.pot (Korean) [ci skip] --- appeals/db/migrations/locales/ko-KR.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 appeals/db/migrations/locales/ko-KR.po diff --git a/appeals/db/migrations/locales/ko-KR.po b/appeals/db/migrations/locales/ko-KR.po new file mode 100644 index 000000000..607f975f4 --- /dev/null +++ b/appeals/db/migrations/locales/ko-KR.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: Korean\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: ko\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/appeals/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 821\n" +"Language: ko_KR\n" + From 66bceb66848e6c223853067273a7d248087b0486 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:44 -0400 Subject: [PATCH 017/104] New translations messages.pot (Korean) [ci skip] --- cowclicker/db/migrations/locales/ko-KR.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 cowclicker/db/migrations/locales/ko-KR.po diff --git a/cowclicker/db/migrations/locales/ko-KR.po b/cowclicker/db/migrations/locales/ko-KR.po new file mode 100644 index 000000000..3732704a2 --- /dev/null +++ b/cowclicker/db/migrations/locales/ko-KR.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: Korean\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: ko\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/cowclicker/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 823\n" +"Language: ko_KR\n" + From 0c6938b1dc532f829a063b5bf2a9e2c9bd5d1d27 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:45 -0400 Subject: [PATCH 018/104] New translations messages.pot (Korean) [ci skip] --- metrics/db/migrations/locales/ko-KR.po | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 metrics/db/migrations/locales/ko-KR.po diff --git a/metrics/db/migrations/locales/ko-KR.po b/metrics/db/migrations/locales/ko-KR.po new file mode 100644 index 000000000..baae6f90c --- /dev/null +++ b/metrics/db/migrations/locales/ko-KR.po @@ -0,0 +1,34 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: Korean\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: ko\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/metrics/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 825\n" +"Language: ko_KR\n" + +#: metrics\db\migrations\metrics_2026_01_22t17_30_00_000000.py:22 +#, docstring +msgid "Migrate global_snapshot data to the three new global tables." +msgstr "" + +#: metrics\db\migrations\metrics_2026_01_22t17_30_00_000000.py:65 +#, docstring +msgid "Migrate guild_snapshot data to the two new guild tables." +msgstr "" + +#: metrics\db\migrations\metrics_2026_01_22t17_30_00_000000.py:92 +#, docstring +msgid "Drop the old snapshot tables after data migration." +msgstr "" + From cd146607513ac50fb8cb0dee63a0b1f7fcfdd183 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:46 -0400 Subject: [PATCH 019/104] New translations messages.pot (Korean) [ci skip] --- miner/db/migrations/locales/ko-KR.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 miner/db/migrations/locales/ko-KR.po diff --git a/miner/db/migrations/locales/ko-KR.po b/miner/db/migrations/locales/ko-KR.po new file mode 100644 index 000000000..5378895a6 --- /dev/null +++ b/miner/db/migrations/locales/ko-KR.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: Korean\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: ko\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/miner/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 827\n" +"Language: ko_KR\n" + From 3342f4d473560cc3833cbbedf49a27bb9970bb3c Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:48 -0400 Subject: [PATCH 020/104] New translations messages.pot (Korean) [ci skip] --- referrals/db/migrations/locales/ko-KR.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 referrals/db/migrations/locales/ko-KR.po diff --git a/referrals/db/migrations/locales/ko-KR.po b/referrals/db/migrations/locales/ko-KR.po new file mode 100644 index 000000000..95fc70c58 --- /dev/null +++ b/referrals/db/migrations/locales/ko-KR.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: Korean\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: ko\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/referrals/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 829\n" +"Language: ko_KR\n" + From 1a53fb089472658770d9556bde4ba580686f990e Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:49 -0400 Subject: [PATCH 021/104] New translations messages.pot (Portuguese) [ci skip] --- appeals/db/migrations/locales/pt-PT.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 appeals/db/migrations/locales/pt-PT.po diff --git a/appeals/db/migrations/locales/pt-PT.po b/appeals/db/migrations/locales/pt-PT.po new file mode 100644 index 000000000..4ff4ba118 --- /dev/null +++ b/appeals/db/migrations/locales/pt-PT.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: Portuguese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: pt-PT\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/appeals/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 821\n" +"Language: pt_PT\n" + From 0aaa52a747028f9e3b67eefb529ad24cdf20b745 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:50 -0400 Subject: [PATCH 022/104] New translations messages.pot (Portuguese) [ci skip] --- cowclicker/db/migrations/locales/pt-PT.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 cowclicker/db/migrations/locales/pt-PT.po diff --git a/cowclicker/db/migrations/locales/pt-PT.po b/cowclicker/db/migrations/locales/pt-PT.po new file mode 100644 index 000000000..70a138b6c --- /dev/null +++ b/cowclicker/db/migrations/locales/pt-PT.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: Portuguese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: pt-PT\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/cowclicker/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 823\n" +"Language: pt_PT\n" + From f2a799eef85768768b07ef704d79dcf821859af5 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:51 -0400 Subject: [PATCH 023/104] New translations messages.pot (Portuguese) [ci skip] --- metrics/db/migrations/locales/pt-PT.po | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 metrics/db/migrations/locales/pt-PT.po diff --git a/metrics/db/migrations/locales/pt-PT.po b/metrics/db/migrations/locales/pt-PT.po new file mode 100644 index 000000000..8b010e284 --- /dev/null +++ b/metrics/db/migrations/locales/pt-PT.po @@ -0,0 +1,34 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: Portuguese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: pt-PT\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/metrics/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 825\n" +"Language: pt_PT\n" + +#: metrics\db\migrations\metrics_2026_01_22t17_30_00_000000.py:22 +#, docstring +msgid "Migrate global_snapshot data to the three new global tables." +msgstr "" + +#: metrics\db\migrations\metrics_2026_01_22t17_30_00_000000.py:65 +#, docstring +msgid "Migrate guild_snapshot data to the two new guild tables." +msgstr "" + +#: metrics\db\migrations\metrics_2026_01_22t17_30_00_000000.py:92 +#, docstring +msgid "Drop the old snapshot tables after data migration." +msgstr "" + From 497b16365c1fc725c751a7c18c39864e58455800 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:52 -0400 Subject: [PATCH 024/104] New translations messages.pot (Portuguese) [ci skip] --- miner/db/migrations/locales/pt-PT.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 miner/db/migrations/locales/pt-PT.po diff --git a/miner/db/migrations/locales/pt-PT.po b/miner/db/migrations/locales/pt-PT.po new file mode 100644 index 000000000..b402d2263 --- /dev/null +++ b/miner/db/migrations/locales/pt-PT.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: Portuguese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: pt-PT\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/miner/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 827\n" +"Language: pt_PT\n" + From da37a1d3215aeaab750d35c30504d4322b15eb63 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:53 -0400 Subject: [PATCH 025/104] New translations messages.pot (Portuguese) [ci skip] --- referrals/db/migrations/locales/pt-PT.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 referrals/db/migrations/locales/pt-PT.po diff --git a/referrals/db/migrations/locales/pt-PT.po b/referrals/db/migrations/locales/pt-PT.po new file mode 100644 index 000000000..42d77f95e --- /dev/null +++ b/referrals/db/migrations/locales/pt-PT.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: Portuguese\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: pt-PT\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/referrals/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 829\n" +"Language: pt_PT\n" + From de70a910486003564edab1eb1ec4bbffc0cf5909 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:55 -0400 Subject: [PATCH 026/104] New translations messages.pot (Russian) [ci skip] --- appeals/db/migrations/locales/ru-RU.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 appeals/db/migrations/locales/ru-RU.po diff --git a/appeals/db/migrations/locales/ru-RU.po b/appeals/db/migrations/locales/ru-RU.po new file mode 100644 index 000000000..70b5a6d60 --- /dev/null +++ b/appeals/db/migrations/locales/ru-RU.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: Russian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: ru\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/appeals/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 821\n" +"Language: ru_RU\n" + From e1b005b8744eba35ed8606055ed72dec8dae9ba5 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:56 -0400 Subject: [PATCH 027/104] New translations messages.pot (Russian) [ci skip] --- cowclicker/db/migrations/locales/ru-RU.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 cowclicker/db/migrations/locales/ru-RU.po diff --git a/cowclicker/db/migrations/locales/ru-RU.po b/cowclicker/db/migrations/locales/ru-RU.po new file mode 100644 index 000000000..aa8d675fe --- /dev/null +++ b/cowclicker/db/migrations/locales/ru-RU.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: Russian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: ru\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/cowclicker/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 823\n" +"Language: ru_RU\n" + From 6d332d38e050b4be4482e870e4c722ca65482860 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:57 -0400 Subject: [PATCH 028/104] New translations messages.pot (Russian) [ci skip] --- metrics/db/migrations/locales/ru-RU.po | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 metrics/db/migrations/locales/ru-RU.po diff --git a/metrics/db/migrations/locales/ru-RU.po b/metrics/db/migrations/locales/ru-RU.po new file mode 100644 index 000000000..4bda4a744 --- /dev/null +++ b/metrics/db/migrations/locales/ru-RU.po @@ -0,0 +1,34 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: Russian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: ru\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/metrics/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 825\n" +"Language: ru_RU\n" + +#: metrics\db\migrations\metrics_2026_01_22t17_30_00_000000.py:22 +#, docstring +msgid "Migrate global_snapshot data to the three new global tables." +msgstr "" + +#: metrics\db\migrations\metrics_2026_01_22t17_30_00_000000.py:65 +#, docstring +msgid "Migrate guild_snapshot data to the two new guild tables." +msgstr "" + +#: metrics\db\migrations\metrics_2026_01_22t17_30_00_000000.py:92 +#, docstring +msgid "Drop the old snapshot tables after data migration." +msgstr "" + From 44c77897da730c740cdfeea82640100eadcee74d Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:58 -0400 Subject: [PATCH 029/104] New translations messages.pot (Russian) [ci skip] --- miner/db/migrations/locales/ru-RU.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 miner/db/migrations/locales/ru-RU.po diff --git a/miner/db/migrations/locales/ru-RU.po b/miner/db/migrations/locales/ru-RU.po new file mode 100644 index 000000000..910edd768 --- /dev/null +++ b/miner/db/migrations/locales/ru-RU.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: Russian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: ru\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/miner/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 827\n" +"Language: ru_RU\n" + From 6b2de2fafcef6c4196537677ee83a3e50503d9f7 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:06:59 -0400 Subject: [PATCH 030/104] New translations messages.pot (Russian) [ci skip] --- referrals/db/migrations/locales/ru-RU.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 referrals/db/migrations/locales/ru-RU.po diff --git a/referrals/db/migrations/locales/ru-RU.po b/referrals/db/migrations/locales/ru-RU.po new file mode 100644 index 000000000..037f42956 --- /dev/null +++ b/referrals/db/migrations/locales/ru-RU.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:06\n" +"Last-Translator: \n" +"Language-Team: Russian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: ru\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/referrals/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 829\n" +"Language: ru_RU\n" + From 793e2e087c9784edeeab839233f6781fefaeab6b Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:07:00 -0400 Subject: [PATCH 031/104] New translations messages.pot (Turkish) [ci skip] --- appeals/db/migrations/locales/tr-TR.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 appeals/db/migrations/locales/tr-TR.po diff --git a/appeals/db/migrations/locales/tr-TR.po b/appeals/db/migrations/locales/tr-TR.po new file mode 100644 index 000000000..88fd8b83c --- /dev/null +++ b/appeals/db/migrations/locales/tr-TR.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:07\n" +"Last-Translator: \n" +"Language-Team: Turkish\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/appeals/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 821\n" +"Language: tr_TR\n" + From 42c269c533d65be97523718959cdf346a8c973b2 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:07:01 -0400 Subject: [PATCH 032/104] New translations messages.pot (Turkish) [ci skip] --- cowclicker/db/migrations/locales/tr-TR.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 cowclicker/db/migrations/locales/tr-TR.po diff --git a/cowclicker/db/migrations/locales/tr-TR.po b/cowclicker/db/migrations/locales/tr-TR.po new file mode 100644 index 000000000..641ff9a4a --- /dev/null +++ b/cowclicker/db/migrations/locales/tr-TR.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:07\n" +"Last-Translator: \n" +"Language-Team: Turkish\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/cowclicker/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 823\n" +"Language: tr_TR\n" + From 0a1ddc32c91b496a660ebe005a9abee55e0d9ea2 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:07:03 -0400 Subject: [PATCH 033/104] New translations messages.pot (Turkish) [ci skip] --- metrics/db/migrations/locales/tr-TR.po | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 metrics/db/migrations/locales/tr-TR.po diff --git a/metrics/db/migrations/locales/tr-TR.po b/metrics/db/migrations/locales/tr-TR.po new file mode 100644 index 000000000..c093e3aaa --- /dev/null +++ b/metrics/db/migrations/locales/tr-TR.po @@ -0,0 +1,34 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:07\n" +"Last-Translator: \n" +"Language-Team: Turkish\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/metrics/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 825\n" +"Language: tr_TR\n" + +#: metrics\db\migrations\metrics_2026_01_22t17_30_00_000000.py:22 +#, docstring +msgid "Migrate global_snapshot data to the three new global tables." +msgstr "" + +#: metrics\db\migrations\metrics_2026_01_22t17_30_00_000000.py:65 +#, docstring +msgid "Migrate guild_snapshot data to the two new guild tables." +msgstr "" + +#: metrics\db\migrations\metrics_2026_01_22t17_30_00_000000.py:92 +#, docstring +msgid "Drop the old snapshot tables after data migration." +msgstr "" + From 90d3491f662466f9540348a08f21f83ff95b2595 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:07:04 -0400 Subject: [PATCH 034/104] New translations messages.pot (Turkish) [ci skip] --- miner/db/migrations/locales/tr-TR.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 miner/db/migrations/locales/tr-TR.po diff --git a/miner/db/migrations/locales/tr-TR.po b/miner/db/migrations/locales/tr-TR.po new file mode 100644 index 000000000..41f88f31e --- /dev/null +++ b/miner/db/migrations/locales/tr-TR.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:07\n" +"Last-Translator: \n" +"Language-Team: Turkish\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/miner/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 827\n" +"Language: tr_TR\n" + From 84bc725e4b17211099967d7dbd2fe006d21c5668 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:07:05 -0400 Subject: [PATCH 035/104] New translations messages.pot (Turkish) [ci skip] --- referrals/db/migrations/locales/tr-TR.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 referrals/db/migrations/locales/tr-TR.po diff --git a/referrals/db/migrations/locales/tr-TR.po b/referrals/db/migrations/locales/tr-TR.po new file mode 100644 index 000000000..0eef0bf37 --- /dev/null +++ b/referrals/db/migrations/locales/tr-TR.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:07\n" +"Last-Translator: \n" +"Language-Team: Turkish\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/referrals/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 829\n" +"Language: tr_TR\n" + From 7ceef094531c13d1b09f8be2598a9f2d9904571f Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:07:06 -0400 Subject: [PATCH 036/104] New translations messages.pot (Croatian) [ci skip] --- appeals/db/migrations/locales/hr-HR.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 appeals/db/migrations/locales/hr-HR.po diff --git a/appeals/db/migrations/locales/hr-HR.po b/appeals/db/migrations/locales/hr-HR.po new file mode 100644 index 000000000..381b5f21d --- /dev/null +++ b/appeals/db/migrations/locales/hr-HR.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:07\n" +"Last-Translator: \n" +"Language-Team: Croatian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: hr\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/appeals/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 821\n" +"Language: hr_HR\n" + From 853baf2858a3028958f7eaf1e65b861ec985d6ff Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:07:07 -0400 Subject: [PATCH 037/104] New translations messages.pot (Croatian) [ci skip] --- cowclicker/db/migrations/locales/hr-HR.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 cowclicker/db/migrations/locales/hr-HR.po diff --git a/cowclicker/db/migrations/locales/hr-HR.po b/cowclicker/db/migrations/locales/hr-HR.po new file mode 100644 index 000000000..5d47f6acc --- /dev/null +++ b/cowclicker/db/migrations/locales/hr-HR.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:07\n" +"Last-Translator: \n" +"Language-Team: Croatian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: hr\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/cowclicker/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 823\n" +"Language: hr_HR\n" + From 6806309fed8be831a5e7be89a3df6e32e2d157df Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:07:08 -0400 Subject: [PATCH 038/104] New translations messages.pot (Croatian) [ci skip] --- metrics/db/migrations/locales/hr-HR.po | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 metrics/db/migrations/locales/hr-HR.po diff --git a/metrics/db/migrations/locales/hr-HR.po b/metrics/db/migrations/locales/hr-HR.po new file mode 100644 index 000000000..6c9feaa6e --- /dev/null +++ b/metrics/db/migrations/locales/hr-HR.po @@ -0,0 +1,34 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:07\n" +"Last-Translator: \n" +"Language-Team: Croatian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: hr\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/metrics/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 825\n" +"Language: hr_HR\n" + +#: metrics\db\migrations\metrics_2026_01_22t17_30_00_000000.py:22 +#, docstring +msgid "Migrate global_snapshot data to the three new global tables." +msgstr "" + +#: metrics\db\migrations\metrics_2026_01_22t17_30_00_000000.py:65 +#, docstring +msgid "Migrate guild_snapshot data to the two new guild tables." +msgstr "" + +#: metrics\db\migrations\metrics_2026_01_22t17_30_00_000000.py:92 +#, docstring +msgid "Drop the old snapshot tables after data migration." +msgstr "" + From cf826d9925d880c210b5b2dfa5364ac27a477b2b Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:07:09 -0400 Subject: [PATCH 039/104] New translations messages.pot (Croatian) [ci skip] --- miner/db/migrations/locales/hr-HR.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 miner/db/migrations/locales/hr-HR.po diff --git a/miner/db/migrations/locales/hr-HR.po b/miner/db/migrations/locales/hr-HR.po new file mode 100644 index 000000000..5ac48efac --- /dev/null +++ b/miner/db/migrations/locales/hr-HR.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:07\n" +"Last-Translator: \n" +"Language-Team: Croatian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: hr\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/miner/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 827\n" +"Language: hr_HR\n" + From 5cde49fdd1c53a496b3467171bd51364a735896a Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Sun, 10 May 2026 22:07:11 -0400 Subject: [PATCH 040/104] New translations messages.pot (Croatian) [ci skip] --- referrals/db/migrations/locales/hr-HR.po | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 referrals/db/migrations/locales/hr-HR.po diff --git a/referrals/db/migrations/locales/hr-HR.po b/referrals/db/migrations/locales/hr-HR.po new file mode 100644 index 000000000..58fd2395a --- /dev/null +++ b/referrals/db/migrations/locales/hr-HR.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: vrt-cogs\n" +"POT-Creation-Date: 2026-05-06 22:31-0400\n" +"PO-Revision-Date: 2026-05-11 02:07\n" +"Last-Translator: \n" +"Language-Team: Croatian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: redgettext 3.4.2\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Crowdin-Project: vrt-cogs\n" +"X-Crowdin-Project-ID: 550681\n" +"X-Crowdin-Language: hr\n" +"X-Crowdin-File: /[vertyco.vrt-cogs] main/referrals/db/migrations/locales/messages.pot\n" +"X-Crowdin-File-ID: 829\n" +"Language: hr_HR\n" + From b9cb18f4fce3b247092e24ee8b3f05d928cb1ddf Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Tue, 19 May 2026 21:28:02 -0400 Subject: [PATCH 041/104] New translations messages.pot (French) [ci skip] --- assistant/commands/locales/fr-FR.po | 32 +---------------------------- 1 file changed, 1 insertion(+), 31 deletions(-) diff --git a/assistant/commands/locales/fr-FR.po b/assistant/commands/locales/fr-FR.po index 8885be5b8..b7691cf6c 100644 --- a/assistant/commands/locales/fr-FR.po +++ b/assistant/commands/locales/fr-FR.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" "POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-07 02:48\n" +"PO-Revision-Date: 2026-05-20 01:28\n" "Last-Translator: \n" "Language-Team: French\n" "MIME-Version: 1.0\n" @@ -179,10 +179,6 @@ msgstr "" msgid "`Collaborative Mode: `{}\n" msgstr "" -#: assistant\commands\admin.py:261 -msgid "`Coalesce Delay: `{}s\n" -msgstr "" - #: assistant\commands\admin.py:262 msgid "`Max Retention: `{}\n" msgstr "`Rétention maximale: `{}\n" @@ -1273,32 +1269,6 @@ msgstr "" msgid "Collaborative conversations are now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1531 -#, docstring -msgid "\n" -" Set the message coalesce delay in seconds\n\n" -" When a user sends multiple messages in quick succession, the bot will wait this many seconds\n" -" for follow-up messages before responding. All messages within the window are combined into a\n" -" single request. If follow-up messages arrive while the bot is already processing, the current\n" -" response is discarded and the messages are combined for a fresh request.\n\n" -" This prevents the bot from responding to half-finished thoughts when a user accidentally hits\n" -" send too early.\n\n" -" Set to 0 to disable (default). Recommended: 1.5\n" -" " -msgstr "" - -#: assistant\commands\admin.py:1545 -msgid "Delay must be between 0 and 10 seconds" -msgstr "" - -#: assistant\commands\admin.py:1549 -msgid "Message coalescing is now **Disabled**" -msgstr "" - -#: assistant\commands\admin.py:1551 -msgid "Messages will be coalesced with a **{}s** delay" -msgstr "" - #: assistant\commands\admin.py:1556 #, docstring msgid "\n" From 1696dbe1982af3cec5fcf5beda84b0baf1ecae2c Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Tue, 19 May 2026 21:28:03 -0400 Subject: [PATCH 042/104] New translations messages.pot (Spanish) [ci skip] --- assistant/commands/locales/es-ES.po | 32 +---------------------------- 1 file changed, 1 insertion(+), 31 deletions(-) diff --git a/assistant/commands/locales/es-ES.po b/assistant/commands/locales/es-ES.po index c3e539937..a77fdd6ed 100644 --- a/assistant/commands/locales/es-ES.po +++ b/assistant/commands/locales/es-ES.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" "POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-07 02:51\n" +"PO-Revision-Date: 2026-05-20 01:28\n" "Last-Translator: \n" "Language-Team: Spanish\n" "MIME-Version: 1.0\n" @@ -181,10 +181,6 @@ msgstr "`Responder a Menciones: `{}\n" msgid "`Collaborative Mode: `{}\n" msgstr "`Modo Colaborativo: `{}\n" -#: assistant\commands\admin.py:261 -msgid "`Coalesce Delay: `{}s\n" -msgstr "" - #: assistant\commands\admin.py:262 msgid "`Max Retention: `{}\n" msgstr "`Máxima retención: `{}\n" @@ -1284,32 +1280,6 @@ msgstr "Las conversaciones colaborativas están ahora **Deshabilitadas**" msgid "Collaborative conversations are now **Enabled**" msgstr "Las conversaciones colaborativas están ahora **Habilitadas**" -#: assistant\commands\admin.py:1531 -#, docstring -msgid "\n" -" Set the message coalesce delay in seconds\n\n" -" When a user sends multiple messages in quick succession, the bot will wait this many seconds\n" -" for follow-up messages before responding. All messages within the window are combined into a\n" -" single request. If follow-up messages arrive while the bot is already processing, the current\n" -" response is discarded and the messages are combined for a fresh request.\n\n" -" This prevents the bot from responding to half-finished thoughts when a user accidentally hits\n" -" send too early.\n\n" -" Set to 0 to disable (default). Recommended: 1.5\n" -" " -msgstr "" - -#: assistant\commands\admin.py:1545 -msgid "Delay must be between 0 and 10 seconds" -msgstr "" - -#: assistant\commands\admin.py:1549 -msgid "Message coalescing is now **Disabled**" -msgstr "" - -#: assistant\commands\admin.py:1551 -msgid "Messages will be coalesced with a **{}s** delay" -msgstr "" - #: assistant\commands\admin.py:1556 #, docstring msgid "\n" From 5674bdb9c915ecbbb14bf4625fcdd53a7e9992a3 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Tue, 19 May 2026 21:28:05 -0400 Subject: [PATCH 043/104] New translations messages.pot (German) [ci skip] --- assistant/commands/locales/de-DE.po | 32 +---------------------------- 1 file changed, 1 insertion(+), 31 deletions(-) diff --git a/assistant/commands/locales/de-DE.po b/assistant/commands/locales/de-DE.po index f9b6797e3..2e6f92814 100644 --- a/assistant/commands/locales/de-DE.po +++ b/assistant/commands/locales/de-DE.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" "POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-07 02:53\n" +"PO-Revision-Date: 2026-05-20 01:28\n" "Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" @@ -178,10 +178,6 @@ msgstr "" msgid "`Collaborative Mode: `{}\n" msgstr "" -#: assistant\commands\admin.py:261 -msgid "`Coalesce Delay: `{}s\n" -msgstr "" - #: assistant\commands\admin.py:262 msgid "`Max Retention: `{}\n" msgstr "`Maximale Aufbewahrung: `{}\n" @@ -1273,32 +1269,6 @@ msgstr "" msgid "Collaborative conversations are now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1531 -#, docstring -msgid "\n" -" Set the message coalesce delay in seconds\n\n" -" When a user sends multiple messages in quick succession, the bot will wait this many seconds\n" -" for follow-up messages before responding. All messages within the window are combined into a\n" -" single request. If follow-up messages arrive while the bot is already processing, the current\n" -" response is discarded and the messages are combined for a fresh request.\n\n" -" This prevents the bot from responding to half-finished thoughts when a user accidentally hits\n" -" send too early.\n\n" -" Set to 0 to disable (default). Recommended: 1.5\n" -" " -msgstr "" - -#: assistant\commands\admin.py:1545 -msgid "Delay must be between 0 and 10 seconds" -msgstr "" - -#: assistant\commands\admin.py:1549 -msgid "Message coalescing is now **Disabled**" -msgstr "" - -#: assistant\commands\admin.py:1551 -msgid "Messages will be coalesced with a **{}s** delay" -msgstr "" - #: assistant\commands\admin.py:1556 #, docstring msgid "\n" From aa91d8de45000888e07d0514d9641595453e4bf4 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Tue, 19 May 2026 21:28:06 -0400 Subject: [PATCH 044/104] New translations messages.pot (Korean) [ci skip] --- assistant/commands/locales/ko-KR.po | 32 +---------------------------- 1 file changed, 1 insertion(+), 31 deletions(-) diff --git a/assistant/commands/locales/ko-KR.po b/assistant/commands/locales/ko-KR.po index 0d9e87773..352231cd8 100644 --- a/assistant/commands/locales/ko-KR.po +++ b/assistant/commands/locales/ko-KR.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" "POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-07 02:55\n" +"PO-Revision-Date: 2026-05-20 01:28\n" "Last-Translator: \n" "Language-Team: Korean\n" "MIME-Version: 1.0\n" @@ -177,10 +177,6 @@ msgstr "" msgid "`Collaborative Mode: `{}\n" msgstr "" -#: assistant\commands\admin.py:261 -msgid "`Coalesce Delay: `{}s\n" -msgstr "" - #: assistant\commands\admin.py:262 msgid "`Max Retention: `{}\n" msgstr "`최대 보존 기간: `{}\n" @@ -1272,32 +1268,6 @@ msgstr "" msgid "Collaborative conversations are now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1531 -#, docstring -msgid "\n" -" Set the message coalesce delay in seconds\n\n" -" When a user sends multiple messages in quick succession, the bot will wait this many seconds\n" -" for follow-up messages before responding. All messages within the window are combined into a\n" -" single request. If follow-up messages arrive while the bot is already processing, the current\n" -" response is discarded and the messages are combined for a fresh request.\n\n" -" This prevents the bot from responding to half-finished thoughts when a user accidentally hits\n" -" send too early.\n\n" -" Set to 0 to disable (default). Recommended: 1.5\n" -" " -msgstr "" - -#: assistant\commands\admin.py:1545 -msgid "Delay must be between 0 and 10 seconds" -msgstr "" - -#: assistant\commands\admin.py:1549 -msgid "Message coalescing is now **Disabled**" -msgstr "" - -#: assistant\commands\admin.py:1551 -msgid "Messages will be coalesced with a **{}s** delay" -msgstr "" - #: assistant\commands\admin.py:1556 #, docstring msgid "\n" From ab4bcdd686dd2cbaa15772869d46c5ec4ebe81f5 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Tue, 19 May 2026 21:28:08 -0400 Subject: [PATCH 045/104] New translations messages.pot (Portuguese) [ci skip] --- assistant/commands/locales/pt-PT.po | 32 +---------------------------- 1 file changed, 1 insertion(+), 31 deletions(-) diff --git a/assistant/commands/locales/pt-PT.po b/assistant/commands/locales/pt-PT.po index 298bf891a..d85db579a 100644 --- a/assistant/commands/locales/pt-PT.po +++ b/assistant/commands/locales/pt-PT.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" "POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-07 02:57\n" +"PO-Revision-Date: 2026-05-20 01:28\n" "Last-Translator: \n" "Language-Team: Portuguese\n" "MIME-Version: 1.0\n" @@ -181,10 +181,6 @@ msgstr "" msgid "`Collaborative Mode: `{}\n" msgstr "" -#: assistant\commands\admin.py:261 -msgid "`Coalesce Delay: `{}s\n" -msgstr "" - #: assistant\commands\admin.py:262 msgid "`Max Retention: `{}\n" msgstr "`Retenção máxima: `{}\n" @@ -1276,32 +1272,6 @@ msgstr "" msgid "Collaborative conversations are now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1531 -#, docstring -msgid "\n" -" Set the message coalesce delay in seconds\n\n" -" When a user sends multiple messages in quick succession, the bot will wait this many seconds\n" -" for follow-up messages before responding. All messages within the window are combined into a\n" -" single request. If follow-up messages arrive while the bot is already processing, the current\n" -" response is discarded and the messages are combined for a fresh request.\n\n" -" This prevents the bot from responding to half-finished thoughts when a user accidentally hits\n" -" send too early.\n\n" -" Set to 0 to disable (default). Recommended: 1.5\n" -" " -msgstr "" - -#: assistant\commands\admin.py:1545 -msgid "Delay must be between 0 and 10 seconds" -msgstr "" - -#: assistant\commands\admin.py:1549 -msgid "Message coalescing is now **Disabled**" -msgstr "" - -#: assistant\commands\admin.py:1551 -msgid "Messages will be coalesced with a **{}s** delay" -msgstr "" - #: assistant\commands\admin.py:1556 #, docstring msgid "\n" From defe6f308b0e5bcd0ea059b9ed1b428d12cdf9d0 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Tue, 19 May 2026 21:28:09 -0400 Subject: [PATCH 046/104] New translations messages.pot (Russian) [ci skip] --- assistant/commands/locales/ru-RU.po | 32 +---------------------------- 1 file changed, 1 insertion(+), 31 deletions(-) diff --git a/assistant/commands/locales/ru-RU.po b/assistant/commands/locales/ru-RU.po index e3dd3bef6..3239fb2c6 100644 --- a/assistant/commands/locales/ru-RU.po +++ b/assistant/commands/locales/ru-RU.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" "POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-07 03:00\n" +"PO-Revision-Date: 2026-05-20 01:28\n" "Last-Translator: \n" "Language-Team: Russian\n" "MIME-Version: 1.0\n" @@ -176,10 +176,6 @@ msgstr "" msgid "`Collaborative Mode: `{}\n" msgstr "" -#: assistant\commands\admin.py:261 -msgid "`Coalesce Delay: `{}s\n" -msgstr "" - #: assistant\commands\admin.py:262 msgid "`Max Retention: `{}\n" msgstr "" @@ -1264,32 +1260,6 @@ msgstr "" msgid "Collaborative conversations are now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1531 -#, docstring -msgid "\n" -" Set the message coalesce delay in seconds\n\n" -" When a user sends multiple messages in quick succession, the bot will wait this many seconds\n" -" for follow-up messages before responding. All messages within the window are combined into a\n" -" single request. If follow-up messages arrive while the bot is already processing, the current\n" -" response is discarded and the messages are combined for a fresh request.\n\n" -" This prevents the bot from responding to half-finished thoughts when a user accidentally hits\n" -" send too early.\n\n" -" Set to 0 to disable (default). Recommended: 1.5\n" -" " -msgstr "" - -#: assistant\commands\admin.py:1545 -msgid "Delay must be between 0 and 10 seconds" -msgstr "" - -#: assistant\commands\admin.py:1549 -msgid "Message coalescing is now **Disabled**" -msgstr "" - -#: assistant\commands\admin.py:1551 -msgid "Messages will be coalesced with a **{}s** delay" -msgstr "" - #: assistant\commands\admin.py:1556 #, docstring msgid "\n" From bb1c545d0998abb0653574cdf45ed0b7d450cc12 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Tue, 19 May 2026 21:28:11 -0400 Subject: [PATCH 047/104] New translations messages.pot (Turkish) [ci skip] --- assistant/commands/locales/tr-TR.po | 32 +---------------------------- 1 file changed, 1 insertion(+), 31 deletions(-) diff --git a/assistant/commands/locales/tr-TR.po b/assistant/commands/locales/tr-TR.po index 1c2e1f6d1..7ba83d8e1 100644 --- a/assistant/commands/locales/tr-TR.po +++ b/assistant/commands/locales/tr-TR.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" "POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-07 03:02\n" +"PO-Revision-Date: 2026-05-20 01:28\n" "Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" @@ -178,10 +178,6 @@ msgstr "" msgid "`Collaborative Mode: `{}\n" msgstr "" -#: assistant\commands\admin.py:261 -msgid "`Coalesce Delay: `{}s\n" -msgstr "" - #: assistant\commands\admin.py:262 msgid "`Max Retention: `{}\n" msgstr "`Maksimum Tutma: `{}\n" @@ -1273,32 +1269,6 @@ msgstr "" msgid "Collaborative conversations are now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1531 -#, docstring -msgid "\n" -" Set the message coalesce delay in seconds\n\n" -" When a user sends multiple messages in quick succession, the bot will wait this many seconds\n" -" for follow-up messages before responding. All messages within the window are combined into a\n" -" single request. If follow-up messages arrive while the bot is already processing, the current\n" -" response is discarded and the messages are combined for a fresh request.\n\n" -" This prevents the bot from responding to half-finished thoughts when a user accidentally hits\n" -" send too early.\n\n" -" Set to 0 to disable (default). Recommended: 1.5\n" -" " -msgstr "" - -#: assistant\commands\admin.py:1545 -msgid "Delay must be between 0 and 10 seconds" -msgstr "" - -#: assistant\commands\admin.py:1549 -msgid "Message coalescing is now **Disabled**" -msgstr "" - -#: assistant\commands\admin.py:1551 -msgid "Messages will be coalesced with a **{}s** delay" -msgstr "" - #: assistant\commands\admin.py:1556 #, docstring msgid "\n" From f10fd7829c8966d4f482c74d275d7878a0e40146 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Tue, 19 May 2026 21:28:12 -0400 Subject: [PATCH 048/104] New translations messages.pot (Croatian) [ci skip] --- assistant/commands/locales/hr-HR.po | 32 +---------------------------- 1 file changed, 1 insertion(+), 31 deletions(-) diff --git a/assistant/commands/locales/hr-HR.po b/assistant/commands/locales/hr-HR.po index c670c23bf..ccc20b0d9 100644 --- a/assistant/commands/locales/hr-HR.po +++ b/assistant/commands/locales/hr-HR.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" "POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-07 03:04\n" +"PO-Revision-Date: 2026-05-20 01:28\n" "Last-Translator: \n" "Language-Team: Croatian\n" "MIME-Version: 1.0\n" @@ -176,10 +176,6 @@ msgstr "" msgid "`Collaborative Mode: `{}\n" msgstr "" -#: assistant\commands\admin.py:261 -msgid "`Coalesce Delay: `{}s\n" -msgstr "" - #: assistant\commands\admin.py:262 msgid "`Max Retention: `{}\n" msgstr "" @@ -1264,32 +1260,6 @@ msgstr "" msgid "Collaborative conversations are now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1531 -#, docstring -msgid "\n" -" Set the message coalesce delay in seconds\n\n" -" When a user sends multiple messages in quick succession, the bot will wait this many seconds\n" -" for follow-up messages before responding. All messages within the window are combined into a\n" -" single request. If follow-up messages arrive while the bot is already processing, the current\n" -" response is discarded and the messages are combined for a fresh request.\n\n" -" This prevents the bot from responding to half-finished thoughts when a user accidentally hits\n" -" send too early.\n\n" -" Set to 0 to disable (default). Recommended: 1.5\n" -" " -msgstr "" - -#: assistant\commands\admin.py:1545 -msgid "Delay must be between 0 and 10 seconds" -msgstr "" - -#: assistant\commands\admin.py:1549 -msgid "Message coalescing is now **Disabled**" -msgstr "" - -#: assistant\commands\admin.py:1551 -msgid "Messages will be coalesced with a **{}s** delay" -msgstr "" - #: assistant\commands\admin.py:1556 #, docstring msgid "\n" From 726ed290cb7b322d0a2d65e1512f900a1254e112 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Mon, 1 Jun 2026 11:10:40 -0400 Subject: [PATCH 049/104] New translations messages.pot (French) [ci skip] --- assistant/commands/locales/fr-FR.po | 2693 ++++++++++++++++++--------- 1 file changed, 1793 insertions(+), 900 deletions(-) diff --git a/assistant/commands/locales/fr-FR.po b/assistant/commands/locales/fr-FR.po index b7691cf6c..fb277a52b 100644 --- a/assistant/commands/locales/fr-FR.po +++ b/assistant/commands/locales/fr-FR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-20 01:28\n" +"POT-Creation-Date: 2026-06-01 09:46-0400\n" +"PO-Revision-Date: 2026-06-01 15:10\n" "Last-Translator: \n" "Language-Team: French\n" "MIME-Version: 1.0\n" @@ -17,19 +17,19 @@ msgstr "" "X-Crowdin-File-ID: 53\n" "Language: fr_FR\n" -#: assistant\commands\admin.py:67 +#: assistant\commands\admin.py:89 msgid "Endpoint override must be a full base URL, for example `http://127.0.0.1:1234/v1` or `https://example.com/api/v1`." msgstr "" -#: assistant\commands\admin.py:72 +#: assistant\commands\admin.py:94 msgid "Endpoint override must point at the OpenAI-compatible API base path ending in `/v1`. Do not include routes like `/chat/completions` or `/models`." msgstr "" -#: assistant\commands\admin.py:81 +#: assistant\commands\admin.py:103 msgid "Empty" msgstr "" -#: assistant\commands\admin.py:90 +#: assistant\commands\admin.py:112 #, docstring msgid "\n" " Setup the assistant\n\n" @@ -38,69 +38,166 @@ msgid "\n" msgstr "\n" " Configurer l'assistant Vous aurez besoin d'une clé API de OpenAI pour utiliser ChatGPT et leurs autres modèles." -#: assistant\commands\admin.py:133 +#: assistant\commands\admin.py:122 +#, docstring +msgid "Manage API keys and endpoint URLs" +msgstr "" + +#: assistant\commands\admin.py:127 +#, docstring +msgid "Per-guild endpoint and key overrides (chat + embeddings)" +msgstr "" + +#: assistant\commands\admin.py:132 +#, docstring +msgid "Configure general guild settings" +msgstr "" + +#: assistant\commands\admin.py:137 +#, docstring +msgid "Configure assistant prompts" +msgstr "" + +#: assistant\commands\admin.py:142 +#, docstring +msgid "Configure feature toggles" +msgstr "" + +#: assistant\commands\admin.py:147 +#, docstring +msgid "Configure auto-answer settings" +msgstr "" + +#: assistant\commands\admin.py:152 +#, docstring +msgid "Configure trigger phrase system" +msgstr "" + +#: assistant\commands\admin.py:157 +#, docstring +msgid "Configure content filtering" +msgstr "" + +#: assistant\commands\admin.py:162 +#, docstring +msgid "Configure token and retention limits" +msgstr "" + +#: assistant\commands\admin.py:167 +#, docstring +msgid "Configure model behavior parameters" +msgstr "" + +#: assistant\commands\admin.py:172 +#, docstring +msgid "Configure embeddings and RAG settings" +msgstr "" + +#: assistant\commands\admin.py:177 +#, docstring +msgid "Admin maintenance commands" +msgstr "" + +#: assistant\commands\admin.py:183 +#, docstring +msgid "Configure OpenRouter response & prompt caching." +msgstr "" + +#: assistant\commands\admin.py:188 +#, docstring +msgid "Manage role-based overrides" +msgstr "" + +#: assistant\commands\admin.py:193 +#, docstring +msgid "Manage scheduled autonomous tasks" +msgstr "" + +#: assistant\commands\admin.py:198 +#, docstring +msgid "Configure conversation compaction" +msgstr "" + +#: assistant\commands\admin.py:203 +#, docstring +msgid "AI moderation: scan messages, review flagged ones, and propose staff actions." +msgstr "" + +#: assistant\commands\admin.py:244 msgid "... and {} more" msgstr "" -#: assistant\commands\admin.py:143 +#: assistant\commands\admin.py:255 msgid "Configured chat model" msgstr "" -#: assistant\commands\admin.py:144 +#: assistant\commands\admin.py:256 msgid "{}: **{}**" msgstr "" -#: assistant\commands\admin.py:147 assistant\commands\admin.py:180 +#: assistant\commands\admin.py:259 assistant\commands\admin.py:294 msgid "No endpoint model cache is available yet. Run `{}` to refresh it, or enter a model id manually." msgstr "" -#: assistant\commands\admin.py:154 +#: assistant\commands\admin.py:266 msgid "Runtime chat model: **{}**" msgstr "" -#: assistant\commands\admin.py:159 +#: assistant\commands\admin.py:271 msgid "Discovered chat models:\n" "{}" msgstr "" -#: assistant\commands\admin.py:165 +#: assistant\commands\admin.py:277 msgid "No chat models were discovered from this endpoint yet. You can still enter a model id manually." msgstr "" -#: assistant\commands\admin.py:169 assistant\commands\admin.py:204 +#: assistant\commands\admin.py:281 assistant\commands\admin.py:318 msgid "Use this command again with one of these model ids, or enter another id manually if your endpoint supports it." msgstr "" -#: assistant\commands\admin.py:177 +#: assistant\commands\admin.py:291 msgid "Configured embedding model: **{}**" msgstr "" -#: assistant\commands\admin.py:187 +#: assistant\commands\admin.py:301 msgid "Runtime embedding model: **{}**" msgstr "" -#: assistant\commands\admin.py:192 +#: assistant\commands\admin.py:306 msgid "Discovered embedding models:\n" "{}" msgstr "" -#: assistant\commands\admin.py:198 +#: assistant\commands\admin.py:312 msgid "No embedding models were discovered from this endpoint yet. You can still enter a model id manually." msgstr "" -#: assistant\commands\admin.py:217 +#: assistant\commands\admin.py:332 msgid "embedding" msgstr "" -#: assistant\commands\admin.py:217 +#: assistant\commands\admin.py:332 msgid "chat" msgstr "" -#: assistant\commands\admin.py:220 -msgid "Note: `{}` is not in the endpoint's discovered {} model list. Requests will currently resolve to `{}` unless the endpoint starts advertising or returning that model." +#: assistant\commands\admin.py:351 +msgid "Note: `{}` is not in the endpoint's discovered {} model list. Requests on this endpoint will automatically use `{}` instead." msgstr "" -#: assistant\commands\admin.py:228 +#: assistant\commands\admin.py:354 +msgid "Note: `{}` is not in the endpoint's discovered {} model list. The cog will still try to use it directly, but the endpoint may reject it." +msgstr "" + +#: assistant\commands\admin.py:400 +msgid "Warning: stored embeddings currently use mixed dimensions ({}). Run `{}` to resync them with `{}`." +msgstr "" + +#: assistant\commands\admin.py:412 +msgid "Warning: stored embeddings are `{}` dimensions, but `{}` returns `{}` dimensions. Run `{}` to resync them after switching models." +msgstr "" + +#: assistant\commands\admin.py:443 #, docstring msgid "\n" " View current settings\n\n" @@ -110,537 +207,656 @@ msgstr "\n" " Afficher les paramètres actuels\n" " Pour envoyer dans le canal actuel, utilisez `[p]assistant view false` " -#: assistant\commands\admin.py:248 +#: assistant\commands\admin.py:468 msgid "`OpenAI Version: `{}\n" msgstr "`Version Openai:` {}\n" -#: assistant\commands\admin.py:249 +#: assistant\commands\admin.py:469 msgid "`OpenAI API Status: `{}\n" msgstr "" -#: assistant\commands\admin.py:250 +#: assistant\commands\admin.py:470 msgid "`Draw Command: `{}\n" msgstr "" -#: assistant\commands\admin.py:250 assistant\commands\admin.py:295 -#: assistant\commands\admin.py:302 assistant\commands\admin.py:312 -#: assistant\commands\admin.py:396 assistant\commands\admin.py:1346 +#: assistant\commands\admin.py:470 assistant\commands\admin.py:525 +#: assistant\commands\admin.py:532 assistant\commands\admin.py:542 +#: assistant\commands\admin.py:679 assistant\commands\admin.py:1695 msgid "Enabled" msgstr "" -#: assistant\commands\admin.py:250 assistant\commands\admin.py:295 -#: assistant\commands\admin.py:302 assistant\commands\admin.py:312 -#: assistant\commands\admin.py:396 assistant\commands\admin.py:1346 +#: assistant\commands\admin.py:470 assistant\commands\admin.py:525 +#: assistant\commands\admin.py:532 assistant\commands\admin.py:542 +#: assistant\commands\admin.py:604 assistant\commands\admin.py:679 +#: assistant\commands\admin.py:1695 msgid "Disabled" msgstr "" -#: assistant\commands\admin.py:251 +#: assistant\commands\admin.py:471 msgid "`Model: `{}\n" msgstr "`Modèle: `{}\n" -#: assistant\commands\admin.py:252 +#: assistant\commands\admin.py:472 msgid "`Embed Model: `{}\n" msgstr "" -#: assistant\commands\admin.py:253 +#: assistant\commands\admin.py:473 msgid "`Enabled: `{}\n" msgstr "`Activé: `{}\n" -#: assistant\commands\admin.py:254 +#: assistant\commands\admin.py:474 msgid "`Timezone: `{}\n" msgstr "`Fuseau horaire: `{}\n" -#: assistant\commands\admin.py:255 +#: assistant\commands\admin.py:475 msgid "`Channel: `{}\n" msgstr "`Channel: `{}\n" -#: assistant\commands\admin.py:255 assistant\commands\admin.py:405 -#: assistant\commands\admin.py:412 +#: assistant\commands\admin.py:475 assistant\commands\admin.py:688 +#: assistant\commands\admin.py:695 msgid "Not Set" msgstr "Pas encore défini" -#: assistant\commands\admin.py:256 +#: assistant\commands\admin.py:476 msgid "`? Required: `{}\n" msgstr "`?Requis: `{}\n" -#: assistant\commands\admin.py:257 +#: assistant\commands\admin.py:477 msgid "`Question Mode: `{}\n" msgstr "" -#: assistant\commands\admin.py:258 +#: assistant\commands\admin.py:478 msgid "`Mention on Reply: `{}\n" msgstr "" -#: assistant\commands\admin.py:259 +#: assistant\commands\admin.py:479 msgid "`Respond to Mentions: `{}\n" msgstr "" -#: assistant\commands\admin.py:260 +#: assistant\commands\admin.py:480 msgid "`Collaborative Mode: `{}\n" msgstr "" -#: assistant\commands\admin.py:262 +#: assistant\commands\admin.py:481 msgid "`Max Retention: `{}\n" msgstr "`Rétention maximale: `{}\n" -#: assistant\commands\admin.py:263 +#: assistant\commands\admin.py:482 msgid "`Retention Expire: `{}s\n" msgstr "`Rétention expire: {}s`\n" -#: assistant\commands\admin.py:264 +#: assistant\commands\admin.py:483 msgid "`Max Tokens: `{}\n" msgstr "`Tokens max:` {}\n" -#: assistant\commands\admin.py:265 +#: assistant\commands\admin.py:484 msgid "`Max Response Tokens: `{}\n" msgstr "`Tokens de réponse maximum:` {}\n" -#: assistant\commands\admin.py:266 +#: assistant\commands\admin.py:485 msgid "`Min Length: `{}\n" msgstr "`Min Longueur: `{}\n" -#: assistant\commands\admin.py:267 +#: assistant\commands\admin.py:486 msgid "`Temperature: `{}\n" msgstr "`Température: `{}\n" -#: assistant\commands\admin.py:268 +#: assistant\commands\admin.py:487 msgid "`Frequency Penalty: `{}\n" msgstr "" -#: assistant\commands\admin.py:269 +#: assistant\commands\admin.py:488 msgid "`Presence Penalty: `{}\n" msgstr "" -#: assistant\commands\admin.py:270 +#: assistant\commands\admin.py:489 msgid "`Seed: `{}\n" msgstr "" -#: assistant\commands\admin.py:271 +#: assistant\commands\admin.py:490 msgid "`Vision Resolution: `{}\n" msgstr "" -#: assistant\commands\admin.py:272 +#: assistant\commands\admin.py:491 msgid "`Reasoning Effort: `{}\n" msgstr "" -#: assistant\commands\admin.py:273 +#: assistant\commands\admin.py:492 msgid "`Verbosity: `{}\n" msgstr "" -#: assistant\commands\admin.py:274 +#: assistant\commands\admin.py:493 msgid "`System Prompt: `{} tokens\n" msgstr "" -#: assistant\commands\admin.py:275 +#: assistant\commands\admin.py:494 msgid "`User Prompt: `{} tokens\n" msgstr "" -#: assistant\commands\admin.py:276 +#: assistant\commands\admin.py:495 msgid "`Endpoint Override: `{}\n" msgstr "" -#: assistant\commands\admin.py:280 +#: assistant\commands\admin.py:495 assistant\commands\admin.py:496 +#: assistant\commands\admin.py:3518 +msgid "Not set" +msgstr "" + +#: assistant\commands\admin.py:496 +msgid "`Guild Endpoint: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:500 +msgid "`Effective Model: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:502 +msgid "`Effective Embed: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:505 msgid "Assistant Settings" msgstr "Paramètres d'assistance" -#: assistant\commands\admin.py:288 +#: assistant\commands\admin.py:515 assistant\commands\admin.py:978 +#: assistant\commands\admin.py:1062 msgid "Endpoint Runtime" msgstr "" -#: assistant\commands\admin.py:290 +#: assistant\commands\admin.py:520 msgid "Auto Answer" msgstr "" -#: assistant\commands\admin.py:291 +#: assistant\commands\admin.py:521 msgid "Auto-answer will trigger the bot outside of the assistant channel if a question is detected and an embedding is not found.\n" msgstr "" -#: assistant\commands\admin.py:294 +#: assistant\commands\admin.py:524 msgid "`Model: `{}\n" msgstr "" -#: assistant\commands\admin.py:295 assistant\commands\admin.py:302 +#: assistant\commands\admin.py:525 assistant\commands\admin.py:532 msgid "`Status: `{}\n" msgstr "" -#: assistant\commands\admin.py:296 +#: assistant\commands\admin.py:526 msgid "`Threshold: `{}\n" msgstr "" -#: assistant\commands\admin.py:297 assistant\commands\admin.py:304 +#: assistant\commands\admin.py:527 assistant\commands\admin.py:534 msgid "`Ignored: `{}\n" msgstr "" -#: assistant\commands\admin.py:300 +#: assistant\commands\admin.py:530 msgid "Trigger Words" msgstr "" -#: assistant\commands\admin.py:301 +#: assistant\commands\admin.py:531 msgid "Trigger words allow the bot to respond to messages containing specific keywords or regex patterns.\n" msgstr "" -#: assistant\commands\admin.py:303 +#: assistant\commands\admin.py:533 msgid "`Phrases: `{}\n" msgstr "" -#: assistant\commands\admin.py:305 +#: assistant\commands\admin.py:535 assistant\commands\admin.py:3515 msgid "None" msgstr "" -#: assistant\commands\admin.py:307 +#: assistant\commands\admin.py:537 msgid "`Has Prompt:`{}\n" msgstr "" -#: assistant\commands\admin.py:307 +#: assistant\commands\admin.py:537 msgid "Yes" msgstr "" -#: assistant\commands\admin.py:307 +#: assistant\commands\admin.py:537 msgid "No" msgstr "" -#: assistant\commands\admin.py:310 +#: assistant\commands\admin.py:540 msgid "Think Tags" msgstr "" -#: assistant\commands\admin.py:311 +#: assistant\commands\admin.py:541 msgid "Reasoning blocks wrapped in these tags are removed from chat output.\n" msgstr "" -#: assistant\commands\admin.py:312 +#: assistant\commands\admin.py:542 msgid "`Upload as Files:`{}\n" msgstr "" -#: assistant\commands\admin.py:313 +#: assistant\commands\admin.py:543 msgid "Prefix\n" "{}\n" "Suffix\n" "{}" msgstr "" -#: assistant\commands\admin.py:320 +#: assistant\commands\admin.py:550 msgid "System prompt override is **Allowed**, users can set a personal system prompt per convo." msgstr "" -#: assistant\commands\admin.py:322 +#: assistant\commands\admin.py:552 msgid "System prompt override is **Disabled**, users cannot set a personal system prompt per convo." msgstr "" -#: assistant\commands\admin.py:323 +#: assistant\commands\admin.py:553 msgid "\n" "*This will be restricted to mods if collaborative conversations are enabled!*" msgstr "" -#: assistant\commands\admin.py:324 +#: assistant\commands\admin.py:554 msgid "System Prompt Overriding" msgstr "" -#: assistant\commands\admin.py:332 +#: assistant\commands\admin.py:562 msgid "Channel Prompt Overrides" msgstr "" -#: assistant\commands\admin.py:343 +#: assistant\commands\admin.py:578 +msgid "• System prompt - `{}`" +msgstr "" + +#: assistant\commands\admin.py:581 +msgid "• Initial prompt - `{}`" +msgstr "" + +#: assistant\commands\admin.py:586 +msgid "• <#{}> - `{}`" +msgstr "" + +#: assistant\commands\admin.py:589 +msgid "⚠️ Cache Warning" +msgstr "" + +#: assistant\commands\admin.py:590 +msgid "These prompts contain dynamic variable placeholders that break prompt prefix caching on every request. Use `{prefix}floatingcontext` to move them to the floating context block instead.\n" +msgstr "" + +#: assistant\commands\admin.py:602 +msgid "Enabled ({}s TTL)" +msgstr "" + +#: assistant\commands\admin.py:607 +msgid "Off" +msgstr "" + +#: assistant\commands\admin.py:608 +msgid "5 minutes" +msgstr "" + +#: assistant\commands\admin.py:609 +msgid "1 hour" +msgstr "" + +#: assistant\commands\admin.py:612 +msgid "OpenRouter Caching" +msgstr "" + +#: assistant\commands\admin.py:614 +msgid "`Response Cache: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:615 +msgid "`Provider Prompt Cache: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:626 msgid "Auto-Reply Channels" msgstr "" -#: assistant\commands\admin.py:352 +#: assistant\commands\admin.py:635 msgid "Mixed (Please Refresh!)" msgstr "Mélangé (veuillez actualiser!)" -#: assistant\commands\admin.py:354 +#: assistant\commands\admin.py:637 msgid "Synced!" msgstr "Synchronisé !" -#: assistant\commands\admin.py:356 +#: assistant\commands\admin.py:639 msgid "N/A" msgstr "N/A" -#: assistant\commands\admin.py:359 +#: assistant\commands\admin.py:642 msgid "`Top N Embeddings: `{}\n" msgstr "`Top N intégres: {}`\n" -#: assistant\commands\admin.py:360 +#: assistant\commands\admin.py:643 msgid "`Min Relatedness: `{}\n" msgstr "`Min Larence:` {}\n" -#: assistant\commands\admin.py:361 +#: assistant\commands\admin.py:644 msgid "`Encodings: `{}" msgstr "" -#: assistant\commands\admin.py:365 +#: assistant\commands\admin.py:648 msgid "Embeddings ({})" msgstr "Incorporations ({})" -#: assistant\commands\admin.py:373 +#: assistant\commands\admin.py:656 msgid "The following roles/users can use the `think_and_plan` tool: " msgstr "" -#: assistant\commands\admin.py:378 +#: assistant\commands\admin.py:661 msgid "`Function Calling: `{}\n" msgstr "`Fonction Call:` {}\n" -#: assistant\commands\admin.py:379 +#: assistant\commands\admin.py:662 msgid "`Maximum Recursion: `{}\n" msgstr "`Recursion maximale: {}`\n" -#: assistant\commands\admin.py:380 +#: assistant\commands\admin.py:663 msgid "`Function Tokens: `{}\n" msgstr "`Fonction Tokens: {}`\n" -#: assistant\commands\admin.py:384 +#: assistant\commands\admin.py:667 msgid "The following cogs also have functions registered with the assistant\n" "{}" msgstr "Les COG suivants ont également des fonctions enregistrées auprès de l'assistant\n" "{}" -#: assistant\commands\admin.py:389 +#: assistant\commands\admin.py:672 msgid "Custom Functions ({})" msgstr "Fonctions personnalisées ({})" -#: assistant\commands\admin.py:394 +#: assistant\commands\admin.py:677 msgid "Max tokens" msgstr "" -#: assistant\commands\admin.py:396 +#: assistant\commands\admin.py:679 msgid "`Compaction: `{}\n" msgstr "" -#: assistant\commands\admin.py:397 +#: assistant\commands\admin.py:680 msgid "`Compaction Model: `{}\n" msgstr "" -#: assistant\commands\admin.py:397 +#: assistant\commands\admin.py:680 msgid "Same as chat" msgstr "" -#: assistant\commands\admin.py:398 +#: assistant\commands\admin.py:681 msgid "`Threshold: `{}\n" msgstr "" -#: assistant\commands\admin.py:400 +#: assistant\commands\admin.py:683 msgid "Context Compaction" msgstr "" -#: assistant\commands\admin.py:404 +#: assistant\commands\admin.py:687 msgid "API Key" msgstr "" -#: assistant\commands\admin.py:411 +#: assistant\commands\admin.py:694 msgid "Endpoint Override API Key" msgstr "" -#: assistant\commands\admin.py:419 +#: assistant\commands\admin.py:702 msgid "Regex Blacklist" msgstr "Liste noire regex" -#: assistant\commands\admin.py:421 +#: assistant\commands\admin.py:704 msgid "Regex Failure Blocking" msgstr "Blocage de défaillance regex" -#: assistant\commands\admin.py:422 +#: assistant\commands\admin.py:705 msgid "Block reply if regex replacement fails: **{}**" msgstr "Bloquer la réponse si le remplacement regex échoue : **{}**" -#: assistant\commands\admin.py:427 +#: assistant\commands\admin.py:710 msgid "Conversations are stored persistently" msgstr "Les conversations sont stockées de manière persistante" -#: assistant\commands\admin.py:429 +#: assistant\commands\admin.py:712 msgid "conversations are stored in memory until reboot or reload" msgstr "Les conversations sont stockées en mémoire jusqu'à redémarrage ou à recharger" -#: assistant\commands\admin.py:431 +#: assistant\commands\admin.py:714 msgid "Persistent Conversations" msgstr "Conversations persistantes" -#: assistant\commands\admin.py:445 +#: assistant\commands\admin.py:728 msgid "Blacklist" msgstr "Liste noire" -#: assistant\commands\admin.py:457 +#: assistant\commands\admin.py:740 msgid "Model Role Overrides" msgstr "Modèles de remplacements" -#: assistant\commands\admin.py:468 +#: assistant\commands\admin.py:751 msgid "Max Token Role Overrides" msgstr "Rôle de jeton maximum" -#: assistant\commands\admin.py:479 +#: assistant\commands\admin.py:763 msgid "Max Message Retention Role Overrides" msgstr "Max Message Retention Rôle des remplacements" -#: assistant\commands\admin.py:491 +#: assistant\commands\admin.py:778 msgid "Max Message Retention Time Role Overrides" msgstr "Rôle de temps de rétention des messages maximum" -#: assistant\commands\admin.py:505 +#: assistant\commands\admin.py:793 msgid "Max Response Token Role Overrides" msgstr "Max Remplacements de Rôle de Jeton de Réponse" -#: assistant\commands\admin.py:516 +#: assistant\commands\admin.py:808 msgid "Reasoning Effort Role Overrides" msgstr "" -#: assistant\commands\admin.py:520 +#: assistant\commands\admin.py:815 msgid "Your Brave websearch API key is set!" msgstr "" -#: assistant\commands\admin.py:522 +#: assistant\commands\admin.py:817 msgid "Enables the use of the `search_web_brave` function\n" "Get your API key **[Here](https://brave.com/search/api/)**\n" msgstr "" -#: assistant\commands\admin.py:526 +#: assistant\commands\admin.py:821 msgid "Brave Websearch API key" msgstr "" -#: assistant\commands\admin.py:528 +#: assistant\commands\admin.py:823 msgid "Showing settings for {}" msgstr "Affichage des paramètres pour {}" -#: assistant\commands\admin.py:534 +#: assistant\commands\admin.py:829 msgid "SystemPrompt" msgstr "Systemprompt" -#: assistant\commands\admin.py:540 +#: assistant\commands\admin.py:835 msgid "InitialPrompt" msgstr "Invite initiale" -#: assistant\commands\admin.py:550 +#: assistant\commands\admin.py:845 msgid "Sent your current settings for this server in DMs!" msgstr "Envoyez vos paramètres actuels pour ce serveur dans DMS !" -#: assistant\commands\admin.py:552 +#: assistant\commands\admin.py:847 msgid "You need to allow DMs so I can message you!" msgstr "Vous devez autoriser les DM pour que je puisse vous envoyer un message !" -#: assistant\commands\admin.py:559 -#, docstring -msgid "View the token usage stats for this server" -msgstr "Afficher les statistiques d'utilisation des jetons pour ce serveur" - -#: assistant\commands\admin.py:562 -msgid "There is no usage data yet!" -msgstr "Il n'y a pas encore de données d'utilisation !" - -#: assistant\commands\admin.py:593 -msgid "`Total: `{} (${} @ ${}/1k tokens)" -msgstr "`Total : `{} (${} @ ${}/1k tokens)" - -#: assistant\commands\admin.py:600 -msgid "Free/Self-Hosted" -msgstr "Gratuit / auto-hébergé" - -#: assistant\commands\admin.py:604 -msgid "`Input: `{} (${} @ ${}/1k tokens)\n" -"`Output: `{} (${} @ ${}/1k tokens)\n" -"`Total: `{} (${})" -msgstr "`Entrée : `{} (${} @ ${}/1k tokens)\n" -"`Sortie : `{} (${} @ ${}/1k tokens)\n" -"`Total : `{} (${})" - -#: assistant\commands\admin.py:618 -msgid "**Overall Token Usage and Cost**\n" -"`Input: `{} (${})\n" -"`Output: `{} (${})\n" -"`Total: `{} (${})\n" -"`Tool Calls: `{}\n" -msgstr "" - -#: assistant\commands\admin.py:639 -#, docstring -msgid "Reset the token usage stats for this server" -msgstr "Réinitialiser les statistiques d'utilisation des jetons pour ce serveur" - -#: assistant\commands\admin.py:642 -msgid "Token usage stats have been reset!" -msgstr "Les statistiques d'utilisation des jetons ont été réinitialisées !" - -#: assistant\commands\admin.py:648 +#: assistant\commands\admin.py:854 #, docstring msgid "\n" -" Set this server's API key\n" +" Set this server's API key\n\n" +" Used for all requests from this guild - whether routing to OpenAI\n" +" directly, the guild's endpoint override, or the global endpoint\n" +" override. If not set, the global endpoint key is used as a fallback.\n" " " msgstr "" -#: assistant\commands\admin.py:654 +#: assistant\commands\admin.py:864 msgid "Click to set this server's API key\n\n" "To remove your key, enter `none`" msgstr "" -#: assistant\commands\admin.py:663 +#: assistant\commands\admin.py:873 msgid "API key has been removed!" msgstr "" -#: assistant\commands\admin.py:666 assistant\commands\admin.py:695 -#: assistant\commands\admin.py:723 +#: assistant\commands\admin.py:876 assistant\commands\admin.py:905 +#: assistant\commands\admin.py:938 assistant\commands\admin.py:3952 msgid "No API key was entered!" msgstr "Aucune clé API n'a été saisie !" -#: assistant\commands\admin.py:669 +#: assistant\commands\admin.py:879 msgid "API key has been set!" msgstr "" -#: assistant\commands\admin.py:679 +#: assistant\commands\admin.py:889 #, docstring msgid "\n" -" Enables use of the `search_web_brave` function\n\n" -" Get your API key **[Here](https://brave.com/search/api/)**\n" +" Set the Brave Search API key (owner) - used by the web-search tool\n\n" +" Get your API key **[here](https://brave.com/search/api/)**.\n" " " msgstr "" -#: assistant\commands\admin.py:685 +#: assistant\commands\admin.py:895 msgid "Click to set your API key\n\n" "To remove your keys, enter `none`" msgstr "" -#: assistant\commands\admin.py:693 +#: assistant\commands\admin.py:903 msgid "Brave API key has been removed!" msgstr "" -#: assistant\commands\admin.py:698 +#: assistant\commands\admin.py:908 msgid "Brave API key has been set!" msgstr "" -#: assistant\commands\admin.py:706 +#: assistant\commands\admin.py:916 #, docstring msgid "\n" -" Set the global API key used for the custom endpoint override\n\n" -" This key is only used when an endpoint override is configured and a guild\n" +" Set the global API key for the default endpoint override (owner)\n\n" +" This key is only used when a global endpoint override is set\n" +" (see `[p]assistant api globalendpoint`) and the requesting guild\n" " has not provided its own API key.\n" " " msgstr "" -#: assistant\commands\admin.py:713 +#: assistant\commands\admin.py:924 msgid "Click to set the API key used for the endpoint override\n\n" "To remove the key, enter `none`" msgstr "" -#: assistant\commands\admin.py:721 +#: assistant\commands\admin.py:933 msgid "Endpoint override API key has been removed!" msgstr "" -#: assistant\commands\admin.py:726 +#: assistant\commands\admin.py:942 msgid "Endpoint override API key has been set!" msgstr "" -#: assistant\commands\admin.py:732 +#: assistant\commands\admin.py:952 +#, docstring +msgid "\n" +" Set this guild's endpoint URL (used for both chat and embeddings)\n\n" +" The endpoint must be a full base URL ending in `/v1`, for example:\n" +" `https://openrouter.ai/api/v1`\n\n" +" Set the API key for this endpoint with `[p]assistant api key`.\n\n" +" After setting, use `[p]assistant set model` (no args) to open an\n" +" interactive model picker. Router endpoints like OpenRouter also\n" +" accept special aliases like `openrouter/auto` or `openrouter/free`.\n\n" +" Run without arguments to view the current guild endpoint.\n" +" Use `none` to remove the guild endpoint override.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:972 +msgid "Guild Endpoint Override" +msgstr "" + +#: assistant\commands\admin.py:973 +msgid "Current endpoint: `{}`" +msgstr "" + +#: assistant\commands\admin.py:983 +msgid "No guild endpoint override is set." +msgstr "" + +#: assistant\commands\admin.py:990 +msgid "Guild endpoint override has been removed!" +msgstr "" + +#: assistant\commands\admin.py:993 +msgid "No guild endpoint override was set." +msgstr "" + +#: assistant\commands\admin.py:1002 +msgid "Guild endpoint override set to `{}`" +msgstr "" + +#: assistant\commands\admin.py:1009 +msgid "Endpoint probed successfully!\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:1024 +msgid "Could not probe the endpoint automatically. You can still use it, but model discovery may be limited." +msgstr "" + +#: assistant\commands\admin.py:1032 +#, docstring +msgid "Clear this guild's endpoint override (URL and cached profile)" +msgstr "" + +#: assistant\commands\admin.py:1035 +msgid "No per-guild endpoint override is set." +msgstr "" + +#: assistant\commands\admin.py:1038 +msgid "Guild endpoint override has been cleared!" +msgstr "" + +#: assistant\commands\admin.py:1044 +#, docstring +msgid "Show this guild's API key and endpoint override status" +msgstr "" + +#: assistant\commands\admin.py:1047 +msgid "Guild API Overrides" +msgstr "" + +#: assistant\commands\admin.py:1051 +msgid "Guild API Key" +msgstr "" + +#: assistant\commands\admin.py:1052 +msgid "Set" +msgstr "" + +#: assistant\commands\admin.py:1052 +msgid "Not set (using global key)" +msgstr "" + +#: assistant\commands\admin.py:1056 +msgid "Endpoint Override" +msgstr "" + +#: assistant\commands\admin.py:1057 +msgid "Not set (using global)" +msgstr "" + +#: assistant\commands\admin.py:1070 #, docstring msgid "Set the timezone used for prompt placeholders" msgstr "Définir le fuseau horaire utilisé pour les caractères d'invite" -#: assistant\commands\admin.py:738 +#: assistant\commands\admin.py:1080 msgid "Invalid Timezone, did you mean `{}`?" msgstr "Fuseau horaire non valide, vouliez-vous dire {} ?" -#: assistant\commands\admin.py:740 +#: assistant\commands\admin.py:1082 msgid "Timezone set to **{}** (`{}`)" msgstr "Fuseau horaire réglé sur **{}** (`{}`)" -#: assistant\commands\admin.py:747 +#: assistant\commands\admin.py:1089 #, docstring msgid "\n" -" Set the initial prompt for GPT to use\n\n" +" Set the system prompt for GPT to use\n\n" " Check out [This Guide](https://platform.openai.com/docs/guides/prompt-engineering) for prompting help.\n\n" " **Placeholders**\n" " - **botname**: [botname]\n" @@ -679,72 +895,79 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:792 assistant\commands\admin.py:859 -#: assistant\commands\admin.py:941 assistant\commands\admin.py:998 -#: assistant\commands\admin.py:1275 assistant\commands\admin.py:1406 -#: assistant\commands\admin.py:1448 assistant\commands\base.py:791 +#: assistant\commands\admin.py:1134 assistant\commands\admin.py:1191 +#: assistant\commands\admin.py:1285 assistant\commands\admin.py:1356 +#: assistant\commands\admin.py:1622 assistant\commands\admin.py:1718 +#: assistant\commands\admin.py:1760 assistant\commands\base.py:836 msgid "Failed to read `{}`, bot owner can use `{}` for more information" msgstr "Échec de la lecture de `{}`, le propriétaire du bot peut utiliser `{}` pour plus d'informations" -#: assistant\commands\admin.py:810 assistant\commands\admin.py:882 -#: assistant\commands\admin.py:959 +#: assistant\commands\admin.py:1152 assistant\commands\admin.py:1303 +#: assistant\commands\admin.py:1379 msgid "Your system and initial prompt combined will use {} tokens!\n" "Write a prompt combination using {} tokens or less to leave 10% of your configured max tokens for your response." msgstr "Votre système et l'invite initiale combinés utiliseront {} jetons !\n" "Écrivez une combinaison d'invites utilisant {} jetons ou moins pour laisser 10 % de vos jetons max configurés pour votre réponse." -#: assistant\commands\admin.py:818 -msgid "The initial prompt has been removed!" -msgstr "La demande initiale a été supprimée !" +#: assistant\commands\admin.py:1160 +msgid "The system prompt has been removed!" +msgstr "L'invite système a été supprimée !" -#: assistant\commands\admin.py:821 -msgid "Please include an initial prompt or .txt file!\n" +#: assistant\commands\admin.py:1163 +msgid "Please include a system prompt or .txt file!\n" "Use `{}` to view details for this command" -msgstr "Veuillez inclure une invite initiale ou un fichier .txt !\n" -"Utilisez `{}` pour afficher les détails de cette commande" +msgstr "Le texte source et la traduction doivent comporter le même nombre de caractères de remplacement `{}`, révisez votre traduction et réimprimez" -#: assistant\commands\admin.py:827 -msgid "The initial prompt has been overwritten!" -msgstr "Le texte initial a été écrasé !" +#: assistant\commands\admin.py:1169 +msgid "The system prompt has been overwritten!" +msgstr "L'invite système a été écrasée !" -#: assistant\commands\admin.py:830 -msgid "Initial prompt has been set!" -msgstr "La demande initiale a été définie !" +#: assistant\commands\admin.py:1172 +msgid "System prompt has been set!" +msgstr "Le prompt du système a été défini !" -#: assistant\commands\admin.py:837 +#: assistant\commands\admin.py:1179 #, docstring -msgid "Show the channel specific system prompt" +msgid "\n" +" Set the global default system prompt used by servers that inherit the default prompt\n\n" +" - Run without arguments to view the current global default prompt\n" +" - Use `none` to reset to the built-in default prompt\n" +" - Servers with a custom system prompt keep using their custom prompt\n" +" " msgstr "" -#: assistant\commands\admin.py:840 -msgid "No channel prompt set for {}" +#: assistant\commands\admin.py:1203 +msgid "Current global default system prompt for servers using the default or an unset system prompt:" msgstr "" -#: assistant\commands\admin.py:852 -#, docstring -msgid "Set a channel specific system prompt" +#: assistant\commands\admin.py:1204 +msgid "Servers with a custom system prompt are unchanged." msgstr "" -#: assistant\commands\admin.py:869 -msgid "Channel prompt has been removed from {}!" +#: assistant\commands\admin.py:1207 +msgid "This is currently using the built-in default prompt." msgstr "" -#: assistant\commands\admin.py:872 -msgid "No channel prompt set for {}!" +#: assistant\commands\admin.py:1209 +msgid "This is currently using a custom default prompt." msgstr "" -#: assistant\commands\admin.py:888 -msgid "Channel prompt has been overwritten for {}!" +#: assistant\commands\admin.py:1215 +msgid "Please include a system prompt or .txt file, or use `none` to reset to the built-in default." msgstr "" -#: assistant\commands\admin.py:890 -msgid "Channel prompt has been set for {}!" +#: assistant\commands\admin.py:1221 +msgid "The global default system prompt has been reset to the built-in default. Servers using the default or an unset system prompt will use it immediately." +msgstr "" + +#: assistant\commands\admin.py:1231 +msgid "The global default system prompt has been updated. Servers using the default or an unset system prompt will use it immediately." msgstr "" -#: assistant\commands\admin.py:896 +#: assistant\commands\admin.py:1240 #, docstring msgid "\n" -" Set the system prompt for GPT to use\n\n" +" Set the initial prompt for GPT to use\n\n" " Check out [This Guide](https://platform.openai.com/docs/guides/prompt-engineering) for prompting help.\n\n" " **Placeholders**\n" " - **botname**: [botname]\n" @@ -783,212 +1006,205 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:967 -msgid "The system prompt has been removed!" -msgstr "L'invite système a été supprimée !" +#: assistant\commands\admin.py:1311 +msgid "The initial prompt has been removed!" +msgstr "La demande initiale a été supprimée !" -#: assistant\commands\admin.py:970 -msgid "Please include a system prompt or .txt file!\n" +#: assistant\commands\admin.py:1314 +msgid "Please include an initial prompt or .txt file!\n" "Use `{}` to view details for this command" -msgstr "Le texte source et la traduction doivent comporter le même nombre de caractères de remplacement `{}`, révisez votre traduction et réimprimez" +msgstr "Veuillez inclure une invite initiale ou un fichier .txt !\n" +"Utilisez `{}` pour afficher les détails de cette commande" -#: assistant\commands\admin.py:976 -msgid "The system prompt has been overwritten!" -msgstr "L'invite système a été écrasée !" +#: assistant\commands\admin.py:1320 +msgid "The initial prompt has been overwritten!" +msgstr "Le texte initial a été écrasé !" -#: assistant\commands\admin.py:979 -msgid "System prompt has been set!" -msgstr "Le prompt du système a été défini !" +#: assistant\commands\admin.py:1323 +msgid "Initial prompt has been set!" +msgstr "La demande initiale a été définie !" -#: assistant\commands\admin.py:986 +#: assistant\commands\admin.py:1334 #, docstring -msgid "\n" -" Set the global default system prompt used by servers that inherit the default prompt\n\n" -" - Run without arguments to view the current global default prompt\n" -" - Use `none` to reset to the built-in default prompt\n" -" - Servers with a custom system prompt keep using their custom prompt\n" -" " -msgstr "" - -#: assistant\commands\admin.py:1010 -msgid "Current global default system prompt for servers using the default or an unset system prompt:" +msgid "Show the channel specific system prompt" msgstr "" -#: assistant\commands\admin.py:1011 -msgid "Servers with a custom system prompt are unchanged." +#: assistant\commands\admin.py:1337 +msgid "No channel prompt set for {}" msgstr "" -#: assistant\commands\admin.py:1014 -msgid "This is currently using the built-in default prompt." +#: assistant\commands\admin.py:1349 +#, docstring +msgid "Set a channel specific system prompt" msgstr "" -#: assistant\commands\admin.py:1016 -msgid "This is currently using a custom default prompt." +#: assistant\commands\admin.py:1366 +msgid "Channel prompt has been removed from {}!" msgstr "" -#: assistant\commands\admin.py:1022 -msgid "Please include a system prompt or .txt file, or use `none` to reset to the built-in default." +#: assistant\commands\admin.py:1369 +msgid "No channel prompt set for {}!" msgstr "" -#: assistant\commands\admin.py:1028 -msgid "The global default system prompt has been reset to the built-in default. Servers using the default or an unset system prompt will use it immediately." +#: assistant\commands\admin.py:1385 +msgid "Channel prompt has been overwritten for {}!" msgstr "" -#: assistant\commands\admin.py:1038 -msgid "The global default system prompt has been updated. Servers using the default or an unset system prompt will use it immediately." +#: assistant\commands\admin.py:1387 +msgid "Channel prompt has been set for {}!" msgstr "" -#: assistant\commands\admin.py:1051 +#: assistant\commands\admin.py:1397 #, docstring msgid "Set the main auto-response channel for the assistant" msgstr "" -#: assistant\commands\admin.py:1056 +#: assistant\commands\admin.py:1402 msgid "Assistant channel has been removed" msgstr "Le canal des assistants a été supprimé" -#: assistant\commands\admin.py:1059 +#: assistant\commands\admin.py:1405 msgid "Assistant channel has been overwritten" msgstr "Le canal de l'assistant a été remplacé" -#: assistant\commands\admin.py:1062 +#: assistant\commands\admin.py:1408 msgid "Channel id has been set" msgstr "L'identifiant du canal a été défini" -#: assistant\commands\admin.py:1068 +#: assistant\commands\admin.py:1414 #, docstring msgid "Toggle this channel as an auto-response channel" msgstr "" -#: assistant\commands\admin.py:1071 +#: assistant\commands\admin.py:1417 msgid "This channel is already set as the assistant channel!" msgstr "" -#: assistant\commands\admin.py:1074 +#: assistant\commands\admin.py:1420 msgid "I will no longer auto-respond to messages in this channel!" msgstr "" -#: assistant\commands\admin.py:1077 +#: assistant\commands\admin.py:1423 msgid "I will now auto-respond to messages in this channel!" msgstr "" -#: assistant\commands\admin.py:1082 +#: assistant\commands\admin.py:1428 #, docstring msgid "Toggle allowing per-conversation system prompt overriding" msgstr "" -#: assistant\commands\admin.py:1086 +#: assistant\commands\admin.py:1432 msgid "System prompt overriding **Disabled**, users cannot set per-convo system prompts" msgstr "" -#: assistant\commands\admin.py:1089 +#: assistant\commands\admin.py:1435 msgid "System prompt overriding **Enabled**, users can now set per-convo system prompts" msgstr "" -#: assistant\commands\admin.py:1094 +#: assistant\commands\admin.py:1440 #, docstring msgid "Toggle the assistant on or off" msgstr "Activer ou désactiver l'assistant" -#: assistant\commands\admin.py:1098 +#: assistant\commands\admin.py:1444 msgid "The assistant is now **Disabled**" msgstr "L'assistant est maintenant **Désactivé**" -#: assistant\commands\admin.py:1101 +#: assistant\commands\admin.py:1447 msgid "The assistant is now **Enabled**" msgstr "L'assistant est maintenant **activé**" -#: assistant\commands\admin.py:1106 +#: assistant\commands\admin.py:1452 #, docstring msgid "Toggle the draw command on or off" msgstr "" -#: assistant\commands\admin.py:1110 +#: assistant\commands\admin.py:1456 msgid "The draw command is now **Disabled**" msgstr "" -#: assistant\commands\admin.py:1113 +#: assistant\commands\admin.py:1459 msgid "The draw command is now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1118 +#: assistant\commands\admin.py:1464 #, docstring msgid "Toggle the auto-answer feature on or off" msgstr "" -#: assistant\commands\admin.py:1122 +#: assistant\commands\admin.py:1468 msgid "Auto-answer has been **Disabled**" msgstr "" -#: assistant\commands\admin.py:1125 +#: assistant\commands\admin.py:1471 msgid "Auto-answer has been **Enabled**" msgstr "" -#: assistant\commands\admin.py:1130 +#: assistant\commands\admin.py:1476 #, docstring msgid "Set the auto-answer threshold for the bot" msgstr "" -#: assistant\commands\admin.py:1133 +#: assistant\commands\admin.py:1479 msgid "Auto-answer threshold has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1140 +#: assistant\commands\admin.py:1488 #, docstring msgid "Ignore a channel for auto-answer" msgstr "" -#: assistant\commands\admin.py:1151 +#: assistant\commands\admin.py:1499 msgid "Auto-answer will no longer ignore {}" msgstr "" -#: assistant\commands\admin.py:1154 assistant\commands\admin.py:1321 +#: assistant\commands\admin.py:1502 assistant\commands\admin.py:1670 msgid "Channel not found!" msgstr "" -#: assistant\commands\admin.py:1156 +#: assistant\commands\admin.py:1504 msgid "Auto-answer will now ignore {}" msgstr "" -#: assistant\commands\admin.py:1161 +#: assistant\commands\admin.py:1509 #, docstring msgid "Set the model used for auto-answer" msgstr "" -#: assistant\commands\admin.py:1168 +#: assistant\commands\admin.py:1517 msgid "Configured auto-answer model" msgstr "" -#: assistant\commands\admin.py:1171 assistant\commands\admin.py:1791 -#: assistant\commands\admin.py:1832 assistant\commands\admin.py:1834 -#: assistant\commands\admin.py:2903 +#: assistant\commands\admin.py:1520 assistant\commands\admin.py:2139 +#: assistant\commands\admin.py:2213 assistant\commands\admin.py:2215 +#: assistant\commands\admin.py:3978 msgid "Valid models are:\n" "{}" msgstr "Les modèles valables sont les suivants :\n" "{}" -#: assistant\commands\admin.py:1173 assistant\commands\admin.py:3374 +#: assistant\commands\admin.py:1522 assistant\commands\admin.py:4489 msgid "Invalid model, valid models are: {}" msgstr "" -#: assistant\commands\admin.py:1175 +#: assistant\commands\admin.py:1524 msgid "Auto-answer model has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1186 +#: assistant\commands\admin.py:1533 #, docstring msgid "Toggle the trigger word feature on or off" msgstr "" -#: assistant\commands\admin.py:1190 +#: assistant\commands\admin.py:1537 msgid "Trigger word feature has been **Disabled**" msgstr "" -#: assistant\commands\admin.py:1193 +#: assistant\commands\admin.py:1540 msgid "Trigger word feature has been **Enabled**" msgstr "" -#: assistant\commands\admin.py:1198 +#: assistant\commands\admin.py:1545 #, docstring msgid "\n" " Add or remove a trigger phrase (supports regex)\n\n" @@ -1001,23 +1217,23 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1212 +#: assistant\commands\admin.py:1559 msgid "That regex pattern is invalid!" msgstr "" -#: assistant\commands\admin.py:1217 +#: assistant\commands\admin.py:1564 msgid "⚠️ Warning: `{}` is a very broad pattern that may match most messages!" msgstr "" -#: assistant\commands\admin.py:1222 +#: assistant\commands\admin.py:1569 msgid "Trigger phrase `{}` has been **Removed**" msgstr "" -#: assistant\commands\admin.py:1225 +#: assistant\commands\admin.py:1572 msgid "Trigger phrase `{}` has been **Added**" msgstr "" -#: assistant\commands\admin.py:1230 +#: assistant\commands\admin.py:1577 #, docstring msgid "\n" " Set the prompt to use when a trigger phrase is matched\n\n" @@ -1059,100 +1275,66 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1287 +#: assistant\commands\admin.py:1634 msgid "The trigger prompt has been removed!" msgstr "" -#: assistant\commands\admin.py:1290 +#: assistant\commands\admin.py:1637 msgid "Please include a trigger prompt or .txt file!\n" "Use `{}` to view details for this command" msgstr "" -#: assistant\commands\admin.py:1296 +#: assistant\commands\admin.py:1643 msgid "The trigger prompt has been overwritten!" msgstr "" -#: assistant\commands\admin.py:1299 +#: assistant\commands\admin.py:1646 msgid "Trigger prompt has been set!" msgstr "" -#: assistant\commands\admin.py:1307 +#: assistant\commands\admin.py:1656 #, docstring msgid "Ignore a channel or category for trigger phrases" msgstr "" -#: assistant\commands\admin.py:1318 +#: assistant\commands\admin.py:1667 msgid "Trigger phrases will no longer ignore {}" msgstr "" -#: assistant\commands\admin.py:1323 +#: assistant\commands\admin.py:1672 msgid "Trigger phrases will now ignore {}" msgstr "" -#: assistant\commands\admin.py:1329 +#: assistant\commands\admin.py:1678 #, docstring msgid "View configured trigger phrases" msgstr "" -#: assistant\commands\admin.py:1332 +#: assistant\commands\admin.py:1681 msgid "No trigger phrases configured!" msgstr "" -#: assistant\commands\admin.py:1335 +#: assistant\commands\admin.py:1684 msgid "Trigger Phrases" msgstr "" -#: assistant\commands\admin.py:1336 +#: assistant\commands\admin.py:1685 msgid "The following phrases will trigger a response:\n" msgstr "" -#: assistant\commands\admin.py:1342 +#: assistant\commands\admin.py:1691 msgid "Patterns" msgstr "" -#: assistant\commands\admin.py:1345 +#: assistant\commands\admin.py:1694 msgid "Status" msgstr "" -#: assistant\commands\admin.py:1352 +#: assistant\commands\admin.py:1701 msgid "Ignored Channels" msgstr "" -#: assistant\commands\admin.py:1358 -#, docstring -msgid "Switch vision resolution between high and low for relevant GPT-4-Turbo models" -msgstr "" - -#: assistant\commands\admin.py:1362 -msgid "Vision resolution has been set to **Low**" -msgstr "" - -#: assistant\commands\admin.py:1365 -msgid "Vision resolution has been set to **High**" -msgstr "" - -#: assistant\commands\admin.py:1368 -msgid "Vision resolution has been set to **Auto**" -msgstr "" - -#: assistant\commands\admin.py:1373 -#, docstring -msgid "Switch reasoning effort between none, minimal, low, medium, high, and xhigh\n\n" -" Not all models support every level. Unsupported levels are automatically mapped to the closest supported value.\n" -" - **none**: No reasoning (gpt-5.4 only, skipped for other models)\n" -" - **minimal**: Minimal reasoning (gpt-5 only, mapped to low for o-series)\n" -" - **low**: Low reasoning effort\n" -" - **medium**: Medium reasoning effort\n" -" - **high**: High reasoning effort\n" -" - **xhigh**: Maximum reasoning (gpt-5.4 only, mapped to high for other models)\n" -" " -msgstr "" - -#: assistant\commands\admin.py:1390 -msgid "Reasoning effort has been set to **{}**" -msgstr "" - -#: assistant\commands\admin.py:1395 +#: assistant\commands\admin.py:1707 #, docstring msgid "\n" " Set the prefix used to detect model thinking blocks\n\n" @@ -1161,29 +1343,29 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1417 +#: assistant\commands\admin.py:1729 msgid "Think tag prefix is already set to the default value." msgstr "" -#: assistant\commands\admin.py:1420 +#: assistant\commands\admin.py:1732 msgid "Think tag prefix reset to default:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1426 +#: assistant\commands\admin.py:1738 msgid "Think tag prefix cannot be empty." msgstr "" -#: assistant\commands\admin.py:1429 +#: assistant\commands\admin.py:1741 msgid "Think tag prefix is already set to that value." msgstr "" -#: assistant\commands\admin.py:1432 +#: assistant\commands\admin.py:1744 msgid "Think tag prefix has been set to:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1437 +#: assistant\commands\admin.py:1749 #, docstring msgid "\n" " Set the suffix used to detect model thinking blocks\n\n" @@ -1192,68 +1374,68 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1459 +#: assistant\commands\admin.py:1771 msgid "Think tag suffix is already set to the default value." msgstr "" -#: assistant\commands\admin.py:1462 +#: assistant\commands\admin.py:1774 msgid "Think tag suffix reset to default:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1468 +#: assistant\commands\admin.py:1780 msgid "Think tag suffix cannot be empty." msgstr "" -#: assistant\commands\admin.py:1471 +#: assistant\commands\admin.py:1783 msgid "Think tag suffix is already set to that value." msgstr "" -#: assistant\commands\admin.py:1474 +#: assistant\commands\admin.py:1786 msgid "Think tag suffix has been set to:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1479 +#: assistant\commands\admin.py:1791 #, docstring msgid "Toggle whether questions need to end with **__?__**" msgstr "Basculer si les questions doivent se terminer avec **__?__**" -#: assistant\commands\admin.py:1483 +#: assistant\commands\admin.py:1795 msgid "Questions will be answered regardless of if they end with **?**" msgstr "Les questions seront répondues indépendamment de la présence ou non du point d'interrogation **?**" -#: assistant\commands\admin.py:1486 +#: assistant\commands\admin.py:1798 msgid "Questions must end in **?** to be answered" msgstr "Les questions doivent se terminer par **?** pour obtenir une réponse" -#: assistant\commands\admin.py:1491 +#: assistant\commands\admin.py:1803 #, docstring msgid "Toggle whether the bot responds to mentions in any channel" msgstr "" -#: assistant\commands\admin.py:1495 +#: assistant\commands\admin.py:1807 msgid "The bot will no longer respond to mentions" msgstr "" -#: assistant\commands\admin.py:1498 +#: assistant\commands\admin.py:1810 msgid "The bot will now respond to mentions" msgstr "" -#: assistant\commands\admin.py:1503 +#: assistant\commands\admin.py:1815 #, docstring msgid "Toggle whether to ping the user on replies" msgstr "Indiquer s'il faut envoyer un ping à l'utilisateur en cas de réponse" -#: assistant\commands\admin.py:1507 +#: assistant\commands\admin.py:1819 msgid "Mentions are now **Disabled**" msgstr "Les mentions sont maintenant **Désactivées**" -#: assistant\commands\admin.py:1510 +#: assistant\commands\admin.py:1822 msgid "Mentions are now **Enabled**" msgstr "Les mentions sont maintenant **activées**" -#: assistant\commands\admin.py:1515 +#: assistant\commands\admin.py:1827 #, docstring msgid "\n" " Toggle collaborative conversations\n\n" @@ -1261,44 +1443,39 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1523 +#: assistant\commands\admin.py:1835 msgid "Collaborative conversations are now **Disabled**" msgstr "" -#: assistant\commands\admin.py:1526 +#: assistant\commands\admin.py:1838 msgid "Collaborative conversations are now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1556 +#: assistant\commands\admin.py:1843 #, docstring msgid "\n" " Set the max messages for a conversation\n\n" " Conversation retention is cached and gets reset when the bot restarts or the cog reloads.\n\n" " Regardless of this number, the initial prompt and internal system message are always included,\n" " this only applies to any conversation between the user and bot after that.\n\n" -" Set to 0 to disable conversation retention\n\n" +" Set to 0 for unlimited conversation retention\n\n" " **Note:** *actual message count may exceed the max retention during an API call*\n" " " -msgstr "\n" -"Définir le nombre maximum de messages pour une conversation\n" -"La rétention des conversations est mise en cache et réinitialisée lorsque le bot redémarre ou que le cog se recharge.\n" -"Indépendamment de ce nombre, l'invite initiale et le message interne du système sont toujours inclus, cela s'applique uniquement à toute conversation entre l'utilisateur et le bot après cela.\n" -"Mettre à 0 pour désactiver la conservation des conversations\n" -"**Note :** *le nombre réel de messages peut dépasser la rétention maximale lors d'un appel API* " +msgstr "" -#: assistant\commands\admin.py:1569 assistant\commands\admin.py:2981 +#: assistant\commands\admin.py:1856 assistant\commands\admin.py:4060 msgid "Max retention needs to be at least 0 or higher" msgstr "La rétention maximale doit être au moins égale à 0 ou supérieure" -#: assistant\commands\admin.py:1573 -msgid "Conversation retention has been disabled" -msgstr "La conservation des conversations a été désactivée" +#: assistant\commands\admin.py:1860 +msgid "Message retention is now **unlimited**" +msgstr "" -#: assistant\commands\admin.py:1575 +#: assistant\commands\admin.py:1862 msgid "Conversations can now retain up to **{}** messages" msgstr "Les conversations peuvent désormais conserver jusqu'à **{}** messages" -#: assistant\commands\admin.py:1580 +#: assistant\commands\admin.py:1867 #, docstring msgid "\n" " Set the conversation expiration time\n\n" @@ -1312,19 +1489,60 @@ msgstr "\n" "cela s'applique uniquement à toute conversation entre l'utilisateur et le bot après cela.\n" "Définissez-le à 0 pour stocker les conversations indéfiniment ou jusqu'à ce que le bot redémarre ou que le cog soit rechargé " -#: assistant\commands\admin.py:1589 assistant\commands\admin.py:3004 +#: assistant\commands\admin.py:1876 assistant\commands\admin.py:4083 msgid "Max retention time needs to be at least 0 or higher" msgstr "Le temps de rétention maximal doit être au moins égal à 0 ou supérieur" -#: assistant\commands\admin.py:1593 +#: assistant\commands\admin.py:1880 msgid "Conversations will be stored until the bot restarts or the cog is reloaded" msgstr "Les conversations seront conservées jusqu'à ce que le robot redémarre ou que le cog soit rechargé" -#: assistant\commands\admin.py:1595 +#: assistant\commands\admin.py:1882 msgid "Conversations will be considered active for **{}** seconds" msgstr "Les conversations seront considérées comme actives pendant **{}** secondes" -#: assistant\commands\admin.py:1600 +#: assistant\commands\admin.py:1887 +#, docstring +msgid "\n" +" Set maximum tokens a convo can consume\n\n" +" Set to 0 for dynamic token usage\n\n" +" **Tips**\n" +" - Max tokens are a soft cap, sometimes messages can be a little over\n" +" - If you set max tokens too high the cog will auto-adjust to 100 less than the models natural cap\n" +" - Ideally set max to 500 less than that models maximum, to allow adequate responses\n\n" +" Using more than the model can handle will raise exceptions.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:1902 +msgid "The maximum amount of tokens sent in a payload will be {}.\n" +"*Note that models with token limits lower than this will still be trimmed*" +msgstr "La quantité maximale de jetons envoyés dans une charge utile sera {}.\n" +"*Notez que les modèles avec des limites de jetons inférieures à celle-ci seront tout de même tronqués*" + +#: assistant\commands\admin.py:1907 +msgid "The maximum amount of tokens sent in a payload will be dynamic" +msgstr "" + +#: assistant\commands\admin.py:1913 +#, docstring +msgid "\n" +" Set the max response tokens the model can respond with\n\n" +" Set to 0 for response tokens to be dynamic\n" +" " +msgstr "\n" +"Définissez le nombre maximum de jetons de réponse auxquels le modèle peut répondre.\n\n" +"Définissez-le à 0 pour que les jetons de réponse soient dynamiques " + +#: assistant\commands\admin.py:1921 +msgid "The maximum amount of tokens in the models responses will be {}." +msgstr "La quantité maximale de jetons dans les réponses du modèle sera {}." + +#: assistant\commands\admin.py:1923 +msgid "Response tokens will now be dynamic" +msgstr "Les jetons de réponse seront désormais dynamiques" + +#: assistant\commands\admin.py:1929 #, docstring msgid "\n" " Set the temperature for the model (0.0 - 2.0)\n" @@ -1333,15 +1551,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1607 +#: assistant\commands\admin.py:1936 msgid "Temperature must be between **0.0** and **2.0**" msgstr "La température doit être comprise entre **0,0** et **2,0**" -#: assistant\commands\admin.py:1612 +#: assistant\commands\admin.py:1941 msgid "Temperature has been set to **{}**" msgstr "La température a été réglée sur **{}**" -#: assistant\commands\admin.py:1616 +#: assistant\commands\admin.py:1945 #, docstring msgid "\n" " Set the frequency penalty for the model (-2.0 to 2.0)\n" @@ -1350,15 +1568,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1623 +#: assistant\commands\admin.py:1952 msgid "Frequency penalty must be between **-2.0** and **2.0**" msgstr "" -#: assistant\commands\admin.py:1628 +#: assistant\commands\admin.py:1957 msgid "Frequency penalty has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1632 +#: assistant\commands\admin.py:1961 #, docstring msgid "\n" " Set the presence penalty for the model (-2.0 to 2.0)\n" @@ -1367,15 +1585,49 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1639 +#: assistant\commands\admin.py:1968 msgid "Presence penalty must be between **-2.0** and **2.0**" msgstr "" -#: assistant\commands\admin.py:1644 +#: assistant\commands\admin.py:1973 msgid "Presence penalty has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1648 +#: assistant\commands\admin.py:1977 +#, docstring +msgid "Switch vision resolution between high and low for relevant GPT-4-Turbo models" +msgstr "" + +#: assistant\commands\admin.py:1981 +msgid "Vision resolution has been set to **Low**" +msgstr "" + +#: assistant\commands\admin.py:1984 +msgid "Vision resolution has been set to **High**" +msgstr "" + +#: assistant\commands\admin.py:1987 +msgid "Vision resolution has been set to **Auto**" +msgstr "" + +#: assistant\commands\admin.py:1992 +#, docstring +msgid "Switch reasoning effort between none, minimal, low, medium, high, and xhigh\n\n" +" Not all models support every level. Unsupported levels are automatically mapped to the closest supported value.\n" +" - **none**: No reasoning (gpt-5.4 only, skipped for other models)\n" +" - **minimal**: Minimal reasoning (gpt-5 only, mapped to low for o-series)\n" +" - **low**: Low reasoning effort\n" +" - **medium**: Medium reasoning effort\n" +" - **high**: High reasoning effort\n" +" - **xhigh**: Maximum reasoning (gpt-5.4 only, mapped to high for other models)\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2009 +msgid "Reasoning effort has been set to **{}**" +msgstr "" + +#: assistant\commands\admin.py:2014 #, docstring msgid "\n" " Make the model more deterministic by setting a seed for the model.\n" @@ -1384,15 +1636,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1655 +#: assistant\commands\admin.py:2021 msgid "Seed must be a positive integer" msgstr "" -#: assistant\commands\admin.py:1659 +#: assistant\commands\admin.py:2025 msgid "The seed has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1663 +#: assistant\commands\admin.py:2032 #, docstring msgid "\n" " Refresh embedding weights\n\n" @@ -1401,47 +1653,43 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1676 +#: assistant\commands\admin.py:2045 msgid "{} embeddings have been updated" msgstr "{} ont été mis à jour" -#: assistant\commands\admin.py:1678 +#: assistant\commands\admin.py:2047 msgid "No embeddings needed to be refreshed" msgstr "Aucun encastrement n'a besoin d'être rafraîchi" -#: assistant\commands\admin.py:1682 +#: assistant\commands\admin.py:2051 #, docstring msgid "Toggle whether GPT can call functions" msgstr "" -#: assistant\commands\admin.py:1686 +#: assistant\commands\admin.py:2055 msgid "Assistant will not call functions" msgstr "L'assistant ne fera pas appel aux fonctions" -#: assistant\commands\admin.py:1689 +#: assistant\commands\admin.py:2058 msgid "Assistant will now call functions as needed" msgstr "Traduisez le texte suivant en français" -#: assistant\commands\admin.py:1694 +#: assistant\commands\admin.py:2063 #, docstring msgid "Set the maximum function calls allowed in a row\n\n" -" This sets how many times the model can call functions in a row\n\n" -" Only the following models can call functions at the moment\n" -" - gpt-4o-mini\n" -" - gpt-4o\n" -" - ect..\n" +" This sets how many times the model can call functions in a row\n" " " msgstr "" -#: assistant\commands\admin.py:1706 +#: assistant\commands\admin.py:2070 msgid "Function calls will not be used since recursion is 0" msgstr "Les appels de fonction ne seront pas utilisés puisque la récursivité est égale à 0" -#: assistant\commands\admin.py:1708 +#: assistant\commands\admin.py:2072 msgid "The model can now call various functions up to {} times before returning a response" msgstr "Le modèle peut désormais appeler diverses fonctions jusqu'à {} fois avant de renvoyer une réponse" -#: assistant\commands\admin.py:1714 +#: assistant\commands\admin.py:2078 #, docstring msgid "\n" " set min character length for questions\n\n" @@ -1451,88 +1699,64 @@ msgstr "\n" "fixer la longueur minimale des caractères pour les questions\n" "Fixer à 0 pour répondre à n'importe quoi " -#: assistant\commands\admin.py:1720 +#: assistant\commands\admin.py:2084 msgid "Minimum length needs to be at least 0 or higher" msgstr "La longueur minimale doit être au moins égale à 0 ou supérieure" -#: assistant\commands\admin.py:1724 +#: assistant\commands\admin.py:2088 msgid "{} will respond regardless of message length" msgstr "{} répondra quelle que soit la longueur du message" -#: assistant\commands\admin.py:1727 +#: assistant\commands\admin.py:2091 msgid "{} will respond to messages with more than **{}** characters" msgstr "{} répondra aux messages contenant plus de **{}** caractères" -#: assistant\commands\admin.py:1735 +#: assistant\commands\admin.py:2099 #, docstring msgid "\n" -" Set maximum tokens a convo can consume\n\n" -" Set to 0 for dynamic token usage\n\n" -" **Tips**\n" -" - Max tokens are a soft cap, sometimes messages can be a little over\n" -" - If you set max tokens too high the cog will auto-adjust to 100 less than the models natural cap\n" -" - Ideally set max to 500 less than that models maximum, to allow adequate responses\n\n" -" Using more than the model can handle will raise exceptions.\n" +" Set the chat model to use\n\n" +" Run without arguments to open an interactive picker that lists every\n" +" model your endpoint advertises, grouped by provider. The picker also\n" +" accepts manual entry - useful for router aliases like\n" +" `openrouter/auto` or `openrouter/free`.\n" " " msgstr "" -#: assistant\commands\admin.py:1750 -msgid "The maximum amount of tokens sent in a payload will be {}.\n" -"*Note that models with token limits lower than this will still be trimmed*" -msgstr "La quantité maximale de jetons envoyés dans une charge utile sera {}.\n" -"*Notez que les modèles avec des limites de jetons inférieures à celle-ci seront tout de même tronqués*" - -#: assistant\commands\admin.py:1755 -msgid "The maximum amount of tokens sent in a payload will be dynamic" -msgstr "" - -#: assistant\commands\admin.py:1761 -#, docstring -msgid "\n" -" Set the max response tokens the model can respond with\n\n" -" Set to 0 for response tokens to be dynamic\n" -" " -msgstr "\n" -"Définissez le nombre maximum de jetons de réponse auxquels le modèle peut répondre.\n\n" -"Définissez-le à 0 pour que les jetons de réponse soient dynamiques " - -#: assistant\commands\admin.py:1769 -msgid "The maximum amount of tokens in the models responses will be {}." -msgstr "La quantité maximale de jetons dans les réponses du modèle sera {}." - -#: assistant\commands\admin.py:1771 -msgid "Response tokens will now be dynamic" -msgstr "Les jetons de réponse seront désormais dynamiques" - -#: assistant\commands\admin.py:1777 -#, docstring -msgid "\n" -" Set the OpenAI model to use\n" -" " +#: assistant\commands\admin.py:2121 +msgid "Could not probe `{}` to discover available models. Try setting a model id manually, e.g. `{}assistant set model openrouter/auto`." msgstr "" -#: assistant\commands\admin.py:1798 assistant\commands\admin.py:2910 +#: assistant\commands\admin.py:2146 assistant\commands\admin.py:3985 msgid "Error: {}" msgstr "" -#: assistant\commands\admin.py:1802 +#: assistant\commands\admin.py:2150 msgid "The **{}** model will now be used" msgstr "Le modèle **{}** sera désormais utilisé" -#: assistant\commands\admin.py:1809 +#: assistant\commands\admin.py:2157 msgid "**Note**: Starting with `o1-2024-12-17`, reasoning models in the API will avoid generating responses with markdown formatting. To signal to the model when you do want markdown formatting in the response, include the string `Formatting re-enabled` on the first line of your system message." msgstr "" -#: assistant\commands\admin.py:1818 +#: assistant\commands\admin.py:2166 #, docstring -msgid "Set the OpenAI Embedding model to use" +msgid "\n" +" Set the embedding model to use\n\n" +" Run without arguments to open an interactive picker that lists\n" +" every embedding model your endpoint advertises, grouped by provider.\n" +" Embeddings use the same endpoint as chat.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2192 +msgid "Could not probe `{}` to discover available embedding models. Try setting an id manually, e.g. `{}assistant embed model text-embedding-3-small`." msgstr "" -#: assistant\commands\admin.py:1836 +#: assistant\commands\admin.py:2217 msgid "The **{}** model will now be used for embeddings" msgstr "" -#: assistant\commands\admin.py:1845 +#: assistant\commands\admin.py:2225 #, docstring msgid "\n" " Wipe saved embeddings for the assistant\n\n" @@ -1542,15 +1766,15 @@ msgstr "\n" "Supprimer les embeddings enregistrés pour l'assistant\n" "Cela supprimera toutes les données d'entraînement des embeddings enregistrées pour l'assistant " -#: assistant\commands\admin.py:1851 assistant\commands\admin.py:3257 +#: assistant\commands\admin.py:2231 assistant\commands\admin.py:4373 msgid "Not wiping embedding data" msgstr "Ne pas effacer les données d'intégration" -#: assistant\commands\admin.py:1855 +#: assistant\commands\admin.py:2235 msgid "All embedding data has been wiped!" msgstr "Toutes les données d'intégration ont été effacées !" -#: assistant\commands\admin.py:1860 +#: assistant\commands\admin.py:2240 #, docstring msgid "\n" " Wipe saved conversations for the assistant in this server\n\n" @@ -1560,15 +1784,15 @@ msgstr "\n" "Effacer les conversations enregistrées pour l'assistant sur ce serveur\n" "Cela supprimera toutes les conversations enregistrées pour l'assistant " -#: assistant\commands\admin.py:1866 assistant\commands\admin.py:3218 +#: assistant\commands\admin.py:2246 assistant\commands\admin.py:4334 msgid "Not wiping conversations" msgstr "Ne pas effacer les conversations" -#: assistant\commands\admin.py:1870 +#: assistant\commands\admin.py:2250 msgid "Conversations have been wiped in this server!" msgstr "Les conversations ont été effacées dans ce serveur !" -#: assistant\commands\admin.py:1875 +#: assistant\commands\admin.py:2255 #, docstring msgid "\n" " Set the embedding inclusion amout\n\n" @@ -1576,19 +1800,19 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1881 +#: assistant\commands\admin.py:2261 msgid "Top N must be between 0 and 10" msgstr "Top N doit être compris entre 0 et 10" -#: assistant\commands\admin.py:1885 +#: assistant\commands\admin.py:2265 msgid "Embeddings will not be pulled during conversations" msgstr "Les embeddings ne seront pas extraits pendant les conversations" -#: assistant\commands\admin.py:1887 +#: assistant\commands\admin.py:2267 msgid "Up to **{}** embeddings will be pulled for each interaction" msgstr "Jusqu'à **{}** embeddings seront extraits pour chaque interaction" -#: assistant\commands\admin.py:1892 +#: assistant\commands\admin.py:2272 #, docstring msgid "\n" " Set the minimum relatedness an embedding must be to include with the prompt\n\n" @@ -1602,32 +1826,32 @@ msgstr "\n" "Les questions sont converties en embeddings et comparées aux embeddings stockés afin d'en extraire les plus pertinents ; il s'agit du score dérivé de cette comparaison.\n" "**Conseil** : Plus vous vous rapprochez de 1, plus les résultats sont déterministes et précis, mais ne soyez pas *trop* strict ou il n'y aura pas de résultats " -#: assistant\commands\admin.py:1902 +#: assistant\commands\admin.py:2282 msgid "Minimum relatedness must be between 0 and 1" msgstr "La parenté minimale doit être comprise entre 0 et 1" -#: assistant\commands\admin.py:1905 +#: assistant\commands\admin.py:2285 msgid "Minimum relatedness has been set to **{}**" msgstr "La parenté minimale a été fixée à **{}**" -#: assistant\commands\admin.py:1910 +#: assistant\commands\admin.py:2290 #, docstring msgid "Remove certain words/phrases in the bot's responses" msgstr "Supprimer certains mots/phrases dans les réponses du robot" -#: assistant\commands\admin.py:1914 +#: assistant\commands\admin.py:2294 msgid "That regex is invalid" msgstr "Cette expression rationnelle n'est pas valide" -#: assistant\commands\admin.py:1918 +#: assistant\commands\admin.py:2298 msgid "`{}` has been **Removed** from the blacklist" msgstr "`{}` a été **supprimé** de la liste noire" -#: assistant\commands\admin.py:1921 +#: assistant\commands\admin.py:2301 msgid "`{}` has been **Added** to the blacklist" msgstr "`{}` a été **ajouté** à la liste noire" -#: assistant\commands\admin.py:1926 +#: assistant\commands\admin.py:2306 #, docstring msgid "\n" " Toggle whether failed regex blocks the assistant's reply\n\n" @@ -1637,15 +1861,15 @@ msgid "\n" msgstr "\n" "Certaines expressions rationnelles peuvent entraîner un [catastrophically backtracking](https://www.rexegg.com/regex-explosive-quantifiers.html). Le bot peut gérer cette situation en toute sécurité et continuera ou bloquera la réponse " -#: assistant\commands\admin.py:1935 +#: assistant\commands\admin.py:2315 msgid "If a regex blacklist fails, the bots reply will be blocked" msgstr "Si une liste noire de regex échoue, la réponse du robot sera bloquée" -#: assistant\commands\admin.py:1938 +#: assistant\commands\admin.py:2318 msgid "If a reges blacklist fails, the bot will still reply" msgstr "Si une liste noire de reges échoue, le bot répondra quand même" -#: assistant\commands\admin.py:1943 +#: assistant\commands\admin.py:2323 #, docstring msgid "\n" " Toggle question mode\n\n" @@ -1653,15 +1877,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1951 +#: assistant\commands\admin.py:2331 msgid "Question mode is now **Disabled**" msgstr "" -#: assistant\commands\admin.py:1954 +#: assistant\commands\admin.py:2334 msgid "Question mode is now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1959 +#: assistant\commands\admin.py:2339 #, docstring msgid "Import embeddings to use with the assistant\n\n" " Args:\n" @@ -1673,357 +1897,975 @@ msgstr "Importez des embeddings à utiliser avec l'assistant\n\n" " overwrite (bool): écraser les embeddings avec les noms d'entrée existants\n" " Cela permettra également de lire les fichiers Excel " -#: assistant\commands\admin.py:1972 +#: assistant\commands\admin.py:2352 msgid "You must attach **.csv** files to this command or reference a message that has them!" msgstr "Vous devez joindre des fichiers **.csv** à cette commande ou faire référence à un message qui les contient !" -#: assistant\commands\admin.py:1985 assistant\commands\admin.py:2062 -#: assistant\commands\admin.py:2122 +#: assistant\commands\admin.py:2365 assistant\commands\admin.py:2442 +#: assistant\commands\admin.py:2505 msgid "Error reading **{}**: {}" msgstr "Erreur de lecture **{}** : {}" -#: assistant\commands\admin.py:1990 +#: assistant\commands\admin.py:2370 msgid "**{}** contains invalid formatting, columns must be " msgstr "**{}** contient un formatage non valide, les colonnes doivent être " -#: assistant\commands\admin.py:1998 +#: assistant\commands\admin.py:2378 msgid "There are no valid files to import!" msgstr "Il n'y a pas de fichiers valides à importer !" -#: assistant\commands\admin.py:2000 assistant\commands\admin.py:2137 +#: assistant\commands\admin.py:2380 assistant\commands\admin.py:2520 msgid "Processing the following files in the background\n" "{}" msgstr "Traitement des fichiers suivants en arrière-plan {}" -#: assistant\commands\admin.py:2014 assistant\commands\admin.py:2148 +#: assistant\commands\admin.py:2394 assistant\commands\admin.py:2531 msgid "processing" msgstr "traitement" -#: assistant\commands\admin.py:2016 assistant\commands\admin.py:2150 +#: assistant\commands\admin.py:2396 assistant\commands\admin.py:2533 msgid "overwriting" msgstr "écrasement" -#: assistant\commands\admin.py:2024 assistant\commands\admin.py:2158 +#: assistant\commands\admin.py:2404 assistant\commands\admin.py:2541 msgid "{}\n" "`Currently {}: `**{}** ({}/{})" msgstr "{}\n" "`Actuellement {}: `**{}** ({}/{})" -#: assistant\commands\admin.py:2030 assistant\commands\admin.py:2165 +#: assistant\commands\admin.py:2410 assistant\commands\admin.py:2551 msgid "Failed to process embedding: `{}`" msgstr "Échec du traitement de l'intégration : `{}`" -#: assistant\commands\admin.py:2035 assistant\commands\admin.py:2178 -#: assistant\commands\admin.py:2182 -msgid "{}\n" -"**COMPLETE**" -msgstr "{}" +#: assistant\commands\admin.py:2415 assistant\commands\admin.py:2564 +#: assistant\commands\admin.py:2568 +msgid "{}\n" +"**COMPLETE**" +msgstr "{}" + +#: assistant\commands\admin.py:2416 assistant\commands\admin.py:2565 +msgid "Successfully imported {} embeddings!" +msgstr "Importation réussie de {} embeddings !" + +#: assistant\commands\admin.py:2421 +#, docstring +msgid "Import embeddings to use with the assistant\n\n" +" Args:\n" +" overwrite (bool): overwrite embeddings with existing entry names\n" +" " +msgstr "Importez les embeddings à utiliser avec l'assistant\n\n" +" Args:\n" +" overwrite (bool): écraser les embeddings avec les noms d'entrée existants " + +#: assistant\commands\admin.py:2430 assistant\commands\admin.py:4318 +msgid "You must attach **.json** files to this command or reference a message that has them!" +msgstr "Vous devez joindre des fichiers **.json** à cette commande ou faire référence à un message qui les contient !" + +#: assistant\commands\admin.py:2469 +msgid "Failed to import **{}** because it contains invalid formatting!" +msgstr "L'importation de **{}** a échoué car elle contient un formatage non valide !" + +#: assistant\commands\admin.py:2474 +msgid "Imported the following files: `{}`\n" +"{} embeddings imported" +msgstr "Importé les fichiers suivants : `{}`\n" +"{} embeddings importés" + +#: assistant\commands\admin.py:2482 +#, docstring +msgid "Import embeddings from an .xlsx file\n\n" +" Args:\n" +" overwrite (bool): overwrite embeddings with existing entry names\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2491 +msgid "You must attach **.xlsx** files to this command or reference a message that has them!" +msgstr "" + +#: assistant\commands\admin.py:2512 +msgid "{} is invalid! Must contain the following columns: {}" +msgstr "" + +#: assistant\commands\admin.py:2569 +msgid "No embeddings needed to be updated!" +msgstr "" + +#: assistant\commands\admin.py:2574 +#, docstring +msgid "\n" +" Export embeddings to an .xlsx file\n\n" +" **Note:** csv exports do not include the embedding values\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2581 assistant\commands\admin.py:2627 +#: assistant\commands\admin.py:2671 +msgid "There are no embeddings to export!" +msgstr "Il n'y a pas d'embeddings à exporter !" + +#: assistant\commands\admin.py:2621 +#, docstring +msgid "Export embeddings to a .csv file\n\n" +" **Note:** csv exports do not include the embedding values\n" +" " +msgstr "Exporter les encastrements dans un fichier .csv\n\n" +"**Note :** les exportations csv ne comprennent pas les valeurs d'intégration " + +#: assistant\commands\admin.py:2640 assistant\commands\admin.py:2660 +#: assistant\commands\admin.py:2679 assistant\commands\admin.py:2699 +#: assistant\commands\admin.py:4304 +msgid "Here is your embeddings export!" +msgstr "Voici votre exportation d'embeddings !" + +#: assistant\commands\admin.py:2643 assistant\commands\admin.py:2682 +#: assistant\commands\admin.py:4286 +msgid "File too large, attempting to compress..." +msgstr "Fichier trop volumineux, tentative de compression..." + +#: assistant\commands\admin.py:2663 assistant\commands\admin.py:2702 +#: assistant\commands\admin.py:4307 +msgid "File is still too large even with compression!" +msgstr "Le fichier est encore trop volumineux même avec la compression !" + +#: assistant\commands\admin.py:2668 +#, docstring +msgid "Export embeddings to a json file" +msgstr "Exporter les embeddings dans un fichier json" + +#: assistant\commands\admin.py:2710 +#, docstring +msgid "\n" +" Manage embeddings for training\n\n" +" Embeddings are used to optimize training of the assistant and minimize token usage.\n\n" +" By using this the bot can store vast amounts of contextual information without going over the token limit.\n\n" +" **Note**\n" +" You can enter a search query with this command to bring up the menu and go directly to that embedding selection.\n" +" " +msgstr "\n" +"Gérer les embeddings pour l'entraînement\n" +"Les embeddings sont utilisés pour optimiser l'entraînement de l'assistant et minimiser l'utilisation des jetons.\n" +"En utilisant cela, le bot peut stocker de vastes quantités d'informations contextuelles sans dépasser la limite de jetons.\n" +"**Note**\n" +"Vous pouvez entrer une requête de recherche avec cette commande pour afficher le menu et accéder directement à la sélection de l'embedding " + +#: assistant\commands\admin.py:2760 +#, docstring +msgid "\n" +" Add custom function calls for Assistant to use\n\n" +" **READ**\n" +" - [Function Call Docs](https://platform.openai.com/docs/guides/gpt/function-calling)\n" +" - [OpenAI Cookbook](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_call_functions_with_chat_models.ipynb)\n" +" - [JSON Schema Reference](https://json-schema.org/understanding-json-schema/)\n\n" +" The following objects are passed by default as keyword arguments.\n" +" - **user**: the user currently chatting with the bot (discord.Member)\n" +" - **channel**: channel the user is chatting in (TextChannel|Thread|ForumChannel)\n" +" - **guild**: current guild (discord.Guild)\n" +" - **bot**: the bot object (Red)\n" +" - **conf**: the config model for Assistant (GuildSettings)\n" +" - All functions **MUST** include `*args, **kwargs` in the params and return a string\n" +" ```python\n" +" # Can be either sync or async\n" +" async def func(*args, **kwargs) -> str:\n" +" ```\n" +" Only bot owner can manage this, guild owners can see descriptions but not code\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2800 +#, docstring +msgid "List custom prompt context variables registered by other cogs." +msgstr "" + +#: assistant\commands\admin.py:2802 +msgid "3rd party docs: {}" +msgstr "" + +#: assistant\commands\admin.py:2804 +msgid "No custom context variables have been registered yet!\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:2818 +msgid "Custom Variables" +msgstr "" + +#: assistant\commands\admin.py:2823 +msgid "Page {}/{} | {} variables" +msgstr "" + +#: assistant\commands\admin.py:2836 +#, docstring +msgid "\n" +" List all available functions and their enabled/disabled status\n\n" +" This provides a quick overview of all custom functions and 3rd party\n" +" registered functions without having to navigate through the full menu.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2849 assistant\commands\admin.py:3142 +#: assistant\commands\admin.py:3198 assistant\commands\admin.py:3295 +msgid "No functions have been registered yet!" +msgstr "" + +#: assistant\commands\admin.py:2876 +msgid "Function List" +msgstr "" + +#: assistant\commands\admin.py:2881 +msgid "Page {}/{} | {} enabled, {} disabled" +msgstr "" + +#: assistant\commands\admin.py:2897 +#, docstring +msgid "Open the mobile-friendly AI tools manager." +msgstr "" + +#: assistant\commands\admin.py:2905 +#, docstring +msgid "Open the floating context block manager.\n\n" +" Toggled variables are appended to a trailing payload-only user\n" +" message after conversation history. Because that message rides\n" +" after the cached prefix, putting dynamic (per-request) values\n" +" there keeps the prompt prefix stable across requests so\n" +" provider-side prompt caching can hit.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2920 +#, docstring +msgid "Show prompt-cache stats from the most recent API call." +msgstr "" + +#: assistant\commands\admin.py:2924 +msgid "No cache stats yet - make a request first." +msgstr "" + +#: assistant\commands\admin.py:2928 +msgid "Unknown" +msgstr "" + +#: assistant\commands\admin.py:2932 +msgid "Last API call: **{cached}**/**{total}** prompt tokens cached ({pct:.0f}%) · **{write}** cache-write tokens · model `{model}`" +msgstr "" + +#: assistant\commands\admin.py:2948 +msgid "\n" +"💡 This model requires at least **{min_tokens}** prompt tokens before the provider will cache. Your prompt was only **{total}** tokens - below the threshold, so no cache write or read occurred. A longer system prompt, more conversation history, or enabling variables in the `[p]floatingcontext` block will push it over." +msgstr "" + +#: assistant\commands\admin.py:2963 +msgid "\n" +"ℹ️ This provider uses automatic prompt caching. A **0** cache-write count does not necessarily mean caching is disabled, because some automatic-cache providers do not charge for or clearly expose cache writes. The more useful signal is whether similar follow-up turns start showing non-zero cached tokens. Also note that the relevant threshold is the repeated stable prefix, not the full prompt length, so a large request can still miss if most of its tokens are in the changing tail of the payload." +msgstr "" + +#: assistant\commands\admin.py:2978 +msgid "\n" +"ℹ️ `gpt-oss` is a reasoning model running over Chat Completions. Cache reuse can be weaker than on non-reasoning chat models because not all reasoning state is preserved between turns." +msgstr "" + +#: assistant\commands\admin.py:2988 +msgid "\n" +"⚠️ **Cache writes occurred but no reads.** This means the provider cached your prompt prefix, but the next request didn't match it - the prefix changed between calls. Common causes include dynamic variables like `{{time}}`, `{{date}}`, or `{{username}}` being substituted into your prompt prefix, per-turn context being injected before the cacheable tail, or tool definitions changing between calls. Use `[p]floatingcontext` to move dynamic context out of the prompt prefix." +msgstr "" + +#: assistant\commands\admin.py:3004 +#, docstring +msgid "Enable OpenRouter response caching (Mode A)." +msgstr "" + +#: assistant\commands\admin.py:3008 +msgid "OpenRouter response caching **enabled** (TTL: {}s)." +msgstr "" + +#: assistant\commands\admin.py:3012 +#, docstring +msgid "Disable OpenRouter response caching (Mode A)." +msgstr "" + +#: assistant\commands\admin.py:3016 +msgid "OpenRouter response caching **disabled**." +msgstr "" + +#: assistant\commands\admin.py:3020 +#, docstring +msgid "Set the OpenRouter response cache TTL in seconds (1–86400)." +msgstr "" + +#: assistant\commands\admin.py:3022 +msgid "TTL must be between 1 and 86400 seconds (24 hours)." +msgstr "" + +#: assistant\commands\admin.py:3026 +msgid "OpenRouter response cache TTL set to **{}** seconds." +msgstr "" + +#: assistant\commands\admin.py:3030 +#, docstring +msgid "Set the OpenRouter provider prompt cache TTL.\n\n" +" Choices: `off`, `5m`, `1h`. Applies to Anthropic / Gemini / Qwen\n" +" models routed via OpenRouter.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3037 +msgid "Mode must be one of: `off`, `5m`, `1h`." +msgstr "" + +#: assistant\commands\admin.py:3041 +msgid "OpenRouter provider prompt cache set to **{}**." +msgstr "" + +#: assistant\commands\admin.py:3050 +#, docstring +msgid "Configure OpenRouter provider routing and model slug preferences." +msgstr "" + +#: assistant\commands\admin.py:3055 +#, docstring +msgid "Show current OpenRouter provider routing settings." +msgstr "" + +#: assistant\commands\admin.py:3059 +msgid "not set" +msgstr "" + +#: assistant\commands\admin.py:3062 +msgid "not set (OR default)" +msgstr "" + +#: assistant\commands\admin.py:3064 +msgid "OpenRouter Provider Settings" +msgstr "" + +#: assistant\commands\admin.py:3065 +msgid "Model suffix" +msgstr "" + +#: assistant\commands\admin.py:3066 +msgid "Allow fallbacks" +msgstr "" + +#: assistant\commands\admin.py:3067 +msgid "Provider order" +msgstr "" + +#: assistant\commands\admin.py:3068 +msgid "Tip: `providers Fireworks` + `fallbacks false` hard-pins to that provider." +msgstr "" + +#: assistant\commands\admin.py:3073 +#, docstring +msgid "Set a guild-wide model slug suffix applied to every OpenRouter request.\n\n" +" Valid values: `:nitro` (throughput priority), `:floor` (price priority),\n" +" `:extended`, `clear` (remove suffix).\n" +" The suffix is appended after model resolution and replaces any per-model suffix.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3083 +msgid "OpenRouter model suffix cleared." +msgstr "" + +#: assistant\commands\admin.py:3086 +msgid "Invalid suffix `{}`. Valid: {}." +msgstr "" + +#: assistant\commands\admin.py:3090 +msgid "OpenRouter model suffix set to `{}`." +msgstr "" + +#: assistant\commands\admin.py:3094 +#, docstring +msgid "Set the ordered list of providers OpenRouter should use (space-separated).\n\n" +" Pass `clear` to reset. Combined with `fallbacks false` this hard-pins routing\n" +" to only the listed providers in order.\n" +" Example: `providers Fireworks Together`\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3104 +msgid "OpenRouter provider list cleared." +msgstr "" + +#: assistant\commands\admin.py:3108 +msgid "OpenRouter will try providers in order: {}." +msgstr "" + +#: assistant\commands\admin.py:3113 +#, docstring +msgid "Set whether OpenRouter may fall back to other providers.\n\n" +" Values: `true`, `false`, `clear` (restore OR default which is true).\n" +" Set to `false` with `providers` to hard-pin routing to those providers only.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3123 +msgid "OpenRouter fallbacks reset to OR default (enabled)." +msgstr "" + +#: assistant\commands\admin.py:3125 +msgid "Value must be `true`, `false`, or `clear`." +msgstr "" + +#: assistant\commands\admin.py:3128 +msgid "OpenRouter fallbacks set to `{}`." +msgstr "" + +#: assistant\commands\admin.py:3135 +#, docstring +msgid "List tool categories and their current enabled state." +msgstr "" + +#: assistant\commands\admin.py:3161 +msgid "Tool Categories" +msgstr "" + +#: assistant\commands\admin.py:3166 +msgid "Page {}/{} | {} enabled of {} total" +msgstr "" + +#: assistant\commands\admin.py:3191 +#, docstring +msgid "Enable or disable all tools in one or more categories." +msgstr "" + +#: assistant\commands\admin.py:3208 +msgid "No valid category names provided!" +msgstr "" + +#: assistant\commands\admin.py:3213 +msgid "The following categories do not exist: {}" +msgstr "" + +#: assistant\commands\admin.py:3235 +msgid "{} **Enabled Categories** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3243 +msgid "{} **Disabled Categories** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3266 +#, docstring +msgid "\n" +" Enable or disable multiple functions at once\n\n" +" **Arguments**\n" +" - `enable`: True to enable, False to disable. Omit to toggle current state.\n" +" - `functions`: Comma-separated list of function names, or \"all\" to affect all functions\n\n" +" **Examples**\n" +" - `[p]togglefunctions get_time, get_weather` - Toggle these functions\n" +" - `[p]togglefunctions True all` - Enable all functions\n" +" - `[p]togglefunctions False get_time, get_weather` - Disable specific functions\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3305 +msgid "No valid function names provided!" +msgstr "" + +#: assistant\commands\admin.py:3311 +msgid "The following functions do not exist: {}" +msgstr "" + +#: assistant\commands\admin.py:3337 +msgid "✅ **Enabled** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3344 +msgid "❌ **Disabled** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3440 +#, docstring +msgid "\n" +" Add/Remove items from the blacklist\n\n" +" `channel_role_member` can be a member, role, channel, or category channel\n" +" " +msgstr "\n" +"Ajouter/supprimer des éléments de la liste noire\n" +"`channel_role_member` peut être un membre, un rôle, un canal ou un canal de catégorie " + +#: assistant\commands\admin.py:3448 +msgid "{} has been removed from the blacklist" +msgstr "{} a été supprimé de la liste noire" + +#: assistant\commands\admin.py:3451 +msgid "{} has been added to the blacklist" +msgstr "{} a été ajouté à la liste noire" + +#: assistant\commands\admin.py:3464 +#, docstring +msgid "\n" +" Add/Remove items from the planner list, or view current planners.\n\n" +" Users/roles in the planner list can use the `think_and_plan` tool for complex task breakdown.\n\n" +" If the planner list is empty, everyone can use the planning tool.\n" +" If the planner list has entries, only those users/roles can use it.\n\n" +" `role_or_member` can be a member or role. Omit to view the current list.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3479 +msgid "The planner list is empty. Everyone can use the `think_and_plan` tool." +msgstr "" + +#: assistant\commands\admin.py:3484 +msgid "**Planners:** {}" +msgstr "" + +#: assistant\commands\admin.py:3486 +msgid "The planner list has invalid entries. Consider clearing it." +msgstr "" + +#: assistant\commands\admin.py:3491 +msgid "{} has been removed from the planner list" +msgstr "" + +#: assistant\commands\admin.py:3494 +msgid "{} has been added to the planner list" +msgstr "" + +#: assistant\commands\admin.py:3500 +msgid "**{}:** empty" +msgstr "" + +#: assistant\commands\admin.py:3506 +msgid "**{}:** {}" +msgstr "" + +#: assistant\commands\admin.py:3510 +#, docstring +msgid "Show the current smartmod configuration." +msgstr "" + +#: assistant\commands\admin.py:3517 +msgid "`Enabled: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3518 +msgid "`Report channel:`{}\n" +msgstr "" + +#: assistant\commands\admin.py:3519 +msgid "`OpenAI key: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3519 +msgid "OK" +msgstr "" + +#: assistant\commands\admin.py:3519 +msgid "Missing" +msgstr "" + +#: assistant\commands\admin.py:3520 +msgid "`Review model: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3520 +msgid "(default)" +msgstr "" + +#: assistant\commands\admin.py:3521 +msgid "`Context: `{} before / {} after\n" +msgstr "" + +#: assistant\commands\admin.py:3522 +msgid "`Panel timeout: `{}s\n" +msgstr "" + +#: assistant\commands\admin.py:3523 +msgid "`Auto-action: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3524 +msgid "`Exempt staff: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3525 +msgid "`Staff ping: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3526 +msgid "`Blacklist: `{} items\n" +msgstr "" + +#: assistant\commands\admin.py:3527 +msgid "`Whitelist: `{} items\n" +msgstr "" + +#: assistant\commands\admin.py:3528 +msgid "`Triggers: `{} phrases" +msgstr "" + +#: assistant\commands\admin.py:3530 +msgid "Smartmod (AI Moderation)" +msgstr "" + +#: assistant\commands\admin.py:3535 +#, docstring +msgid "Enable or disable AI moderation. Omit the state to flip it." +msgstr "" + +#: assistant\commands\admin.py:3541 +msgid "\n" +"⚠️ No OpenAI key for the scan. Set one with `{p}assistant smartmod key`." +msgstr "" + +#: assistant\commands\admin.py:3545 +msgid "\n" +"⚠️ No report channel set. Set one with `{p}assistant smartmod channel`." +msgstr "" + +#: assistant\commands\admin.py:3548 +msgid "Smartmod is now **{}**." +msgstr "" + +#: assistant\commands\admin.py:3548 +msgid "enabled" +msgstr "" + +#: assistant\commands\admin.py:3548 +msgid "disabled" +msgstr "" + +#: assistant\commands\admin.py:3553 +#, docstring +msgid "Set the channel where moderation proposals are posted. Omit to clear." +msgstr "" + +#: assistant\commands\admin.py:3556 +msgid "set to {}" +msgstr "" + +#: assistant\commands\admin.py:3556 +msgid "cleared" +msgstr "" -#: assistant\commands\admin.py:2036 assistant\commands\admin.py:2179 -msgid "Successfully imported {} embeddings!" -msgstr "Importation réussie de {} embeddings !" +#: assistant\commands\admin.py:3557 +msgid "Report channel {}." +msgstr "" -#: assistant\commands\admin.py:2041 +#: assistant\commands\admin.py:3562 #, docstring -msgid "Import embeddings to use with the assistant\n\n" -" Args:\n" -" overwrite (bool): overwrite embeddings with existing entry names\n" +msgid "Set the smartmod review model (empty = use the server's default chat model).\n\n" +" Run with no model to open the interactive model picker — endpoint-discovered models when a\n" +" custom endpoint is set, otherwise the built-in OpenAI list.\n" " " -msgstr "Importez les embeddings à utiliser avec l'assistant\n\n" -" Args:\n" -" overwrite (bool): écraser les embeddings avec les noms d'entrée existants " +msgstr "" -#: assistant\commands\admin.py:2050 assistant\commands\admin.py:3202 -msgid "You must attach **.json** files to this command or reference a message that has them!" -msgstr "Vous devez joindre des fichiers **.json** à cette commande ou faire référence à un message qui les contient !" +#: assistant\commands\admin.py:3571 +msgid "Review model set to `{}`." +msgstr "" -#: assistant\commands\admin.py:2086 -msgid "Failed to import **{}** because it contains invalid formatting!" -msgstr "L'importation de **{}** a échoué car elle contient un formatage non valide !" +#: assistant\commands\admin.py:3582 +msgid "Could not probe `{}` to discover models. Set one manually with `{}assistant smartmod model `." +msgstr "" -#: assistant\commands\admin.py:2091 -msgid "Imported the following files: `{}`\n" -"{} embeddings imported" -msgstr "Importé les fichiers suivants : `{}`\n" -"{} embeddings importés" +#: assistant\commands\admin.py:3602 +msgid "The review model uses the server's default chat model unless set. Valid OpenAI models:\n" +"{}\n" +"Set one with `{}assistant smartmod model `." +msgstr "" -#: assistant\commands\admin.py:2099 +#: assistant\commands\admin.py:3610 #, docstring -msgid "Import embeddings from an .xlsx file\n\n" -" Args:\n" -" overwrite (bool): overwrite embeddings with existing entry names\n" +msgid "Set the moderation review prompt.\n\n" +" Supports the {flagged_categories} placeholder plus the same standard prompt variables\n" +" as the main system prompt (server name, channel name, display name, custom cog\n" +" variables, etc.).\n\n" +" Run with no text to view the current prompt. Use `defaultprompt` to grab the built-in\n" +" default to customize, and `resetprompt` to restore it.\n" " " msgstr "" -#: assistant\commands\admin.py:2108 -msgid "You must attach **.xlsx** files to this command or reference a message that has them!" +#: assistant\commands\admin.py:3622 +msgid "Current moderation prompt (edit and re-set with `{p}assistant smartmod prompt `):" msgstr "" -#: assistant\commands\admin.py:2129 -msgid "{} is invalid! Must contain the following columns: {}" +#: assistant\commands\admin.py:3629 +msgid "Moderation prompt updated." msgstr "" -#: assistant\commands\admin.py:2183 -msgid "No embeddings needed to be updated!" +#: assistant\commands\admin.py:3634 +#, docstring +msgid "Get the built-in default moderation prompt to copy and customize." +msgstr "" + +#: assistant\commands\admin.py:3636 +msgid "Default moderation prompt - copy, edit, then set with `{p}assistant smartmod prompt `:" msgstr "" -#: assistant\commands\admin.py:2188 +#: assistant\commands\admin.py:3644 #, docstring -msgid "\n" -" Export embeddings to an .xlsx file\n\n" -" **Note:** csv exports do not include the embedding values\n" -" " +msgid "Reset the moderation review prompt to the built-in default." msgstr "" -#: assistant\commands\admin.py:2195 assistant\commands\admin.py:2241 -#: assistant\commands\admin.py:2285 -msgid "There are no embeddings to export!" -msgstr "Il n'y a pas d'embeddings à exporter !" +#: assistant\commands\admin.py:3647 +msgid "Moderation prompt reset to default." +msgstr "" -#: assistant\commands\admin.py:2235 +#: assistant\commands\admin.py:3652 #, docstring -msgid "Export embeddings to a .csv file\n\n" -" **Note:** csv exports do not include the embedding values\n" +msgid "Set a category's flag threshold (0.0-1.0), e.g. `harassment 0.4`.\n\n" +" Run with no arguments to list every moderation category and its current threshold.\n" " " -msgstr "Exporter les encastrements dans un fichier .csv\n\n" -"**Note :** les exportations csv ne comprennent pas les valeurs d'intégration " +msgstr "" -#: assistant\commands\admin.py:2254 assistant\commands\admin.py:2274 -#: assistant\commands\admin.py:2293 assistant\commands\admin.py:2313 -#: assistant\commands\admin.py:3188 -msgid "Here is your embeddings export!" -msgstr "Voici votre exportation d'embeddings !" +#: assistant\commands\admin.py:3661 +msgid "Set one with `{p}assistant smartmod threshold <0.0-1.0>`:\n" +"{box}" +msgstr "" -#: assistant\commands\admin.py:2257 assistant\commands\admin.py:2296 -#: assistant\commands\admin.py:3170 -msgid "File too large, attempting to compress..." -msgstr "Fichier trop volumineux, tentative de compression..." +#: assistant\commands\admin.py:3669 +msgid "Unknown category. Valid categories:\n" +"{}" +msgstr "" -#: assistant\commands\admin.py:2277 assistant\commands\admin.py:2316 -#: assistant\commands\admin.py:3191 -msgid "File is still too large even with compression!" -msgstr "Le fichier est encore trop volumineux même avec la compression !" +#: assistant\commands\admin.py:3672 +msgid "Value must be between 0.0 and 1.0." +msgstr "" -#: assistant\commands\admin.py:2282 -#, docstring -msgid "Export embeddings to a json file" -msgstr "Exporter les embeddings dans un fichier json" +#: assistant\commands\admin.py:3675 +msgid "Threshold for `{}` set to `{}`." +msgstr "" -#: assistant\commands\admin.py:2324 +#: assistant\commands\admin.py:3680 #, docstring -msgid "\n" -" Manage embeddings for training\n\n" -" Embeddings are used to optimize training of the assistant and minimize token usage.\n\n" -" By using this the bot can store vast amounts of contextual information without going over the token limit.\n\n" -" **Note**\n" -" You can enter a search query with this command to bring up the menu and go directly to that embedding selection.\n" -" " -msgstr "\n" -"Gérer les embeddings pour l'entraînement\n" -"Les embeddings sont utilisés pour optimiser l'entraînement de l'assistant et minimiser l'utilisation des jetons.\n" -"En utilisant cela, le bot peut stocker de vastes quantités d'informations contextuelles sans dépasser la limite de jetons.\n" -"**Note**\n" -"Vous pouvez entrer une requête de recherche avec cette commande pour afficher le menu et accéder directement à la sélection de l'embedding " +msgid "View the effective per-category flag thresholds." +msgstr "" -#: assistant\commands\admin.py:2374 +#: assistant\commands\admin.py:3687 #, docstring -msgid "\n" -" Add custom function calls for Assistant to use\n\n" -" **READ**\n" -" - [Function Call Docs](https://platform.openai.com/docs/guides/gpt/function-calling)\n" -" - [OpenAI Cookbook](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_call_functions_with_chat_models.ipynb)\n" -" - [JSON Schema Reference](https://json-schema.org/understanding-json-schema/)\n\n" -" The following objects are passed by default as keyword arguments.\n" -" - **user**: the user currently chatting with the bot (discord.Member)\n" -" - **channel**: channel the user is chatting in (TextChannel|Thread|ForumChannel)\n" -" - **guild**: current guild (discord.Guild)\n" -" - **bot**: the bot object (Red)\n" -" - **conf**: the config model for Assistant (GuildSettings)\n" -" - All functions **MUST** include `*args, **kwargs` in the params and return a string\n" -" ```python\n" -" # Can be either sync or async\n" -" async def func(*args, **kwargs) -> str:\n" -" ```\n" -" Only bot owner can manage this, guild owners can see descriptions but not code\n" -" " +msgid "Return (flagged_categories, formatted_table_lines) comparing each score to its threshold." msgstr "" -#: assistant\commands\admin.py:2414 +#: assistant\commands\admin.py:3701 #, docstring -msgid "List custom prompt context variables registered by other cogs." +msgid "Preview a sample message: which trigger phrases match plus each moderation score vs its threshold." msgstr "" -#: assistant\commands\admin.py:2416 -msgid "3rd party docs: {}" +#: assistant\commands\admin.py:3707 assistant\commands\admin.py:3741 +msgid "No OpenAI key available for the scan. Set one with `{p}assistant smartmod key`." msgstr "" -#: assistant\commands\admin.py:2418 -msgid "No custom context variables have been registered yet!\n" -"{}" +#: assistant\commands\admin.py:3716 assistant\commands\admin.py:3750 +msgid "Moderation scan failed — check the key or the bot logs." msgstr "" -#: assistant\commands\admin.py:2432 -msgid "Custom Variables" +#: assistant\commands\admin.py:3719 +msgid "🚩 **Would trigger review**" msgstr "" -#: assistant\commands\admin.py:2437 -msgid "Page {}/{} | {} variables" +#: assistant\commands\admin.py:3719 +msgid "✅ **Would not trigger**" +msgstr "" + +#: assistant\commands\admin.py:3721 +msgid "Matched triggers: {}" msgstr "" -#: assistant\commands\admin.py:2450 +#: assistant\commands\admin.py:3723 +msgid "Scan flagged: {}" +msgstr "" + +#: assistant\commands\admin.py:3730 #, docstring -msgid "\n" -" List all available functions and their enabled/disabled status\n\n" -" This provides a quick overview of all custom functions and 3rd party\n" -" registered functions without having to navigate through the full menu.\n" +msgid "Dry-run the FULL pipeline on sample text: scan / triggers -> review model -> action panel.\n\n" +" The review model runs for real (tools, embeddings, this channel's recent context) with you as\n" +" the simulated offender, but the panel's buttons take no real action. The review runs if a\n" +" category trips its threshold OR a trigger phrase matches (same as production).\n" " " msgstr "" -#: assistant\commands\admin.py:2463 assistant\commands\admin.py:2527 -#: assistant\commands\admin.py:2579 assistant\commands\admin.py:2676 -msgid "No functions have been registered yet!" +#: assistant\commands\admin.py:3758 +msgid "✅ Would not trigger — no category over its threshold and no trigger phrase matched." msgstr "" -#: assistant\commands\admin.py:2490 -msgid "Function List" +#: assistant\commands\admin.py:3760 +msgid "🚩 Tripped: {}" msgstr "" -#: assistant\commands\admin.py:2495 -msgid "Page {}/{} | {} enabled, {} disabled" +#: assistant\commands\admin.py:3765 +msgid "Simulation error: {}" +msgstr "" + +#: assistant\commands\admin.py:3768 +msgid "🧪 Model chose **no action**.\n" +"-# {}" +msgstr "" + +#: assistant\commands\admin.py:3768 +msgid "no reason given" +msgstr "" + +#: assistant\commands\admin.py:3770 +msgid "🧪 Model didn't reach a decision within the review turn limit." +msgstr "" + +#: assistant\commands\admin.py:3772 +msgid "🧪 Model **proposed** an action — see the dry-run panel above (buttons are no-ops)." msgstr "" -#: assistant\commands\admin.py:2511 +#: assistant\commands\admin.py:3788 #, docstring -msgid "Open the mobile-friendly AI tools manager." +msgid "Toggle a channel/category/role/member on the moderation ignore list. Omit to view." +msgstr "" + +#: assistant\commands\admin.py:3791 +msgid "Smartmod blacklist (ignored)" msgstr "" -#: assistant\commands\admin.py:2520 +#: assistant\commands\admin.py:3796 +msgid "{} removed from the smartmod blacklist." +msgstr "" + +#: assistant\commands\admin.py:3799 +msgid "{} added to the smartmod blacklist." +msgstr "" + +#: assistant\commands\admin.py:3816 #, docstring -msgid "List tool categories and their current enabled state." +msgid "Only moderate these channel/category/role/members (used only when the blacklist is empty). Omit to view." msgstr "" -#: assistant\commands\admin.py:2545 -msgid "Tool Categories" +#: assistant\commands\admin.py:3819 +msgid "Smartmod whitelist (only these)" msgstr "" -#: assistant\commands\admin.py:2547 -msgid "Page {}/{} | {} enabled of {} total" +#: assistant\commands\admin.py:3824 +msgid "{} removed from the smartmod whitelist." +msgstr "" + +#: assistant\commands\admin.py:3827 +msgid "{} added to the smartmod whitelist." msgstr "" -#: assistant\commands\admin.py:2572 +#: assistant\commands\admin.py:3832 #, docstring -msgid "Enable or disable all tools in one or more categories." +msgid "Toggle a role to ping (and authorize) when an action is proposed. Omit to view." msgstr "" -#: assistant\commands\admin.py:2589 -msgid "No valid category names provided!" +#: assistant\commands\admin.py:3835 +msgid "Smartmod staff ping roles" msgstr "" -#: assistant\commands\admin.py:2594 -msgid "The following categories do not exist: {}" +#: assistant\commands\admin.py:3840 +msgid "{} removed from the staff ping roles." msgstr "" -#: assistant\commands\admin.py:2616 -msgid "{} **Enabled Categories** ({}):\n" -"{}" +#: assistant\commands\admin.py:3843 +msgid "{} added to the staff ping roles." msgstr "" -#: assistant\commands\admin.py:2624 -msgid "{} **Disabled Categories** ({}):\n" -"{}" +#: assistant\commands\admin.py:3848 +#, docstring +msgid "Set how many messages of context to capture before/after a flagged message." +msgstr "" + +#: assistant\commands\admin.py:3853 +msgid "Context window set to {} before / {} after." msgstr "" -#: assistant\commands\admin.py:2647 +#: assistant\commands\admin.py:3861 #, docstring -msgid "\n" -" Enable or disable multiple functions at once\n\n" -" **Arguments**\n" -" - `enable`: True to enable, False to disable. Omit to toggle current state.\n" -" - `functions`: Comma-separated list of function names, or \"all\" to affect all functions\n\n" -" **Examples**\n" -" - `[p]togglefunctions get_time, get_weather` - Toggle these functions\n" -" - `[p]togglefunctions True all` - Enable all functions\n" -" - `[p]togglefunctions False get_time, get_weather` - Disable specific functions\n" -" " +msgid "Set how long the action panel stays interactive, in seconds (60-86400)." msgstr "" -#: assistant\commands\admin.py:2686 -msgid "No valid function names provided!" +#: assistant\commands\admin.py:3864 +msgid "Panel timeout set to {} seconds." msgstr "" -#: assistant\commands\admin.py:2692 -msgid "The following functions do not exist: {}" +#: assistant\commands\admin.py:3869 +#, docstring +msgid "Toggle whether the proposed action auto-executes when the panel times out." msgstr "" -#: assistant\commands\admin.py:2718 -msgid "✅ **Enabled** ({}):\n" -"{}" +#: assistant\commands\admin.py:3873 assistant\commands\admin.py:3883 +msgid "on" msgstr "" -#: assistant\commands\admin.py:2724 -msgid "❌ **Disabled** ({}):\n" -"{}" +#: assistant\commands\admin.py:3873 assistant\commands\admin.py:3883 +msgid "off" msgstr "" -#: assistant\commands\admin.py:2819 -#, docstring -msgid "\n" -" Add/Remove items from the blacklist\n\n" -" `channel_role_member` can be a member, role, channel, or category channel\n" -" " -msgstr "\n" -"Ajouter/supprimer des éléments de la liste noire\n" -"`channel_role_member` peut être un membre, un rôle, un canal ou un canal de catégorie " +#: assistant\commands\admin.py:3874 +msgid "Auto-action on timeout is now **{}**." +msgstr "" -#: assistant\commands\admin.py:2827 -msgid "{} has been removed from the blacklist" -msgstr "{} a été supprimé de la liste noire" +#: assistant\commands\admin.py:3879 +#, docstring +msgid "Toggle skipping moderation for members with ban/kick/manage-messages permissions." +msgstr "" -#: assistant\commands\admin.py:2830 -msgid "{} has been added to the blacklist" -msgstr "{} a été ajouté à la liste noire" +#: assistant\commands\admin.py:3883 +msgid "Exempt staff is now **{}**." +msgstr "" -#: assistant\commands\admin.py:2843 +#: assistant\commands\admin.py:3888 #, docstring -msgid "\n" -" Add/Remove items from the planner list, or view current planners.\n\n" -" Users/roles in the planner list can use the `think_and_plan` tool for complex task breakdown.\n\n" -" If the planner list is empty, everyone can use the planning tool.\n" -" If the planner list has entries, only those users/roles can use it.\n\n" -" `role_or_member` can be a member or role. Omit to view the current list.\n" +msgid "Add or remove a trigger phrase that sends a message straight to moderation review.\n\n" +" A match fires the review pipeline **in place of** the OpenAI moderation scan — so\n" +" triggers work even with no OpenAI key set. Re-run with the exact same phrase to remove it.\n\n" +" Only `*` is a wildcard (it matches any run of characters); everything else is literal,\n" +" so pasting real regex is safe and can never lock the bot up. With no `*`, the phrase\n" +" matches on word boundaries (`idiot` hits the word \"idiot\" but not \"idiotic\"); add `*`\n" +" to loosen it: `idiot*` (prefix), `*idiot` (suffix), `*idiot*` (substring anywhere).\n" " " msgstr "" -#: assistant\commands\admin.py:2858 -msgid "The planner list is empty. Everyone can use the `think_and_plan` tool." +#: assistant\commands\admin.py:3903 +msgid "Removed smartmod trigger: `{}`" msgstr "" -#: assistant\commands\admin.py:2863 -msgid "**Planners:** {}" +#: assistant\commands\admin.py:3906 +msgid "A trigger needs at least one non-`*` character." msgstr "" -#: assistant\commands\admin.py:2865 -msgid "The planner list has invalid entries. Consider clearing it." +#: assistant\commands\admin.py:3908 +msgid "That trigger is too long (max {} characters)." msgstr "" -#: assistant\commands\admin.py:2870 -msgid "{} has been removed from the planner list" +#: assistant\commands\admin.py:3911 +msgid "Added smartmod trigger `{phrase}` (matches as `{regex}`)." msgstr "" -#: assistant\commands\admin.py:2873 -msgid "{} has been added to the planner list" +#: assistant\commands\admin.py:3919 +#, docstring +msgid "List the smartmod trigger phrases and the safe pattern each one compiles to." msgstr "" -#: assistant\commands\admin.py:2878 +#: assistant\commands\admin.py:3924 +msgid "No smartmod triggers set. Add one with `{p}assistant smartmod trigger `." +msgstr "" + +#: assistant\commands\admin.py:3935 #, docstring -msgid "\n" -" Override settings for specific roles\n\n" -" **NOTE**\n" -" If a user has two roles with override settings, override associated with the higher role will be used.\n" +msgid "Set a dedicated OpenAI key for the moderation scan (opens a secure modal).\n\n" +" Use this when your chat endpoint is a custom/non-OpenAI endpoint (OpenRouter, LM Studio,\n" +" etc.): the free OpenAI moderation scan still runs against api.openai.com with this key,\n" +" while the review LLM keeps using your configured endpoint. Enter `none` to clear it.\n" " " msgstr "" -#: assistant\commands\admin.py:2887 +#: assistant\commands\admin.py:3943 +msgid "Click to set the OpenAI key used for the smartmod moderation scan\n\n" +"To remove the key, enter `none`" +msgstr "" + +#: assistant\commands\admin.py:3950 +msgid "Smartmod OpenAI key has been removed!" +msgstr "" + +#: assistant\commands\admin.py:3955 +msgid "Smartmod OpenAI key has been set!" +msgstr "" + +#: assistant\commands\admin.py:3960 #, docstring msgid "\n" " Assign a role to use a model\n\n" @@ -2033,23 +2875,23 @@ msgstr "\n" "Attribuer un rôle pour utiliser un modèle\n" "*Spécifiez le même rôle et modèle pour supprimer la substitution* " -#: assistant\commands\admin.py:2899 +#: assistant\commands\admin.py:3974 msgid "Enter a model id supported by your custom endpoint. If it exposes `/v1/models`, you can copy one from there." msgstr "" -#: assistant\commands\admin.py:2916 +#: assistant\commands\admin.py:3991 msgid "Role override for {} removed!" msgstr "Remplacement du rôle pour {} supprimé !" -#: assistant\commands\admin.py:2919 +#: assistant\commands\admin.py:3994 msgid "Role override for {} overwritten!" msgstr "Remplacement du rôle de {} écrasé !" -#: assistant\commands\admin.py:2922 +#: assistant\commands\admin.py:3997 msgid "Role override for {} added!" msgstr "Remplacement du rôle pour {} ajouté !" -#: assistant\commands\admin.py:2928 +#: assistant\commands\admin.py:4003 #, docstring msgid "\n" " Assign a max token override to a role\n\n" @@ -2059,19 +2901,19 @@ msgstr "\n" "Attribuer une substitution maximale de jeton à un rôle\n" "*Spécifiez le même rôle et le même nombre de jetons pour supprimer la substitution* " -#: assistant\commands\admin.py:2938 +#: assistant\commands\admin.py:4013 msgid "Max token override for {} removed!" msgstr "Suppression de l'annulation du jeton maximum pour {} !" -#: assistant\commands\admin.py:2941 +#: assistant\commands\admin.py:4016 msgid "Max token override for {} overwritten!" msgstr "Ecrasement de la valeur maximale du jeton pour {} !" -#: assistant\commands\admin.py:2944 +#: assistant\commands\admin.py:4019 msgid "Max token override for {} added!" msgstr "L'annulation du jeton maximum pour {} a été ajoutée !" -#: assistant\commands\admin.py:2952 +#: assistant\commands\admin.py:4031 #, docstring msgid "\n" " Assign a max response token override to a role\n\n" @@ -2083,19 +2925,19 @@ msgstr "\n" "Définir à 0 pour que les jetons de réponse soient dynamiques\n\n" "*Spécifier le même rôle et le même nombre de jetons pour supprimer la substitution* " -#: assistant\commands\admin.py:2964 +#: assistant\commands\admin.py:4043 msgid "Max response token override for {} removed!" msgstr "Suppression de l'annulation du jeton de réponse maximum pour {} !" -#: assistant\commands\admin.py:2967 +#: assistant\commands\admin.py:4046 msgid "Max response token override for {} overwritten!" msgstr "Remplacement du jeton de réponse maximum pour {} écrasé !" -#: assistant\commands\admin.py:2970 +#: assistant\commands\admin.py:4049 msgid "Max response token override for {} added!" msgstr "Le remplacement du jeton de réponse maximum pour {} a été ajouté !" -#: assistant\commands\admin.py:2975 +#: assistant\commands\admin.py:4054 #, docstring msgid "\n" " Assign a max message retention override to a role\n\n" @@ -2105,19 +2947,19 @@ msgstr "\n" "Attribuer une substitution de rétention maximale des messages à un rôle\n" "*Spécifiez le même rôle et la même quantité de rétention pour supprimer la substitution* " -#: assistant\commands\admin.py:2987 +#: assistant\commands\admin.py:4066 msgid "Max retention override for {} removed!" msgstr "Suppression de l'annulation de la rétention maximale pour {} !" -#: assistant\commands\admin.py:2990 +#: assistant\commands\admin.py:4069 msgid "Max retention override for {} overwritten!" msgstr "L'annulation de la rétention maximale pour {} est écrasée !" -#: assistant\commands\admin.py:2993 +#: assistant\commands\admin.py:4072 msgid "Max retention override for {} added!" msgstr "Ajout d'une dérogation à la rétention maximale pour {} !" -#: assistant\commands\admin.py:2998 +#: assistant\commands\admin.py:4077 #, docstring msgid "\n" " Assign a max retention time override to a role\n\n" @@ -2127,19 +2969,19 @@ msgstr "\n" "Attribuer une durée de rétention maximale supplémentaire à un rôle\n" "*Spécifiez le même rôle et la même durée pour supprimer la substitution* " -#: assistant\commands\admin.py:3010 +#: assistant\commands\admin.py:4089 msgid "Max retention time override for {} removed!" msgstr "Suppression de la dérogation à la durée maximale de conservation pour {} !" -#: assistant\commands\admin.py:3013 +#: assistant\commands\admin.py:4092 msgid "Max retention time override for {} overwritten!" msgstr "La durée maximale de rétention pour {} est écrasée !" -#: assistant\commands\admin.py:3016 +#: assistant\commands\admin.py:4095 msgid "Max retention time override for {} added!" msgstr "Ajout d'une dérogation à la durée maximale de conservation pour {} ajoutée !" -#: assistant\commands\admin.py:3021 +#: assistant\commands\admin.py:4100 #, docstring msgid "\n" " Assign a reasoning effort override to a role\n\n" @@ -2148,23 +2990,23 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:3031 +#: assistant\commands\admin.py:4110 msgid "Invalid effort level. Valid values: {}" msgstr "" -#: assistant\commands\admin.py:3038 +#: assistant\commands\admin.py:4117 msgid "Reasoning effort override for {} removed!" msgstr "" -#: assistant\commands\admin.py:3041 +#: assistant\commands\admin.py:4120 msgid "Reasoning effort override for {} overwritten!" msgstr "" -#: assistant\commands\admin.py:3044 +#: assistant\commands\admin.py:4123 msgid "Reasoning effort override for {} added!" msgstr "" -#: assistant\commands\admin.py:3049 +#: assistant\commands\admin.py:4128 #, docstring msgid "\n" " Switch verbosity level for gpt-5 model between low, medium, and high\n\n" @@ -2172,79 +3014,112 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:3057 +#: assistant\commands\admin.py:4136 msgid "Verbosity has been set to **Medium**" msgstr "" -#: assistant\commands\admin.py:3060 +#: assistant\commands\admin.py:4139 msgid "Verbosity has been set to **High**" msgstr "" -#: assistant\commands\admin.py:3063 +#: assistant\commands\admin.py:4142 msgid "Verbosity has been set to **Low**" msgstr "" -#: assistant\commands\admin.py:3075 +#: assistant\commands\admin.py:4154 +#, docstring +msgid "Set the global default chat model for guilds that haven't picked their own (owner).\n\n" +" Pairs with `[p]assistant api globalendpoint`: e.g. set `openrouter/free` so new servers\n" +" route to OpenRouter's free models instead of the built-in `gpt-5.4` default. Guilds that\n" +" chose their own model are unaffected. Omit to view; pass `none` to clear.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:4161 +msgid "(not set - guilds use their own model)" +msgstr "" + +#: assistant\commands\admin.py:4163 +msgid "Global default model: `{}`\n" +"Set with `{}assistant api globalmodel `." +msgstr "" + +#: assistant\commands\admin.py:4169 +msgid "Global default model cleared." +msgstr "" + +#: assistant\commands\admin.py:4173 +msgid "Global default model set to `{}`. Guilds without their own model will use it." +msgstr "" + +#: assistant\commands\admin.py:4180 #, docstring msgid "\n" -" Override the global OpenAI-compatible API base URL\n\n" -" Pass the full API base URL, including the scheme and the `/v1` suffix.\n\n" +" Set the global default endpoint URL (owner)\n\n" +" When set, every guild without its own endpoint override calls this\n" +" URL instead of OpenAI's default. Pass the full base URL including\n" +" the scheme and the `/v1` suffix.\n\n" " **Examples**\n" " - `http://127.0.0.1:1234/v1`\n" " - `http://localhost:5001/v1`\n" -" - `https://example.com/api/v1`\n\n" +" - `https://example.com/api/v1`\n" +" - `https://openrouter.ai/api/v1`\n\n" " **Notes**\n" -" - When set, all servers can use the assistant without needing their own API key\n" -" - Custom endpoints must be OpenAI-compatible\n" -" - This should be the SDK `base_url`, not a specific route like `/chat/completions`\n" -" - Use `[p]assistant endpointapikey` to set a global key for authenticated custom endpoints\n" +" - Endpoints must be OpenAI-compatible\n" +" - This is the SDK `base_url`, not a specific route like `/chat/completions`\n" +" - Use `[p]assistant api globalkey` to set the API key for this endpoint\n" +" - Router endpoints like OpenRouter accept special model aliases\n" +" (e.g. `openrouter/auto`, `openrouter/free`) via `[p]assistant set model`\n" " - Omit the argument to remove the override\n" " " msgstr "" -#: assistant\commands\admin.py:3097 +#: assistant\commands\admin.py:4206 msgid "Endpoint is already set to **{}**" msgstr "" -#: assistant\commands\admin.py:3101 +#: assistant\commands\admin.py:4210 msgid "Endpoint has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:3109 +#: assistant\commands\admin.py:4218 msgid "Endpoint has been changed from **{}** to **{}**" msgstr "" -#: assistant\commands\admin.py:3116 +#: assistant\commands\admin.py:4225 msgid "Endpoint override has been removed!" msgstr "" -#: assistant\commands\admin.py:3122 +#: assistant\commands\admin.py:4232 #, docstring -msgid "Probe the configured custom endpoint and cache its runtime model/capability profile" +msgid "Probe the active endpoint and refresh its cached model/capability profile\n\n" +" Checks the guild endpoint override first; if none is set, probes the\n" +" global endpoint override. Reports an error if no endpoint is configured.\n" +" " msgstr "" -#: assistant\commands\admin.py:3124 -msgid "No endpoint override is configured." +#: assistant\commands\admin.py:4240 +msgid "No endpoint override is configured for this guild or globally." msgstr "" -#: assistant\commands\admin.py:3130 -msgid "Failed to probe the configured endpoint." +#: assistant\commands\admin.py:4246 +msgid "Failed to probe `{}`." msgstr "" -#: assistant\commands\admin.py:3137 +#: assistant\commands\admin.py:4253 #, docstring msgid "Wipe all settings and data for entire cog" msgstr "Effacer tous les paramètres et les données pour l'ensemble du module" -#: assistant\commands\admin.py:3139 +#: assistant\commands\admin.py:4255 msgid "Not wiping cog" msgstr "Pas d'essuyage de la roue dentée" -#: assistant\commands\admin.py:3144 +#: assistant\commands\admin.py:4260 msgid "Cog has been wiped!" msgstr "Cog a été effacé !" -#: assistant\commands\admin.py:3149 +#: assistant\commands\admin.py:4265 #, docstring msgid "\n" " Take a backup of the cog\n\n" @@ -2254,11 +3129,11 @@ msgstr "\n" "Prendre une copie de sauvegarde du rouage\n" "- Cela ne permet pas de sauvegarder les données de conversation " -#: assistant\commands\admin.py:3167 +#: assistant\commands\admin.py:4283 msgid "Here is your export!" msgstr "Voici votre exportation !" -#: assistant\commands\admin.py:3196 +#: assistant\commands\admin.py:4312 #, docstring msgid "\n" " Restore the cog from a backup\n" @@ -2266,11 +3141,11 @@ msgid "\n" msgstr "\n" "Restaurer le rouage à partir d'une sauvegarde " -#: assistant\commands\admin.py:3206 +#: assistant\commands\admin.py:4322 msgid "Cog has been restored!" msgstr "La crémaillère a été restaurée !" -#: assistant\commands\admin.py:3212 +#: assistant\commands\admin.py:4328 #, docstring msgid "\n" " Wipe saved conversations for the assistant in all servers\n\n" @@ -2280,37 +3155,37 @@ msgstr "\n" "Effacer les conversations enregistrées pour l'assistant sur tous les serveurs\n" "Cela supprimera toutes les conversations enregistrées pour l'assistant " -#: assistant\commands\admin.py:3221 +#: assistant\commands\admin.py:4337 msgid "Conversations have been wiped for all servers!" msgstr "Les conversations ont été effacées pour tous les serveurs !" -#: assistant\commands\admin.py:3227 +#: assistant\commands\admin.py:4343 #, docstring msgid "Toggle persistent conversations" msgstr "Activer/désactiver les conversations persistantes" -#: assistant\commands\admin.py:3230 +#: assistant\commands\admin.py:4346 msgid "Persistent conversations have been **Disabled**" msgstr "Les conversations persistantes ont été **Désactivées**" -#: assistant\commands\admin.py:3233 +#: assistant\commands\admin.py:4349 msgid "Persistent conversations have been **Enabled**" msgstr "Les conversations persistantes ont été **activées**" -#: assistant\commands\admin.py:3239 +#: assistant\commands\admin.py:4355 #, docstring msgid "Toggle whether reasoning/think blocks are uploaded as files globally" msgstr "" -#: assistant\commands\admin.py:3242 +#: assistant\commands\admin.py:4358 msgid "Reasoning blocks will now be stripped from replies without uploading think files." msgstr "" -#: assistant\commands\admin.py:3245 +#: assistant\commands\admin.py:4361 msgid "Reasoning blocks will now be uploaded as think files when present." msgstr "" -#: assistant\commands\admin.py:3251 +#: assistant\commands\admin.py:4367 #, docstring msgid "\n" " Wipe saved embeddings for all servers\n\n" @@ -2320,11 +3195,11 @@ msgstr "\n" "Supprimer les embeddings enregistrés pour tous les serveurs\n" "Cela supprimera toutes les données d'entraînement d'embedding enregistrées pour l'assistant " -#: assistant\commands\admin.py:3261 +#: assistant\commands\admin.py:4377 msgid "All embedding data has been wiped for all servers!" msgstr "Toutes les données d'intégration ont été effacées pour tous les serveurs !" -#: assistant\commands\admin.py:3267 +#: assistant\commands\admin.py:4383 #, docstring msgid "\n" " Toggle whether the assistant listens to other bots\n\n" @@ -2334,113 +3209,113 @@ msgstr "\n" "Basculer si l'assistant écoute les autres bots\n" "**NON RECOMMANDÉ POUR LES BOTS PUBLICS !** " -#: assistant\commands\admin.py:3274 +#: assistant\commands\admin.py:4390 msgid "Assistant will no longer listen to other bot messages" msgstr "L'assistant n'écoutera plus les messages des autres bots" -#: assistant\commands\admin.py:3277 +#: assistant\commands\admin.py:4393 msgid "Assistant will listen to other bot messages" msgstr "L'assistant écoutera les autres messages du bot" -#: assistant\commands\admin.py:3285 +#: assistant\commands\admin.py:4401 #, docstring msgid "View and manage all scheduled autonomous tasks in this server." msgstr "" -#: assistant\commands\admin.py:3288 +#: assistant\commands\admin.py:4404 msgid "No scheduled tasks in this server." msgstr "" -#: assistant\commands\admin.py:3307 +#: assistant\commands\admin.py:4423 msgid "Scheduled Tasks ({})" msgstr "" -#: assistant\commands\admin.py:3317 +#: assistant\commands\admin.py:4433 #, docstring msgid "Cancel a scheduled task by its ID (admin override)." msgstr "" -#: assistant\commands\admin.py:3320 +#: assistant\commands\admin.py:4436 msgid "No scheduled task found with ID `{}`." msgstr "" -#: assistant\commands\admin.py:3322 +#: assistant\commands\admin.py:4438 msgid "That task belongs to a different server." msgstr "" -#: assistant\commands\admin.py:3331 +#: assistant\commands\admin.py:4447 msgid "Scheduled task `{}` has been cancelled." msgstr "" -#: assistant\commands\admin.py:3337 +#: assistant\commands\admin.py:4453 #, docstring msgid "Clear all scheduled tasks in this server." msgstr "" -#: assistant\commands\admin.py:3339 +#: assistant\commands\admin.py:4455 msgid "Not clearing tasks." msgstr "" -#: assistant\commands\admin.py:3350 +#: assistant\commands\admin.py:4466 msgid "Cleared {} scheduled tasks." msgstr "" -#: assistant\commands\admin.py:3356 +#: assistant\commands\admin.py:4470 #, docstring msgid "Toggle LLM-based conversation compaction on or off" msgstr "" -#: assistant\commands\admin.py:3360 +#: assistant\commands\admin.py:4474 msgid "Conversation compaction is now **Disabled** (blind degradation will be used)" msgstr "" -#: assistant\commands\admin.py:3363 +#: assistant\commands\admin.py:4477 msgid "Conversation compaction is now **Enabled**" msgstr "" -#: assistant\commands\admin.py:3368 +#: assistant\commands\admin.py:4482 #, docstring msgid "Set the model used for compaction (leave blank to use the chat model)" msgstr "" -#: assistant\commands\admin.py:3372 +#: assistant\commands\admin.py:4487 msgid "Compaction model cleared, the main chat model will be used" msgstr "" -#: assistant\commands\admin.py:3377 +#: assistant\commands\admin.py:4492 msgid "Compaction model set to **{}**" msgstr "" -#: assistant\commands\admin.py:3382 +#: assistant\commands\admin.py:4497 #, docstring msgid "Set the token threshold at which compaction triggers\n\n" " When set, the bot will proactively compact conversations once they\n" " exceed this many tokens, even if the model's context window is larger.\n\n" " Set to **0** to only compact when hitting the model's max token limit.\n\n" " **Examples**\n" -" - `[p]assistant compactionthreshold 16000` - compact at 16k tokens\n" -" - `[p]assistant compactionthreshold 0` - reset to default behavior\n" +" - `[p]assistant compaction threshold 16000` - compact at 16k tokens\n" +" - `[p]assistant compaction threshold 0` - reset to default behavior\n" " " msgstr "" -#: assistant\commands\admin.py:3394 +#: assistant\commands\admin.py:4509 msgid "Token limit must be 0 or higher" msgstr "" -#: assistant\commands\admin.py:3398 +#: assistant\commands\admin.py:4513 msgid "Compaction will now trigger at **{}** tokens" msgstr "" -#: assistant\commands\admin.py:3400 +#: assistant\commands\admin.py:4515 msgid "Compaction threshold reset, will only compact at the model's max token limit" msgstr "" -#: assistant\commands\base.py:46 +#: assistant\commands\base.py:45 #, docstring msgid "Get help using assistant" msgstr "" -#: assistant\commands\base.py:48 +#: assistant\commands\base.py:47 msgid "\n" "# How to Use\n\n" "### Commands\n" @@ -2448,6 +3323,7 @@ msgid "\n" "`[p]convocontext` - detailed token breakdown of what's consuming your context window.\n" "`[p]convocompact` - intelligently summarize older messages to free up context space.\n" "`[p]clearconvo` - reset your conversation for the current channel/thread/forum.\n" +"`[p]unchat` - cancel the active assistant response for the current channel/thread/forum.\n" "`[p]showconvo` - get a json dump of your current conversation (this is mostly for debugging)\n" "`[p]chat` or `[p]ask` - command prefix for chatting with the bot outside of the live chat, or just @ it.\n\n" "### Chat Arguments\n" @@ -2474,42 +3350,38 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:109 +#: assistant\commands\base.py:110 msgid "The API key is not set up!" msgstr "" -#: assistant\commands\base.py:111 +#: assistant\commands\base.py:112 msgid "Image generation is disabled!" msgstr "" -#: assistant\commands\base.py:120 +#: assistant\commands\base.py:121 msgid "Generating image..." msgstr "" -#: assistant\commands\base.py:124 +#: assistant\commands\base.py:125 msgid "-# Size: {}\n" "-# Quality: {}\n" "-# Model: {}" msgstr "" -#: assistant\commands\base.py:126 +#: assistant\commands\base.py:127 msgid "\n" "-# Style: {}" msgstr "" -#: assistant\commands\base.py:145 -msgid "Cost: ${}" -msgstr "" - -#: assistant\commands\base.py:150 +#: assistant\commands\base.py:155 msgid "Revised Prompt" msgstr "" -#: assistant\commands\base.py:150 +#: assistant\commands\base.py:155 msgid "Continued" msgstr "" -#: assistant\commands\base.py:170 +#: assistant\commands\base.py:178 #, docstring msgid "\n" " Chat with [botname]!\n\n" @@ -2526,7 +3398,11 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:197 +#: assistant\commands\base.py:208 +msgid "There are too many pending messages for this conversation. Please wait for the current reply." +msgstr "" + +#: assistant\commands\base.py:214 #, docstring msgid "\n" " Check the token and message count of yourself or another user's conversation for this channel\n\n" @@ -2538,7 +3414,7 @@ msgstr "\n" "Les conversations sont *Par* utilisateur *par* canal, ce qui signifie qu'une conversation que vous avez dans un canal sera conservée en mémoire séparément d'une autre conversation dans un canal différent\n" "Les conversations ne sont stockées en mémoire que jusqu'au redémarrage du bot ou au rechargement du module cog " -#: assistant\commands\base.py:252 +#: assistant\commands\base.py:271 msgid "`Messages: `{}/{}\n" "`Context: `{}/{} ({:.1f}%)\n" "`Conversation:`{}\n" @@ -2547,126 +3423,126 @@ msgid "`Messages: `{}/{}\n" "`Model: `{}" msgstr "" -#: assistant\commands\base.py:271 +#: assistant\commands\base.py:290 msgid "\n" "`Tool Calls: `{}" msgstr "" -#: assistant\commands\base.py:273 +#: assistant\commands\base.py:292 msgid "\n" "`Compacted: `{} time(s)" msgstr "" -#: assistant\commands\base.py:275 +#: assistant\commands\base.py:294 msgid "*Collabroative conversations are enabled*" msgstr "" -#: assistant\commands\base.py:281 +#: assistant\commands\base.py:300 msgid "Conversation stats for {}" msgstr "Statistiques de conversation pour {}" -#: assistant\commands\base.py:284 +#: assistant\commands\base.py:303 msgid "Context = conversation + overhead (prompts + function schemas)" msgstr "" -#: assistant\commands\base.py:289 +#: assistant\commands\base.py:308 msgid "System prompt override for this conversation" msgstr "" -#: assistant\commands\base.py:292 +#: assistant\commands\base.py:311 msgid "System prompt override for this channel" msgstr "" -#: assistant\commands\base.py:298 +#: assistant\commands\base.py:317 #, docstring msgid "Show a detailed token breakdown for your conversation context" msgstr "" -#: assistant\commands\base.py:334 +#: assistant\commands\base.py:353 msgid "`Max Context: `{} tokens\n" msgstr "" -#: assistant\commands\base.py:335 +#: assistant\commands\base.py:354 msgid "`Context Fill: `{:.1f}%\n" msgstr "" -#: assistant\commands\base.py:336 +#: assistant\commands\base.py:355 msgid "`Model: `{}\n" msgstr "" -#: assistant\commands\base.py:338 +#: assistant\commands\base.py:357 msgid "**Token Breakdown**\n" msgstr "" -#: assistant\commands\base.py:339 +#: assistant\commands\base.py:358 msgid "`System Prompt: `{}\n" msgstr "" -#: assistant\commands\base.py:340 +#: assistant\commands\base.py:359 msgid "`Initial Prompt: `{}\n" msgstr "" -#: assistant\commands\base.py:341 +#: assistant\commands\base.py:360 msgid "`Channel Prompt: `{}\n" msgstr "" -#: assistant\commands\base.py:342 +#: assistant\commands\base.py:361 msgid "`Function Schemas: `{} ({} functions)\n" msgstr "" -#: assistant\commands\base.py:345 +#: assistant\commands\base.py:364 msgid "`Conversation: `{}\n" msgstr "" -#: assistant\commands\base.py:346 +#: assistant\commands\base.py:365 msgid "`Total: `{}\n" msgstr "" -#: assistant\commands\base.py:348 +#: assistant\commands\base.py:367 msgid "**Message Breakdown**\n" msgstr "" -#: assistant\commands\base.py:349 +#: assistant\commands\base.py:368 msgid "`System/Developer: `{}\n" msgstr "" -#: assistant\commands\base.py:350 +#: assistant\commands\base.py:369 msgid "`User Messages: `{}\n" msgstr "" -#: assistant\commands\base.py:351 +#: assistant\commands\base.py:370 msgid "`Assistant Messages: `{}\n" msgstr "" -#: assistant\commands\base.py:352 +#: assistant\commands\base.py:371 msgid "`Tool Results: `{}\n" msgstr "" -#: assistant\commands\base.py:353 +#: assistant\commands\base.py:372 msgid "`Images: `{}\n" msgstr "" -#: assistant\commands\base.py:354 +#: assistant\commands\base.py:373 msgid "`Compaction Summaries:`{}\n" msgstr "" -#: assistant\commands\base.py:356 +#: assistant\commands\base.py:375 msgid "**Compaction**\n" msgstr "" -#: assistant\commands\base.py:357 +#: assistant\commands\base.py:376 msgid "`Times Compacted: `{}\n" msgstr "" -#: assistant\commands\base.py:367 +#: assistant\commands\base.py:386 msgid "Context Breakdown" msgstr "" -#: assistant\commands\base.py:372 +#: assistant\commands\base.py:391 msgid "Context for {}" msgstr "" -#: assistant\commands\base.py:380 +#: assistant\commands\base.py:399 #, docstring msgid "Compact your conversation using LLM summarization\n\n" " This summarizes older messages instead of deleting them, preserving\n" @@ -2677,35 +3553,35 @@ msgid "Compact your conversation using LLM summarization\n\n" " " msgstr "" -#: assistant\commands\base.py:391 +#: assistant\commands\base.py:411 msgid "No API key has been set!" msgstr "" -#: assistant\commands\base.py:393 +#: assistant\commands\base.py:413 msgid "Conversation compaction is disabled in this server." msgstr "" -#: assistant\commands\base.py:404 +#: assistant\commands\base.py:424 msgid "Only moderators can compact channel conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:409 +#: assistant\commands\base.py:429 msgid "You have no conversation history in this channel." msgstr "" -#: assistant\commands\base.py:414 +#: assistant\commands\base.py:434 msgid "Not enough messages to compact (need more than {})." msgstr "" -#: assistant\commands\base.py:434 +#: assistant\commands\base.py:453 msgid "Conversation compacted! ({} compactions total for this conversation)" msgstr "" -#: assistant\commands\base.py:439 +#: assistant\commands\base.py:458 msgid "Compaction was not needed or failed." msgstr "" -#: assistant\commands\base.py:444 +#: assistant\commands\base.py:463 #, docstring msgid "\n" " Reset your conversation with the bot\n\n" @@ -2715,112 +3591,129 @@ msgstr "\n" "Réinitialisez votre conversation avec le bot\n\n" "Cela effacera tout l'historique des messages entre vous et le bot pour ce canal " -#: assistant\commands\base.py:457 +#: assistant\commands\base.py:476 msgid "Only moderators can clear channel conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:461 +#: assistant\commands\base.py:481 msgid "Your conversation in this channel has been reset!" msgstr "Votre conversation dans ce canal a été réinitialisée !" -#: assistant\commands\base.py:467 +#: assistant\commands\base.py:486 +#, docstring +msgid "Cancel the active assistant response for this channel" +msgstr "" + +#: assistant\commands\base.py:494 +msgid "Only moderators can cancel channel conversations when collaborative conversations are enabled!" +msgstr "" + +#: assistant\commands\base.py:499 +msgid "There is no active assistant response to cancel in this channel." +msgstr "" + +#: assistant\commands\base.py:500 +msgid "The active assistant response for this channel has been cancelled." +msgstr "" + +#: assistant\commands\base.py:506 #, docstring msgid "\n" " Pop the last message from your conversation\n" " " msgstr "" -#: assistant\commands\base.py:478 +#: assistant\commands\base.py:517 msgid "Only moderators can pop messages from conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:482 assistant\commands\base.py:743 +#: assistant\commands\base.py:521 assistant\commands\base.py:788 msgid "There are no messages in this conversation yet!" msgstr "" -#: assistant\commands\base.py:487 +#: assistant\commands\base.py:526 msgid "Removed the last message from this conversation" msgstr "" -#: assistant\commands\base.py:507 +#: assistant\commands\base.py:546 #, docstring msgid "\n" " Get a summary of whats going on in a channel\n" " " msgstr "" -#: assistant\commands\base.py:513 +#: assistant\commands\base.py:552 msgid "Invalid timeframe! Please use a valid time format like `1h` for an hour" msgstr "" -#: assistant\commands\base.py:516 +#: assistant\commands\base.py:555 msgid "The maximum timeframe is 48 hours!" msgstr "" -#: assistant\commands\base.py:524 +#: assistant\commands\base.py:563 msgid "Only moderators can summarize conversations!" msgstr "" -#: assistant\commands\base.py:531 +#: assistant\commands\base.py:570 msgid "You don't have permission to view the channel!" msgstr "" -#: assistant\commands\base.py:538 +#: assistant\commands\base.py:577 msgid "I don't have permission to view the channel!" msgstr "" -#: assistant\commands\base.py:561 +#: assistant\commands\base.py:600 msgid "No messages found to summarize within that timeframe!" msgstr "" -#: assistant\commands\base.py:563 +#: assistant\commands\base.py:602 msgid "Not enough messages found to summarize within that timeframe!" msgstr "" -#: assistant\commands\base.py:664 +#: assistant\commands\base.py:706 msgid "The request timed out!" msgstr "" -#: assistant\commands\base.py:675 +#: assistant\commands\base.py:717 msgid "Failed to get response" msgstr "" -#: assistant\commands\base.py:678 +#: assistant\commands\base.py:720 msgid "No response was generated!" msgstr "" -#: assistant\commands\base.py:685 +#: assistant\commands\base.py:727 msgid "Timeframe: {}" msgstr "" -#: assistant\commands\base.py:692 assistant\commands\base.py:702 +#: assistant\commands\base.py:734 assistant\commands\base.py:744 msgid "Channel" msgstr "" -#: assistant\commands\base.py:724 +#: assistant\commands\base.py:769 #, docstring msgid "\n" " Copy the conversation to another channel, thread, or forum\n" " " msgstr "" -#: assistant\commands\base.py:735 +#: assistant\commands\base.py:780 msgid "Only moderators can copy conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:746 +#: assistant\commands\base.py:791 msgid "You cannot copy a conversation to a channel you can't see!" msgstr "" -#: assistant\commands\base.py:752 +#: assistant\commands\base.py:797 msgid "This conversation has been overwritten in {}" msgstr "" -#: assistant\commands\base.py:754 +#: assistant\commands\base.py:799 msgid "This conversation has been copied over to {}" msgstr "" -#: assistant\commands\base.py:764 +#: assistant\commands\base.py:809 #, docstring msgid "\n" " Set a system prompt for this conversation!\n\n" @@ -2829,28 +3722,28 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:773 +#: assistant\commands\base.py:818 msgid "Conversation system prompt overriding is **Disabled**." msgstr "" -#: assistant\commands\base.py:783 +#: assistant\commands\base.py:828 msgid "Only moderators can set conversation prompts when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:803 +#: assistant\commands\base.py:848 msgid "This prompt is uses {} tokens which is more than 90% of the maximum tokens allowed per conversation!\n" "Write a prompt using {} tokens or less to leave 10% of your token limit for responses" msgstr "" -#: assistant\commands\base.py:812 +#: assistant\commands\base.py:857 msgid "System prompt has been set for this conversation!" msgstr "" -#: assistant\commands\base.py:814 +#: assistant\commands\base.py:859 msgid "System prompt has been **Removed** for this conversation!" msgstr "" -#: assistant\commands\base.py:826 +#: assistant\commands\base.py:871 #, docstring msgid "\n" " View the current transcript of a conversation\n\n" @@ -2860,50 +3753,50 @@ msgstr "\n" "Afficher la transcription actuelle d'une conversation\n\n" "Ceci est principalement destiné à des fins de modération " -#: assistant\commands\base.py:838 +#: assistant\commands\base.py:883 msgid "You have no conversation in this channel!" msgstr "Vous n'avez aucune conversation dans ce canal !" -#: assistant\commands\base.py:851 +#: assistant\commands\base.py:896 msgid "Here is your conversation transcript!" msgstr "Voici la transcription de votre conversation !" -#: assistant\commands\base.py:857 +#: assistant\commands\base.py:902 #, docstring msgid "\n" " Import a conversation from a file\n" " " msgstr "" -#: assistant\commands\base.py:862 +#: assistant\commands\base.py:907 msgid "Please attach a file to import the conversation from!" msgstr "" -#: assistant\commands\base.py:864 +#: assistant\commands\base.py:909 msgid "Please only attach one file to import the conversation from!" msgstr "" -#: assistant\commands\base.py:867 +#: assistant\commands\base.py:912 msgid "Please upload a valid JSON file." msgstr "" -#: assistant\commands\base.py:872 +#: assistant\commands\base.py:917 msgid "Failed to parse conversation file." msgstr "" -#: assistant\commands\base.py:878 +#: assistant\commands\base.py:923 msgid "The conversation file is not in the correct format. It should be a list of messages." msgstr "" -#: assistant\commands\base.py:888 +#: assistant\commands\base.py:933 msgid "You do not have permission to import conversations." msgstr "" -#: assistant\commands\base.py:893 +#: assistant\commands\base.py:938 msgid "Conversation has been imported successfully!" msgstr "" -#: assistant\commands\base.py:899 +#: assistant\commands\base.py:944 #, docstring msgid "\n" " Fetch related embeddings according to the current topn setting along with their scores\n\n" @@ -2911,31 +3804,31 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:906 +#: assistant\commands\base.py:951 msgid "You do not have any embeddings configured!" msgstr "Vous n'avez pas configuré d'embeddings !" -#: assistant\commands\base.py:908 +#: assistant\commands\base.py:953 msgid "Top N is set to 0 so no embeddings will be returned" msgstr "Top N est fixé à 0, donc aucun encastrement ne sera renvoyé" -#: assistant\commands\base.py:914 +#: assistant\commands\base.py:959 msgid "Failed to get embedding for your query" msgstr "Échec de l'intégration de votre requête" -#: assistant\commands\base.py:923 +#: assistant\commands\base.py:968 msgid "No embeddings could be related to this query with the current settings" msgstr "Aucun embedding ne peut être associé à cette requête avec les paramètres actuels" -#: assistant\commands\base.py:927 +#: assistant\commands\base.py:972 msgid "`Entry Name: `{}\n" msgstr "`Nom d'entrée : {}`\n" -#: assistant\commands\base.py:928 +#: assistant\commands\base.py:973 msgid "`Relatedness: `{}\n" msgstr "`La parenté : {}`\n" -#: assistant\commands\base.py:929 +#: assistant\commands\base.py:974 msgid "`Dimensions: `{}\n" msgstr "`Dimensions: {}`\n" From 60a3f328c6c519a162a3207de9be5d43e02d611d Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Mon, 1 Jun 2026 11:10:41 -0400 Subject: [PATCH 050/104] New translations messages.pot (Spanish) [ci skip] --- assistant/commands/locales/es-ES.po | 2683 ++++++++++++++++++--------- 1 file changed, 1783 insertions(+), 900 deletions(-) diff --git a/assistant/commands/locales/es-ES.po b/assistant/commands/locales/es-ES.po index a77fdd6ed..9dd33a5ec 100644 --- a/assistant/commands/locales/es-ES.po +++ b/assistant/commands/locales/es-ES.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-20 01:28\n" +"POT-Creation-Date: 2026-06-01 09:46-0400\n" +"PO-Revision-Date: 2026-06-01 15:10\n" "Last-Translator: \n" "Language-Team: Spanish\n" "MIME-Version: 1.0\n" @@ -17,19 +17,19 @@ msgstr "" "X-Crowdin-File-ID: 53\n" "Language: es_ES\n" -#: assistant\commands\admin.py:67 +#: assistant\commands\admin.py:89 msgid "Endpoint override must be a full base URL, for example `http://127.0.0.1:1234/v1` or `https://example.com/api/v1`." msgstr "" -#: assistant\commands\admin.py:72 +#: assistant\commands\admin.py:94 msgid "Endpoint override must point at the OpenAI-compatible API base path ending in `/v1`. Do not include routes like `/chat/completions` or `/models`." msgstr "" -#: assistant\commands\admin.py:81 +#: assistant\commands\admin.py:103 msgid "Empty" msgstr "" -#: assistant\commands\admin.py:90 +#: assistant\commands\admin.py:112 #, docstring msgid "\n" " Setup the assistant\n\n" @@ -40,69 +40,166 @@ msgstr "\n" " Necesitarás una **[clave api](https://platform.openai.com/account/api-keys)** de OpenAI para usar ChatGPT y sus otros modelos.\n" " " -#: assistant\commands\admin.py:133 +#: assistant\commands\admin.py:122 +#, docstring +msgid "Manage API keys and endpoint URLs" +msgstr "" + +#: assistant\commands\admin.py:127 +#, docstring +msgid "Per-guild endpoint and key overrides (chat + embeddings)" +msgstr "" + +#: assistant\commands\admin.py:132 +#, docstring +msgid "Configure general guild settings" +msgstr "" + +#: assistant\commands\admin.py:137 +#, docstring +msgid "Configure assistant prompts" +msgstr "" + +#: assistant\commands\admin.py:142 +#, docstring +msgid "Configure feature toggles" +msgstr "" + +#: assistant\commands\admin.py:147 +#, docstring +msgid "Configure auto-answer settings" +msgstr "" + +#: assistant\commands\admin.py:152 +#, docstring +msgid "Configure trigger phrase system" +msgstr "" + +#: assistant\commands\admin.py:157 +#, docstring +msgid "Configure content filtering" +msgstr "" + +#: assistant\commands\admin.py:162 +#, docstring +msgid "Configure token and retention limits" +msgstr "" + +#: assistant\commands\admin.py:167 +#, docstring +msgid "Configure model behavior parameters" +msgstr "" + +#: assistant\commands\admin.py:172 +#, docstring +msgid "Configure embeddings and RAG settings" +msgstr "" + +#: assistant\commands\admin.py:177 +#, docstring +msgid "Admin maintenance commands" +msgstr "" + +#: assistant\commands\admin.py:183 +#, docstring +msgid "Configure OpenRouter response & prompt caching." +msgstr "" + +#: assistant\commands\admin.py:188 +#, docstring +msgid "Manage role-based overrides" +msgstr "" + +#: assistant\commands\admin.py:193 +#, docstring +msgid "Manage scheduled autonomous tasks" +msgstr "" + +#: assistant\commands\admin.py:198 +#, docstring +msgid "Configure conversation compaction" +msgstr "" + +#: assistant\commands\admin.py:203 +#, docstring +msgid "AI moderation: scan messages, review flagged ones, and propose staff actions." +msgstr "" + +#: assistant\commands\admin.py:244 msgid "... and {} more" msgstr "" -#: assistant\commands\admin.py:143 +#: assistant\commands\admin.py:255 msgid "Configured chat model" msgstr "" -#: assistant\commands\admin.py:144 +#: assistant\commands\admin.py:256 msgid "{}: **{}**" msgstr "" -#: assistant\commands\admin.py:147 assistant\commands\admin.py:180 +#: assistant\commands\admin.py:259 assistant\commands\admin.py:294 msgid "No endpoint model cache is available yet. Run `{}` to refresh it, or enter a model id manually." msgstr "" -#: assistant\commands\admin.py:154 +#: assistant\commands\admin.py:266 msgid "Runtime chat model: **{}**" msgstr "" -#: assistant\commands\admin.py:159 +#: assistant\commands\admin.py:271 msgid "Discovered chat models:\n" "{}" msgstr "" -#: assistant\commands\admin.py:165 +#: assistant\commands\admin.py:277 msgid "No chat models were discovered from this endpoint yet. You can still enter a model id manually." msgstr "" -#: assistant\commands\admin.py:169 assistant\commands\admin.py:204 +#: assistant\commands\admin.py:281 assistant\commands\admin.py:318 msgid "Use this command again with one of these model ids, or enter another id manually if your endpoint supports it." msgstr "" -#: assistant\commands\admin.py:177 +#: assistant\commands\admin.py:291 msgid "Configured embedding model: **{}**" msgstr "" -#: assistant\commands\admin.py:187 +#: assistant\commands\admin.py:301 msgid "Runtime embedding model: **{}**" msgstr "" -#: assistant\commands\admin.py:192 +#: assistant\commands\admin.py:306 msgid "Discovered embedding models:\n" "{}" msgstr "" -#: assistant\commands\admin.py:198 +#: assistant\commands\admin.py:312 msgid "No embedding models were discovered from this endpoint yet. You can still enter a model id manually." msgstr "" -#: assistant\commands\admin.py:217 +#: assistant\commands\admin.py:332 msgid "embedding" msgstr "" -#: assistant\commands\admin.py:217 +#: assistant\commands\admin.py:332 msgid "chat" msgstr "" -#: assistant\commands\admin.py:220 -msgid "Note: `{}` is not in the endpoint's discovered {} model list. Requests will currently resolve to `{}` unless the endpoint starts advertising or returning that model." +#: assistant\commands\admin.py:351 +msgid "Note: `{}` is not in the endpoint's discovered {} model list. Requests on this endpoint will automatically use `{}` instead." msgstr "" -#: assistant\commands\admin.py:228 +#: assistant\commands\admin.py:354 +msgid "Note: `{}` is not in the endpoint's discovered {} model list. The cog will still try to use it directly, but the endpoint may reject it." +msgstr "" + +#: assistant\commands\admin.py:400 +msgid "Warning: stored embeddings currently use mixed dimensions ({}). Run `{}` to resync them with `{}`." +msgstr "" + +#: assistant\commands\admin.py:412 +msgid "Warning: stored embeddings are `{}` dimensions, but `{}` returns `{}` dimensions. Run `{}` to resync them after switching models." +msgstr "" + +#: assistant\commands\admin.py:443 #, docstring msgid "\n" " View current settings\n\n" @@ -112,542 +209,657 @@ msgstr "\n" "Ver la configuración actual\n\n" "Para enviar en el canal actual, utiliza `[p]assistant view false` " -#: assistant\commands\admin.py:248 +#: assistant\commands\admin.py:468 msgid "`OpenAI Version: `{}\n" msgstr "`Versión OpenAI: `{}\n" -#: assistant\commands\admin.py:249 +#: assistant\commands\admin.py:469 msgid "`OpenAI API Status: `{}\n" msgstr "`Estado de la API de OpenAI: `{}\n" -#: assistant\commands\admin.py:250 +#: assistant\commands\admin.py:470 msgid "`Draw Command: `{}\n" msgstr "" -#: assistant\commands\admin.py:250 assistant\commands\admin.py:295 -#: assistant\commands\admin.py:302 assistant\commands\admin.py:312 -#: assistant\commands\admin.py:396 assistant\commands\admin.py:1346 +#: assistant\commands\admin.py:470 assistant\commands\admin.py:525 +#: assistant\commands\admin.py:532 assistant\commands\admin.py:542 +#: assistant\commands\admin.py:679 assistant\commands\admin.py:1695 msgid "Enabled" msgstr "" -#: assistant\commands\admin.py:250 assistant\commands\admin.py:295 -#: assistant\commands\admin.py:302 assistant\commands\admin.py:312 -#: assistant\commands\admin.py:396 assistant\commands\admin.py:1346 +#: assistant\commands\admin.py:470 assistant\commands\admin.py:525 +#: assistant\commands\admin.py:532 assistant\commands\admin.py:542 +#: assistant\commands\admin.py:604 assistant\commands\admin.py:679 +#: assistant\commands\admin.py:1695 msgid "Disabled" msgstr "" -#: assistant\commands\admin.py:251 +#: assistant\commands\admin.py:471 msgid "`Model: `{}\n" msgstr "`Modelo: `{}\n" -#: assistant\commands\admin.py:252 +#: assistant\commands\admin.py:472 msgid "`Embed Model: `{}\n" msgstr "`Modelo de Embed: `{}\n" -#: assistant\commands\admin.py:253 +#: assistant\commands\admin.py:473 msgid "`Enabled: `{}\n" msgstr "`Habilitado: `{}\n" -#: assistant\commands\admin.py:254 +#: assistant\commands\admin.py:474 msgid "`Timezone: `{}\n" msgstr "`Zona horaria: {}`\n" -#: assistant\commands\admin.py:255 +#: assistant\commands\admin.py:475 msgid "`Channel: `{}\n" msgstr "`Canal: {}`\n" -#: assistant\commands\admin.py:255 assistant\commands\admin.py:405 -#: assistant\commands\admin.py:412 +#: assistant\commands\admin.py:475 assistant\commands\admin.py:688 +#: assistant\commands\admin.py:695 msgid "Not Set" msgstr "No establecido" -#: assistant\commands\admin.py:256 +#: assistant\commands\admin.py:476 msgid "`? Required: `{}\n" msgstr "`? Obligatorio: `{}\n" -#: assistant\commands\admin.py:257 +#: assistant\commands\admin.py:477 msgid "`Question Mode: `{}\n" msgstr "`Modo de Pregunta: `{}\n" -#: assistant\commands\admin.py:258 +#: assistant\commands\admin.py:478 msgid "`Mention on Reply: `{}\n" msgstr "`Mención en Respuesta: `{}\n" -#: assistant\commands\admin.py:259 +#: assistant\commands\admin.py:479 msgid "`Respond to Mentions: `{}\n" msgstr "`Responder a Menciones: `{}\n" -#: assistant\commands\admin.py:260 +#: assistant\commands\admin.py:480 msgid "`Collaborative Mode: `{}\n" msgstr "`Modo Colaborativo: `{}\n" -#: assistant\commands\admin.py:262 +#: assistant\commands\admin.py:481 msgid "`Max Retention: `{}\n" msgstr "`Máxima retención: `{}\n" -#: assistant\commands\admin.py:263 +#: assistant\commands\admin.py:482 msgid "`Retention Expire: `{}s\n" msgstr "`Caducidad de la retención: `{}s\n" -#: assistant\commands\admin.py:264 +#: assistant\commands\admin.py:483 msgid "`Max Tokens: `{}\n" msgstr "`Max Tokens: `{}\n" -#: assistant\commands\admin.py:265 +#: assistant\commands\admin.py:484 msgid "`Max Response Tokens: `{}\n" msgstr "`Máximo de tokens de respuesta: {}`\n" -#: assistant\commands\admin.py:266 +#: assistant\commands\admin.py:485 msgid "`Min Length: `{}\n" msgstr "`Longitud mínima: `{}\n" -#: assistant\commands\admin.py:267 +#: assistant\commands\admin.py:486 msgid "`Temperature: `{}\n" msgstr "`Temperatura: `{}\n" -#: assistant\commands\admin.py:268 +#: assistant\commands\admin.py:487 msgid "`Frequency Penalty: `{}\n" msgstr "`Penalización de frecuencia: `{}\n" -#: assistant\commands\admin.py:269 +#: assistant\commands\admin.py:488 msgid "`Presence Penalty: `{}\n" msgstr "`Penalización de presencia: `{}\n" -#: assistant\commands\admin.py:270 +#: assistant\commands\admin.py:489 msgid "`Seed: `{}\n" msgstr "`Semilla: `{}\n" -#: assistant\commands\admin.py:271 +#: assistant\commands\admin.py:490 msgid "`Vision Resolution: `{}\n" msgstr "" -#: assistant\commands\admin.py:272 +#: assistant\commands\admin.py:491 msgid "`Reasoning Effort: `{}\n" msgstr "" -#: assistant\commands\admin.py:273 +#: assistant\commands\admin.py:492 msgid "`Verbosity: `{}\n" msgstr "" -#: assistant\commands\admin.py:274 +#: assistant\commands\admin.py:493 msgid "`System Prompt: `{} tokens\n" msgstr "`Prompt del Sistema: `{} tokens\n" -#: assistant\commands\admin.py:275 +#: assistant\commands\admin.py:494 msgid "`User Prompt: `{} tokens\n" msgstr "`Prompt del Usuario: `{} tokens\n" -#: assistant\commands\admin.py:276 +#: assistant\commands\admin.py:495 msgid "`Endpoint Override: `{}\n" msgstr "" -#: assistant\commands\admin.py:280 +#: assistant\commands\admin.py:495 assistant\commands\admin.py:496 +#: assistant\commands\admin.py:3518 +msgid "Not set" +msgstr "" + +#: assistant\commands\admin.py:496 +msgid "`Guild Endpoint: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:500 +msgid "`Effective Model: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:502 +msgid "`Effective Embed: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:505 msgid "Assistant Settings" msgstr "Ajustes del asistente" -#: assistant\commands\admin.py:288 +#: assistant\commands\admin.py:515 assistant\commands\admin.py:978 +#: assistant\commands\admin.py:1062 msgid "Endpoint Runtime" msgstr "" -#: assistant\commands\admin.py:290 +#: assistant\commands\admin.py:520 msgid "Auto Answer" msgstr "" -#: assistant\commands\admin.py:291 +#: assistant\commands\admin.py:521 msgid "Auto-answer will trigger the bot outside of the assistant channel if a question is detected and an embedding is not found.\n" msgstr "" -#: assistant\commands\admin.py:294 +#: assistant\commands\admin.py:524 msgid "`Model: `{}\n" msgstr "" -#: assistant\commands\admin.py:295 assistant\commands\admin.py:302 +#: assistant\commands\admin.py:525 assistant\commands\admin.py:532 msgid "`Status: `{}\n" msgstr "" -#: assistant\commands\admin.py:296 +#: assistant\commands\admin.py:526 msgid "`Threshold: `{}\n" msgstr "" -#: assistant\commands\admin.py:297 assistant\commands\admin.py:304 +#: assistant\commands\admin.py:527 assistant\commands\admin.py:534 msgid "`Ignored: `{}\n" msgstr "" -#: assistant\commands\admin.py:300 +#: assistant\commands\admin.py:530 msgid "Trigger Words" msgstr "" -#: assistant\commands\admin.py:301 +#: assistant\commands\admin.py:531 msgid "Trigger words allow the bot to respond to messages containing specific keywords or regex patterns.\n" msgstr "" -#: assistant\commands\admin.py:303 +#: assistant\commands\admin.py:533 msgid "`Phrases: `{}\n" msgstr "" -#: assistant\commands\admin.py:305 +#: assistant\commands\admin.py:535 assistant\commands\admin.py:3515 msgid "None" msgstr "" -#: assistant\commands\admin.py:307 +#: assistant\commands\admin.py:537 msgid "`Has Prompt:`{}\n" msgstr "" -#: assistant\commands\admin.py:307 +#: assistant\commands\admin.py:537 msgid "Yes" msgstr "" -#: assistant\commands\admin.py:307 +#: assistant\commands\admin.py:537 msgid "No" msgstr "" -#: assistant\commands\admin.py:310 +#: assistant\commands\admin.py:540 msgid "Think Tags" msgstr "" -#: assistant\commands\admin.py:311 +#: assistant\commands\admin.py:541 msgid "Reasoning blocks wrapped in these tags are removed from chat output.\n" msgstr "" -#: assistant\commands\admin.py:312 +#: assistant\commands\admin.py:542 msgid "`Upload as Files:`{}\n" msgstr "" -#: assistant\commands\admin.py:313 +#: assistant\commands\admin.py:543 msgid "Prefix\n" "{}\n" "Suffix\n" "{}" msgstr "" -#: assistant\commands\admin.py:320 +#: assistant\commands\admin.py:550 msgid "System prompt override is **Allowed**, users can set a personal system prompt per convo." msgstr "La anulación del prompt del sistema está **permitida**, los usuarios pueden establecer un prompt del sistema personal por conversación." -#: assistant\commands\admin.py:322 +#: assistant\commands\admin.py:552 msgid "System prompt override is **Disabled**, users cannot set a personal system prompt per convo." msgstr "La anulación del prompt del sistema está **deshabilitada**, los usuarios no pueden establecer un prompt del sistema personal por conversación." -#: assistant\commands\admin.py:323 +#: assistant\commands\admin.py:553 msgid "\n" "*This will be restricted to mods if collaborative conversations are enabled!*" msgstr "\n" "*¡Esto estará restringido a moderadores si las conversaciones colaborativas están habilitadas!*" -#: assistant\commands\admin.py:324 +#: assistant\commands\admin.py:554 msgid "System Prompt Overriding" msgstr "Anulación del Prompt del Sistema" -#: assistant\commands\admin.py:332 +#: assistant\commands\admin.py:562 msgid "Channel Prompt Overrides" msgstr "" -#: assistant\commands\admin.py:343 +#: assistant\commands\admin.py:578 +msgid "• System prompt - `{}`" +msgstr "" + +#: assistant\commands\admin.py:581 +msgid "• Initial prompt - `{}`" +msgstr "" + +#: assistant\commands\admin.py:586 +msgid "• <#{}> - `{}`" +msgstr "" + +#: assistant\commands\admin.py:589 +msgid "⚠️ Cache Warning" +msgstr "" + +#: assistant\commands\admin.py:590 +msgid "These prompts contain dynamic variable placeholders that break prompt prefix caching on every request. Use `{prefix}floatingcontext` to move them to the floating context block instead.\n" +msgstr "" + +#: assistant\commands\admin.py:602 +msgid "Enabled ({}s TTL)" +msgstr "" + +#: assistant\commands\admin.py:607 +msgid "Off" +msgstr "" + +#: assistant\commands\admin.py:608 +msgid "5 minutes" +msgstr "" + +#: assistant\commands\admin.py:609 +msgid "1 hour" +msgstr "" + +#: assistant\commands\admin.py:612 +msgid "OpenRouter Caching" +msgstr "" + +#: assistant\commands\admin.py:614 +msgid "`Response Cache: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:615 +msgid "`Provider Prompt Cache: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:626 msgid "Auto-Reply Channels" msgstr "" -#: assistant\commands\admin.py:352 +#: assistant\commands\admin.py:635 msgid "Mixed (Please Refresh!)" msgstr "Mixto (¡Por favor, actualiza!)" -#: assistant\commands\admin.py:354 +#: assistant\commands\admin.py:637 msgid "Synced!" msgstr "¡Sincronizado!" -#: assistant\commands\admin.py:356 +#: assistant\commands\admin.py:639 msgid "N/A" msgstr "N/A" -#: assistant\commands\admin.py:359 +#: assistant\commands\admin.py:642 msgid "`Top N Embeddings: `{}\n" msgstr "`Top N Embeddings: {}`\n" -#: assistant\commands\admin.py:360 +#: assistant\commands\admin.py:643 msgid "`Min Relatedness: `{}\n" msgstr "`Mínimo parentesco: `{}\n" -#: assistant\commands\admin.py:361 +#: assistant\commands\admin.py:644 msgid "`Encodings: `{}" msgstr "`Codificaciones: `{}" -#: assistant\commands\admin.py:365 +#: assistant\commands\admin.py:648 msgid "Embeddings ({})" msgstr "Incrustaciones ({})" -#: assistant\commands\admin.py:373 +#: assistant\commands\admin.py:656 msgid "The following roles/users can use the `think_and_plan` tool: " msgstr "" -#: assistant\commands\admin.py:378 +#: assistant\commands\admin.py:661 msgid "`Function Calling: `{}\n" msgstr "Llamada a función: `{}`\n" -#: assistant\commands\admin.py:379 +#: assistant\commands\admin.py:662 msgid "`Maximum Recursion: `{}\n" msgstr "`Máxima Recursión: `{}\n" -#: assistant\commands\admin.py:380 +#: assistant\commands\admin.py:663 msgid "`Function Tokens: `{}\n" msgstr "`Función Tokens: `{}\n" -#: assistant\commands\admin.py:384 +#: assistant\commands\admin.py:667 msgid "The following cogs also have functions registered with the assistant\n" "{}" msgstr "Los siguientes engranajes también tienen funciones registradas en el asistente\n" "{}" -#: assistant\commands\admin.py:389 +#: assistant\commands\admin.py:672 msgid "Custom Functions ({})" msgstr "Funciones personalizadas ({})" -#: assistant\commands\admin.py:394 +#: assistant\commands\admin.py:677 msgid "Max tokens" msgstr "" -#: assistant\commands\admin.py:396 +#: assistant\commands\admin.py:679 msgid "`Compaction: `{}\n" msgstr "" -#: assistant\commands\admin.py:397 +#: assistant\commands\admin.py:680 msgid "`Compaction Model: `{}\n" msgstr "" -#: assistant\commands\admin.py:397 +#: assistant\commands\admin.py:680 msgid "Same as chat" msgstr "" -#: assistant\commands\admin.py:398 +#: assistant\commands\admin.py:681 msgid "`Threshold: `{}\n" msgstr "" -#: assistant\commands\admin.py:400 +#: assistant\commands\admin.py:683 msgid "Context Compaction" msgstr "" -#: assistant\commands\admin.py:404 +#: assistant\commands\admin.py:687 msgid "API Key" msgstr "" -#: assistant\commands\admin.py:411 +#: assistant\commands\admin.py:694 msgid "Endpoint Override API Key" msgstr "" -#: assistant\commands\admin.py:419 +#: assistant\commands\admin.py:702 msgid "Regex Blacklist" msgstr "Lista negra de expresiones regulares" -#: assistant\commands\admin.py:421 +#: assistant\commands\admin.py:704 msgid "Regex Failure Blocking" msgstr "Bloqueo de fallos de Regex" -#: assistant\commands\admin.py:422 +#: assistant\commands\admin.py:705 msgid "Block reply if regex replacement fails: **{}**" msgstr "Bloquear la respuesta si falla la sustitución regex: **{}**" -#: assistant\commands\admin.py:427 +#: assistant\commands\admin.py:710 msgid "Conversations are stored persistently" msgstr "Las conversaciones se almacenan de forma persistente" -#: assistant\commands\admin.py:429 +#: assistant\commands\admin.py:712 msgid "conversations are stored in memory until reboot or reload" msgstr "Las conversaciones se almacenan en la memoria hasta que se reinicia o se recarga el sistema" -#: assistant\commands\admin.py:431 +#: assistant\commands\admin.py:714 msgid "Persistent Conversations" msgstr "Conversaciones persistentes" -#: assistant\commands\admin.py:445 +#: assistant\commands\admin.py:728 msgid "Blacklist" msgstr "Lista negra" -#: assistant\commands\admin.py:457 +#: assistant\commands\admin.py:740 msgid "Model Role Overrides" msgstr "Anulaciones de roles de modelos" -#: assistant\commands\admin.py:468 +#: assistant\commands\admin.py:751 msgid "Max Token Role Overrides" msgstr "Anulaciones de roles de fichas máximas" -#: assistant\commands\admin.py:479 +#: assistant\commands\admin.py:763 msgid "Max Message Retention Role Overrides" msgstr "Anulaciones de la función de retención máxima de mensajes por rol" -#: assistant\commands\admin.py:491 +#: assistant\commands\admin.py:778 msgid "Max Message Retention Time Role Overrides" msgstr "Anulaciones de tiempo máximo de retención de mensajes por rol" -#: assistant\commands\admin.py:505 +#: assistant\commands\admin.py:793 msgid "Max Response Token Role Overrides" msgstr "Anulaciones de función de token de respuesta máxima" -#: assistant\commands\admin.py:516 +#: assistant\commands\admin.py:808 msgid "Reasoning Effort Role Overrides" msgstr "" -#: assistant\commands\admin.py:520 +#: assistant\commands\admin.py:815 msgid "Your Brave websearch API key is set!" msgstr "" -#: assistant\commands\admin.py:522 +#: assistant\commands\admin.py:817 msgid "Enables the use of the `search_web_brave` function\n" "Get your API key **[Here](https://brave.com/search/api/)**\n" msgstr "" -#: assistant\commands\admin.py:526 +#: assistant\commands\admin.py:821 msgid "Brave Websearch API key" msgstr "" -#: assistant\commands\admin.py:528 +#: assistant\commands\admin.py:823 msgid "Showing settings for {}" msgstr "Mostrando ajustes para {}" -#: assistant\commands\admin.py:534 +#: assistant\commands\admin.py:829 msgid "SystemPrompt" msgstr "Por favor, proporcione el texto que desea traducir al español" -#: assistant\commands\admin.py:540 +#: assistant\commands\admin.py:835 msgid "InitialPrompt" msgstr "Anuncio Inicial" -#: assistant\commands\admin.py:550 +#: assistant\commands\admin.py:845 msgid "Sent your current settings for this server in DMs!" msgstr "¡Envié tu configuración actual para este servidor en mensajes directos (DMs)!" -#: assistant\commands\admin.py:552 +#: assistant\commands\admin.py:847 msgid "You need to allow DMs so I can message you!" msgstr "¡Necesitas permitir los mensajes directos para que pueda enviarte mensajes!" -#: assistant\commands\admin.py:559 -#, docstring -msgid "View the token usage stats for this server" -msgstr "Ver las estadísticas de uso de tokens para este servidor" - -#: assistant\commands\admin.py:562 -msgid "There is no usage data yet!" -msgstr "¡Aún no hay datos de uso!" - -#: assistant\commands\admin.py:593 -msgid "`Total: `{} (${} @ ${}/1k tokens)" -msgstr "`Total: `{} (${} @ ${}/1k tokens)" - -#: assistant\commands\admin.py:600 -msgid "Free/Self-Hosted" -msgstr "Gratuito/Autoalojado" - -#: assistant\commands\admin.py:604 -msgid "`Input: `{} (${} @ ${}/1k tokens)\n" -"`Output: `{} (${} @ ${}/1k tokens)\n" -"`Total: `{} (${})" -msgstr "`Entrada: {} (${} @ ${}/1k tokens)\n" -"Salida: {} (${} @ ${}/1k tokens)\n" -"Total: {} (${})" - -#: assistant\commands\admin.py:618 -msgid "**Overall Token Usage and Cost**\n" -"`Input: `{} (${})\n" -"`Output: `{} (${})\n" -"`Total: `{} (${})\n" -"`Tool Calls: `{}\n" -msgstr "**Uso y coste total de los tokens**\n" -"`Entrada: `{} (${})\n" -"`Salida: `{} (${})\n" -"`Total: `{} (${})\n" -"`Llamadas a Herramientas: `{}\n" - -#: assistant\commands\admin.py:639 -#, docstring -msgid "Reset the token usage stats for this server" -msgstr "Restablecer las estadísticas de uso de tokens para este servidor" - -#: assistant\commands\admin.py:642 -msgid "Token usage stats have been reset!" -msgstr "¡Las estadísticas de uso de tokens han sido restablecidas!" - -#: assistant\commands\admin.py:648 +#: assistant\commands\admin.py:854 #, docstring msgid "\n" -" Set this server's API key\n" +" Set this server's API key\n\n" +" Used for all requests from this guild - whether routing to OpenAI\n" +" directly, the guild's endpoint override, or the global endpoint\n" +" override. If not set, the global endpoint key is used as a fallback.\n" " " msgstr "" -#: assistant\commands\admin.py:654 +#: assistant\commands\admin.py:864 msgid "Click to set this server's API key\n\n" "To remove your key, enter `none`" msgstr "" -#: assistant\commands\admin.py:663 +#: assistant\commands\admin.py:873 msgid "API key has been removed!" msgstr "" -#: assistant\commands\admin.py:666 assistant\commands\admin.py:695 -#: assistant\commands\admin.py:723 +#: assistant\commands\admin.py:876 assistant\commands\admin.py:905 +#: assistant\commands\admin.py:938 assistant\commands\admin.py:3952 msgid "No API key was entered!" msgstr "¡No se ha ingresado ninguna clave API!" -#: assistant\commands\admin.py:669 +#: assistant\commands\admin.py:879 msgid "API key has been set!" msgstr "" -#: assistant\commands\admin.py:679 +#: assistant\commands\admin.py:889 #, docstring msgid "\n" -" Enables use of the `search_web_brave` function\n\n" -" Get your API key **[Here](https://brave.com/search/api/)**\n" +" Set the Brave Search API key (owner) - used by the web-search tool\n\n" +" Get your API key **[here](https://brave.com/search/api/)**.\n" " " msgstr "" -#: assistant\commands\admin.py:685 +#: assistant\commands\admin.py:895 msgid "Click to set your API key\n\n" "To remove your keys, enter `none`" msgstr "" -#: assistant\commands\admin.py:693 +#: assistant\commands\admin.py:903 msgid "Brave API key has been removed!" msgstr "" -#: assistant\commands\admin.py:698 +#: assistant\commands\admin.py:908 msgid "Brave API key has been set!" msgstr "" -#: assistant\commands\admin.py:706 +#: assistant\commands\admin.py:916 #, docstring msgid "\n" -" Set the global API key used for the custom endpoint override\n\n" -" This key is only used when an endpoint override is configured and a guild\n" +" Set the global API key for the default endpoint override (owner)\n\n" +" This key is only used when a global endpoint override is set\n" +" (see `[p]assistant api globalendpoint`) and the requesting guild\n" " has not provided its own API key.\n" " " msgstr "" -#: assistant\commands\admin.py:713 +#: assistant\commands\admin.py:924 msgid "Click to set the API key used for the endpoint override\n\n" "To remove the key, enter `none`" msgstr "" -#: assistant\commands\admin.py:721 +#: assistant\commands\admin.py:933 msgid "Endpoint override API key has been removed!" msgstr "" -#: assistant\commands\admin.py:726 +#: assistant\commands\admin.py:942 msgid "Endpoint override API key has been set!" msgstr "" -#: assistant\commands\admin.py:732 +#: assistant\commands\admin.py:952 +#, docstring +msgid "\n" +" Set this guild's endpoint URL (used for both chat and embeddings)\n\n" +" The endpoint must be a full base URL ending in `/v1`, for example:\n" +" `https://openrouter.ai/api/v1`\n\n" +" Set the API key for this endpoint with `[p]assistant api key`.\n\n" +" After setting, use `[p]assistant set model` (no args) to open an\n" +" interactive model picker. Router endpoints like OpenRouter also\n" +" accept special aliases like `openrouter/auto` or `openrouter/free`.\n\n" +" Run without arguments to view the current guild endpoint.\n" +" Use `none` to remove the guild endpoint override.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:972 +msgid "Guild Endpoint Override" +msgstr "" + +#: assistant\commands\admin.py:973 +msgid "Current endpoint: `{}`" +msgstr "" + +#: assistant\commands\admin.py:983 +msgid "No guild endpoint override is set." +msgstr "" + +#: assistant\commands\admin.py:990 +msgid "Guild endpoint override has been removed!" +msgstr "" + +#: assistant\commands\admin.py:993 +msgid "No guild endpoint override was set." +msgstr "" + +#: assistant\commands\admin.py:1002 +msgid "Guild endpoint override set to `{}`" +msgstr "" + +#: assistant\commands\admin.py:1009 +msgid "Endpoint probed successfully!\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:1024 +msgid "Could not probe the endpoint automatically. You can still use it, but model discovery may be limited." +msgstr "" + +#: assistant\commands\admin.py:1032 +#, docstring +msgid "Clear this guild's endpoint override (URL and cached profile)" +msgstr "" + +#: assistant\commands\admin.py:1035 +msgid "No per-guild endpoint override is set." +msgstr "" + +#: assistant\commands\admin.py:1038 +msgid "Guild endpoint override has been cleared!" +msgstr "" + +#: assistant\commands\admin.py:1044 +#, docstring +msgid "Show this guild's API key and endpoint override status" +msgstr "" + +#: assistant\commands\admin.py:1047 +msgid "Guild API Overrides" +msgstr "" + +#: assistant\commands\admin.py:1051 +msgid "Guild API Key" +msgstr "" + +#: assistant\commands\admin.py:1052 +msgid "Set" +msgstr "" + +#: assistant\commands\admin.py:1052 +msgid "Not set (using global key)" +msgstr "" + +#: assistant\commands\admin.py:1056 +msgid "Endpoint Override" +msgstr "" + +#: assistant\commands\admin.py:1057 +msgid "Not set (using global)" +msgstr "" + +#: assistant\commands\admin.py:1070 #, docstring msgid "Set the timezone used for prompt placeholders" msgstr "Establecer la zona horaria utilizada para los marcadores de posición de aviso" -#: assistant\commands\admin.py:738 +#: assistant\commands\admin.py:1080 msgid "Invalid Timezone, did you mean `{}`?" msgstr "Zona horaria no válida, ¿quería decir `{}`?" -#: assistant\commands\admin.py:740 +#: assistant\commands\admin.py:1082 msgid "Timezone set to **{}** (`{}`)" msgstr "Zona horaria establecida en **{}** (`{}`)" -#: assistant\commands\admin.py:747 +#: assistant\commands\admin.py:1089 #, docstring msgid "\n" -" Set the initial prompt for GPT to use\n\n" +" Set the system prompt for GPT to use\n\n" " Check out [This Guide](https://platform.openai.com/docs/guides/prompt-engineering) for prompting help.\n\n" " **Placeholders**\n" " - **botname**: [botname]\n" @@ -686,72 +898,80 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:792 assistant\commands\admin.py:859 -#: assistant\commands\admin.py:941 assistant\commands\admin.py:998 -#: assistant\commands\admin.py:1275 assistant\commands\admin.py:1406 -#: assistant\commands\admin.py:1448 assistant\commands\base.py:791 +#: assistant\commands\admin.py:1134 assistant\commands\admin.py:1191 +#: assistant\commands\admin.py:1285 assistant\commands\admin.py:1356 +#: assistant\commands\admin.py:1622 assistant\commands\admin.py:1718 +#: assistant\commands\admin.py:1760 assistant\commands\base.py:836 msgid "Failed to read `{}`, bot owner can use `{}` for more information" msgstr "Error al leer `{}`, el propietario del bot puede usar `{}` para obtener más información" -#: assistant\commands\admin.py:810 assistant\commands\admin.py:882 -#: assistant\commands\admin.py:959 +#: assistant\commands\admin.py:1152 assistant\commands\admin.py:1303 +#: assistant\commands\admin.py:1379 msgid "Your system and initial prompt combined will use {} tokens!\n" "Write a prompt combination using {} tokens or less to leave 10% of your configured max tokens for your response." msgstr "Su sistema y la pregunta inicial combinados utilizarán {} tokens.\n" "Escriba una combinación de pregunta utilizando {} tokens o menos para dejar un 10% de sus tokens máximos configurados para su respuesta." -#: assistant\commands\admin.py:818 -msgid "The initial prompt has been removed!" -msgstr "¡El aviso inicial ha sido eliminado!" +#: assistant\commands\admin.py:1160 +msgid "The system prompt has been removed!" +msgstr "¡Se ha eliminado el aviso del sistema!" -#: assistant\commands\admin.py:821 -msgid "Please include an initial prompt or .txt file!\n" +#: assistant\commands\admin.py:1163 +msgid "Please include a system prompt or .txt file!\n" "Use `{}` to view details for this command" -msgstr "Por favor, incluye un prompt inicial o un archivo .txt.\n" +msgstr "Por favor, incluye un prompt del sistema o un archivo .txt.\n" "Utiliza `{}` para ver los detalles de este comando" -#: assistant\commands\admin.py:827 -msgid "The initial prompt has been overwritten!" -msgstr "¡El mensaje inicial ha sido sobrescrito!" +#: assistant\commands\admin.py:1169 +msgid "The system prompt has been overwritten!" +msgstr "¡El indicador del sistema ha sido sobrescrito!" -#: assistant\commands\admin.py:830 -msgid "Initial prompt has been set!" -msgstr "¡Se ha establecido el aviso inicial!" +#: assistant\commands\admin.py:1172 +msgid "System prompt has been set!" +msgstr "¡Se ha establecido el aviso del sistema!" -#: assistant\commands\admin.py:837 +#: assistant\commands\admin.py:1179 #, docstring -msgid "Show the channel specific system prompt" +msgid "\n" +" Set the global default system prompt used by servers that inherit the default prompt\n\n" +" - Run without arguments to view the current global default prompt\n" +" - Use `none` to reset to the built-in default prompt\n" +" - Servers with a custom system prompt keep using their custom prompt\n" +" " msgstr "" -#: assistant\commands\admin.py:840 -msgid "No channel prompt set for {}" +#: assistant\commands\admin.py:1203 +msgid "Current global default system prompt for servers using the default or an unset system prompt:" msgstr "" -#: assistant\commands\admin.py:852 -#, docstring -msgid "Set a channel specific system prompt" +#: assistant\commands\admin.py:1204 +msgid "Servers with a custom system prompt are unchanged." msgstr "" -#: assistant\commands\admin.py:869 -msgid "Channel prompt has been removed from {}!" +#: assistant\commands\admin.py:1207 +msgid "This is currently using the built-in default prompt." msgstr "" -#: assistant\commands\admin.py:872 -msgid "No channel prompt set for {}!" +#: assistant\commands\admin.py:1209 +msgid "This is currently using a custom default prompt." msgstr "" -#: assistant\commands\admin.py:888 -msgid "Channel prompt has been overwritten for {}!" +#: assistant\commands\admin.py:1215 +msgid "Please include a system prompt or .txt file, or use `none` to reset to the built-in default." msgstr "" -#: assistant\commands\admin.py:890 -msgid "Channel prompt has been set for {}!" +#: assistant\commands\admin.py:1221 +msgid "The global default system prompt has been reset to the built-in default. Servers using the default or an unset system prompt will use it immediately." msgstr "" -#: assistant\commands\admin.py:896 +#: assistant\commands\admin.py:1231 +msgid "The global default system prompt has been updated. Servers using the default or an unset system prompt will use it immediately." +msgstr "" + +#: assistant\commands\admin.py:1240 #, docstring msgid "\n" -" Set the system prompt for GPT to use\n\n" +" Set the initial prompt for GPT to use\n\n" " Check out [This Guide](https://platform.openai.com/docs/guides/prompt-engineering) for prompting help.\n\n" " **Placeholders**\n" " - **botname**: [botname]\n" @@ -790,213 +1010,205 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:967 -msgid "The system prompt has been removed!" -msgstr "¡Se ha eliminado el aviso del sistema!" +#: assistant\commands\admin.py:1311 +msgid "The initial prompt has been removed!" +msgstr "¡El aviso inicial ha sido eliminado!" -#: assistant\commands\admin.py:970 -msgid "Please include a system prompt or .txt file!\n" +#: assistant\commands\admin.py:1314 +msgid "Please include an initial prompt or .txt file!\n" "Use `{}` to view details for this command" -msgstr "Por favor, incluye un prompt del sistema o un archivo .txt.\n" +msgstr "Por favor, incluye un prompt inicial o un archivo .txt.\n" "Utiliza `{}` para ver los detalles de este comando" -#: assistant\commands\admin.py:976 -msgid "The system prompt has been overwritten!" -msgstr "¡El indicador del sistema ha sido sobrescrito!" +#: assistant\commands\admin.py:1320 +msgid "The initial prompt has been overwritten!" +msgstr "¡El mensaje inicial ha sido sobrescrito!" -#: assistant\commands\admin.py:979 -msgid "System prompt has been set!" -msgstr "¡Se ha establecido el aviso del sistema!" +#: assistant\commands\admin.py:1323 +msgid "Initial prompt has been set!" +msgstr "¡Se ha establecido el aviso inicial!" -#: assistant\commands\admin.py:986 +#: assistant\commands\admin.py:1334 #, docstring -msgid "\n" -" Set the global default system prompt used by servers that inherit the default prompt\n\n" -" - Run without arguments to view the current global default prompt\n" -" - Use `none` to reset to the built-in default prompt\n" -" - Servers with a custom system prompt keep using their custom prompt\n" -" " -msgstr "" - -#: assistant\commands\admin.py:1010 -msgid "Current global default system prompt for servers using the default or an unset system prompt:" +msgid "Show the channel specific system prompt" msgstr "" -#: assistant\commands\admin.py:1011 -msgid "Servers with a custom system prompt are unchanged." +#: assistant\commands\admin.py:1337 +msgid "No channel prompt set for {}" msgstr "" -#: assistant\commands\admin.py:1014 -msgid "This is currently using the built-in default prompt." +#: assistant\commands\admin.py:1349 +#, docstring +msgid "Set a channel specific system prompt" msgstr "" -#: assistant\commands\admin.py:1016 -msgid "This is currently using a custom default prompt." +#: assistant\commands\admin.py:1366 +msgid "Channel prompt has been removed from {}!" msgstr "" -#: assistant\commands\admin.py:1022 -msgid "Please include a system prompt or .txt file, or use `none` to reset to the built-in default." +#: assistant\commands\admin.py:1369 +msgid "No channel prompt set for {}!" msgstr "" -#: assistant\commands\admin.py:1028 -msgid "The global default system prompt has been reset to the built-in default. Servers using the default or an unset system prompt will use it immediately." +#: assistant\commands\admin.py:1385 +msgid "Channel prompt has been overwritten for {}!" msgstr "" -#: assistant\commands\admin.py:1038 -msgid "The global default system prompt has been updated. Servers using the default or an unset system prompt will use it immediately." +#: assistant\commands\admin.py:1387 +msgid "Channel prompt has been set for {}!" msgstr "" -#: assistant\commands\admin.py:1051 +#: assistant\commands\admin.py:1397 #, docstring msgid "Set the main auto-response channel for the assistant" msgstr "" -#: assistant\commands\admin.py:1056 +#: assistant\commands\admin.py:1402 msgid "Assistant channel has been removed" msgstr "El canal del asistente ha sido eliminado" -#: assistant\commands\admin.py:1059 +#: assistant\commands\admin.py:1405 msgid "Assistant channel has been overwritten" msgstr "El canal del asistente ha sido sobrescrito" -#: assistant\commands\admin.py:1062 +#: assistant\commands\admin.py:1408 msgid "Channel id has been set" msgstr "Se ha establecido el identificador de canal" -#: assistant\commands\admin.py:1068 +#: assistant\commands\admin.py:1414 #, docstring msgid "Toggle this channel as an auto-response channel" msgstr "" -#: assistant\commands\admin.py:1071 +#: assistant\commands\admin.py:1417 msgid "This channel is already set as the assistant channel!" msgstr "" -#: assistant\commands\admin.py:1074 +#: assistant\commands\admin.py:1420 msgid "I will no longer auto-respond to messages in this channel!" msgstr "" -#: assistant\commands\admin.py:1077 +#: assistant\commands\admin.py:1423 msgid "I will now auto-respond to messages in this channel!" msgstr "" -#: assistant\commands\admin.py:1082 +#: assistant\commands\admin.py:1428 #, docstring msgid "Toggle allowing per-conversation system prompt overriding" msgstr "Alternar la posibilidad de permitir la anulación del indicador del sistema por conversación" -#: assistant\commands\admin.py:1086 +#: assistant\commands\admin.py:1432 msgid "System prompt overriding **Disabled**, users cannot set per-convo system prompts" msgstr "Anulación del indicador del sistema **Deshabilitada**, los usuarios no pueden establecer indicadores de sistema por conversación" -#: assistant\commands\admin.py:1089 +#: assistant\commands\admin.py:1435 msgid "System prompt overriding **Enabled**, users can now set per-convo system prompts" msgstr "Anulación del indicador del sistema **Habilitada**, los usuarios ahora pueden establecer indicadores de sistema por conversación" -#: assistant\commands\admin.py:1094 +#: assistant\commands\admin.py:1440 #, docstring msgid "Toggle the assistant on or off" msgstr "Activar o desactivar el asistente" -#: assistant\commands\admin.py:1098 +#: assistant\commands\admin.py:1444 msgid "The assistant is now **Disabled**" msgstr "El asistente está ahora **Inhabilitado**" -#: assistant\commands\admin.py:1101 +#: assistant\commands\admin.py:1447 msgid "The assistant is now **Enabled**" msgstr "El asistente está ahora **Habilitado**" -#: assistant\commands\admin.py:1106 +#: assistant\commands\admin.py:1452 #, docstring msgid "Toggle the draw command on or off" msgstr "" -#: assistant\commands\admin.py:1110 +#: assistant\commands\admin.py:1456 msgid "The draw command is now **Disabled**" msgstr "" -#: assistant\commands\admin.py:1113 +#: assistant\commands\admin.py:1459 msgid "The draw command is now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1118 +#: assistant\commands\admin.py:1464 #, docstring msgid "Toggle the auto-answer feature on or off" msgstr "" -#: assistant\commands\admin.py:1122 +#: assistant\commands\admin.py:1468 msgid "Auto-answer has been **Disabled**" msgstr "" -#: assistant\commands\admin.py:1125 +#: assistant\commands\admin.py:1471 msgid "Auto-answer has been **Enabled**" msgstr "" -#: assistant\commands\admin.py:1130 +#: assistant\commands\admin.py:1476 #, docstring msgid "Set the auto-answer threshold for the bot" msgstr "" -#: assistant\commands\admin.py:1133 +#: assistant\commands\admin.py:1479 msgid "Auto-answer threshold has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1140 +#: assistant\commands\admin.py:1488 #, docstring msgid "Ignore a channel for auto-answer" msgstr "" -#: assistant\commands\admin.py:1151 +#: assistant\commands\admin.py:1499 msgid "Auto-answer will no longer ignore {}" msgstr "" -#: assistant\commands\admin.py:1154 assistant\commands\admin.py:1321 +#: assistant\commands\admin.py:1502 assistant\commands\admin.py:1670 msgid "Channel not found!" msgstr "" -#: assistant\commands\admin.py:1156 +#: assistant\commands\admin.py:1504 msgid "Auto-answer will now ignore {}" msgstr "" -#: assistant\commands\admin.py:1161 +#: assistant\commands\admin.py:1509 #, docstring msgid "Set the model used for auto-answer" msgstr "" -#: assistant\commands\admin.py:1168 +#: assistant\commands\admin.py:1517 msgid "Configured auto-answer model" msgstr "" -#: assistant\commands\admin.py:1171 assistant\commands\admin.py:1791 -#: assistant\commands\admin.py:1832 assistant\commands\admin.py:1834 -#: assistant\commands\admin.py:2903 +#: assistant\commands\admin.py:1520 assistant\commands\admin.py:2139 +#: assistant\commands\admin.py:2213 assistant\commands\admin.py:2215 +#: assistant\commands\admin.py:3978 msgid "Valid models are:\n" "{}" msgstr "Los modelos válidos son:\n" "{}" -#: assistant\commands\admin.py:1173 assistant\commands\admin.py:3374 +#: assistant\commands\admin.py:1522 assistant\commands\admin.py:4489 msgid "Invalid model, valid models are: {}" msgstr "" -#: assistant\commands\admin.py:1175 +#: assistant\commands\admin.py:1524 msgid "Auto-answer model has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1186 +#: assistant\commands\admin.py:1533 #, docstring msgid "Toggle the trigger word feature on or off" msgstr "" -#: assistant\commands\admin.py:1190 +#: assistant\commands\admin.py:1537 msgid "Trigger word feature has been **Disabled**" msgstr "" -#: assistant\commands\admin.py:1193 +#: assistant\commands\admin.py:1540 msgid "Trigger word feature has been **Enabled**" msgstr "" -#: assistant\commands\admin.py:1198 +#: assistant\commands\admin.py:1545 #, docstring msgid "\n" " Add or remove a trigger phrase (supports regex)\n\n" @@ -1009,23 +1221,23 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1212 +#: assistant\commands\admin.py:1559 msgid "That regex pattern is invalid!" msgstr "" -#: assistant\commands\admin.py:1217 +#: assistant\commands\admin.py:1564 msgid "⚠️ Warning: `{}` is a very broad pattern that may match most messages!" msgstr "" -#: assistant\commands\admin.py:1222 +#: assistant\commands\admin.py:1569 msgid "Trigger phrase `{}` has been **Removed**" msgstr "" -#: assistant\commands\admin.py:1225 +#: assistant\commands\admin.py:1572 msgid "Trigger phrase `{}` has been **Added**" msgstr "" -#: assistant\commands\admin.py:1230 +#: assistant\commands\admin.py:1577 #, docstring msgid "\n" " Set the prompt to use when a trigger phrase is matched\n\n" @@ -1067,100 +1279,66 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1287 +#: assistant\commands\admin.py:1634 msgid "The trigger prompt has been removed!" msgstr "" -#: assistant\commands\admin.py:1290 +#: assistant\commands\admin.py:1637 msgid "Please include a trigger prompt or .txt file!\n" "Use `{}` to view details for this command" msgstr "" -#: assistant\commands\admin.py:1296 +#: assistant\commands\admin.py:1643 msgid "The trigger prompt has been overwritten!" msgstr "" -#: assistant\commands\admin.py:1299 +#: assistant\commands\admin.py:1646 msgid "Trigger prompt has been set!" msgstr "" -#: assistant\commands\admin.py:1307 +#: assistant\commands\admin.py:1656 #, docstring msgid "Ignore a channel or category for trigger phrases" msgstr "" -#: assistant\commands\admin.py:1318 +#: assistant\commands\admin.py:1667 msgid "Trigger phrases will no longer ignore {}" msgstr "" -#: assistant\commands\admin.py:1323 +#: assistant\commands\admin.py:1672 msgid "Trigger phrases will now ignore {}" msgstr "" -#: assistant\commands\admin.py:1329 +#: assistant\commands\admin.py:1678 #, docstring msgid "View configured trigger phrases" msgstr "" -#: assistant\commands\admin.py:1332 +#: assistant\commands\admin.py:1681 msgid "No trigger phrases configured!" msgstr "" -#: assistant\commands\admin.py:1335 +#: assistant\commands\admin.py:1684 msgid "Trigger Phrases" msgstr "" -#: assistant\commands\admin.py:1336 +#: assistant\commands\admin.py:1685 msgid "The following phrases will trigger a response:\n" msgstr "" -#: assistant\commands\admin.py:1342 +#: assistant\commands\admin.py:1691 msgid "Patterns" msgstr "" -#: assistant\commands\admin.py:1345 +#: assistant\commands\admin.py:1694 msgid "Status" msgstr "" -#: assistant\commands\admin.py:1352 +#: assistant\commands\admin.py:1701 msgid "Ignored Channels" msgstr "" -#: assistant\commands\admin.py:1358 -#, docstring -msgid "Switch vision resolution between high and low for relevant GPT-4-Turbo models" -msgstr "" - -#: assistant\commands\admin.py:1362 -msgid "Vision resolution has been set to **Low**" -msgstr "" - -#: assistant\commands\admin.py:1365 -msgid "Vision resolution has been set to **High**" -msgstr "" - -#: assistant\commands\admin.py:1368 -msgid "Vision resolution has been set to **Auto**" -msgstr "" - -#: assistant\commands\admin.py:1373 -#, docstring -msgid "Switch reasoning effort between none, minimal, low, medium, high, and xhigh\n\n" -" Not all models support every level. Unsupported levels are automatically mapped to the closest supported value.\n" -" - **none**: No reasoning (gpt-5.4 only, skipped for other models)\n" -" - **minimal**: Minimal reasoning (gpt-5 only, mapped to low for o-series)\n" -" - **low**: Low reasoning effort\n" -" - **medium**: Medium reasoning effort\n" -" - **high**: High reasoning effort\n" -" - **xhigh**: Maximum reasoning (gpt-5.4 only, mapped to high for other models)\n" -" " -msgstr "" - -#: assistant\commands\admin.py:1390 -msgid "Reasoning effort has been set to **{}**" -msgstr "" - -#: assistant\commands\admin.py:1395 +#: assistant\commands\admin.py:1707 #, docstring msgid "\n" " Set the prefix used to detect model thinking blocks\n\n" @@ -1169,29 +1347,29 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1417 +#: assistant\commands\admin.py:1729 msgid "Think tag prefix is already set to the default value." msgstr "" -#: assistant\commands\admin.py:1420 +#: assistant\commands\admin.py:1732 msgid "Think tag prefix reset to default:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1426 +#: assistant\commands\admin.py:1738 msgid "Think tag prefix cannot be empty." msgstr "" -#: assistant\commands\admin.py:1429 +#: assistant\commands\admin.py:1741 msgid "Think tag prefix is already set to that value." msgstr "" -#: assistant\commands\admin.py:1432 +#: assistant\commands\admin.py:1744 msgid "Think tag prefix has been set to:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1437 +#: assistant\commands\admin.py:1749 #, docstring msgid "\n" " Set the suffix used to detect model thinking blocks\n\n" @@ -1200,68 +1378,68 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1459 +#: assistant\commands\admin.py:1771 msgid "Think tag suffix is already set to the default value." msgstr "" -#: assistant\commands\admin.py:1462 +#: assistant\commands\admin.py:1774 msgid "Think tag suffix reset to default:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1468 +#: assistant\commands\admin.py:1780 msgid "Think tag suffix cannot be empty." msgstr "" -#: assistant\commands\admin.py:1471 +#: assistant\commands\admin.py:1783 msgid "Think tag suffix is already set to that value." msgstr "" -#: assistant\commands\admin.py:1474 +#: assistant\commands\admin.py:1786 msgid "Think tag suffix has been set to:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1479 +#: assistant\commands\admin.py:1791 #, docstring msgid "Toggle whether questions need to end with **__?__**" msgstr "Alternar si las preguntas necesitan terminar con **__?__**" -#: assistant\commands\admin.py:1483 +#: assistant\commands\admin.py:1795 msgid "Questions will be answered regardless of if they end with **?**" msgstr "Las preguntas se responderán independientemente de si terminan con **?**" -#: assistant\commands\admin.py:1486 +#: assistant\commands\admin.py:1798 msgid "Questions must end in **?** to be answered" msgstr "Las preguntas deben terminar en **?** para ser respondidas" -#: assistant\commands\admin.py:1491 +#: assistant\commands\admin.py:1803 #, docstring msgid "Toggle whether the bot responds to mentions in any channel" msgstr "Alternar si el bot responde a las menciones en cualquier canal" -#: assistant\commands\admin.py:1495 +#: assistant\commands\admin.py:1807 msgid "The bot will no longer respond to mentions" msgstr "El bot ya no responderá a menciones" -#: assistant\commands\admin.py:1498 +#: assistant\commands\admin.py:1810 msgid "The bot will now respond to mentions" msgstr "El bot ahora responderá a menciones" -#: assistant\commands\admin.py:1503 +#: assistant\commands\admin.py:1815 #, docstring msgid "Toggle whether to ping the user on replies" msgstr "Alternar si hacer ping al usuario en las respuestas" -#: assistant\commands\admin.py:1507 +#: assistant\commands\admin.py:1819 msgid "Mentions are now **Disabled**" msgstr "Las menciones están ahora **Deshabilitadas**" -#: assistant\commands\admin.py:1510 +#: assistant\commands\admin.py:1822 msgid "Mentions are now **Enabled**" msgstr "Las menciones están ahora **Habilitadas**" -#: assistant\commands\admin.py:1515 +#: assistant\commands\admin.py:1827 #, docstring msgid "\n" " Toggle collaborative conversations\n\n" @@ -1272,44 +1450,39 @@ msgstr "\n" " Varias personas hablando en un canal serán tratadas como una sola conversación.\n" " " -#: assistant\commands\admin.py:1523 +#: assistant\commands\admin.py:1835 msgid "Collaborative conversations are now **Disabled**" msgstr "Las conversaciones colaborativas están ahora **Deshabilitadas**" -#: assistant\commands\admin.py:1526 +#: assistant\commands\admin.py:1838 msgid "Collaborative conversations are now **Enabled**" msgstr "Las conversaciones colaborativas están ahora **Habilitadas**" -#: assistant\commands\admin.py:1556 +#: assistant\commands\admin.py:1843 #, docstring msgid "\n" " Set the max messages for a conversation\n\n" " Conversation retention is cached and gets reset when the bot restarts or the cog reloads.\n\n" " Regardless of this number, the initial prompt and internal system message are always included,\n" " this only applies to any conversation between the user and bot after that.\n\n" -" Set to 0 to disable conversation retention\n\n" +" Set to 0 for unlimited conversation retention\n\n" " **Note:** *actual message count may exceed the max retention during an API call*\n" " " -msgstr "\n" -"Establecer el número máximo de mensajes para una conversación\n\n" -"La retención de conversaciones se almacena en caché y se restablece cuando el bot se reinicia o se recarga el cog.\n\n" -"Independientemente de este número, el mensaje inicial y el mensaje interno del sistema siempre se incluyen, esto solo se aplica a cualquier conversación entre el usuario y el bot después de eso.\n\n" -"Establecer en 0 para desactivar la retención de conversación\n\n" -"**Nota:** *El número real de mensajes puede superar el máximo de retención durante una llamada a la API* " +msgstr "" -#: assistant\commands\admin.py:1569 assistant\commands\admin.py:2981 +#: assistant\commands\admin.py:1856 assistant\commands\admin.py:4060 msgid "Max retention needs to be at least 0 or higher" msgstr "La retención máxima debe ser al menos 0 o superior" -#: assistant\commands\admin.py:1573 -msgid "Conversation retention has been disabled" -msgstr "Se ha desactivado la retención de conversaciones" +#: assistant\commands\admin.py:1860 +msgid "Message retention is now **unlimited**" +msgstr "" -#: assistant\commands\admin.py:1575 +#: assistant\commands\admin.py:1862 msgid "Conversations can now retain up to **{}** messages" msgstr "Ahora las conversaciones pueden retener hasta **{}** mensajes" -#: assistant\commands\admin.py:1580 +#: assistant\commands\admin.py:1867 #, docstring msgid "\n" " Set the conversation expiration time\n\n" @@ -1323,19 +1496,59 @@ msgstr "\n" "esto solo se aplica a cualquier conversación entre el usuario y el bot después de eso.\n\n" "Ajustar a 0 para almacenar las conversaciones indefinidamente o hasta que el bot se reinicie o el cog se recargue " -#: assistant\commands\admin.py:1589 assistant\commands\admin.py:3004 +#: assistant\commands\admin.py:1876 assistant\commands\admin.py:4083 msgid "Max retention time needs to be at least 0 or higher" msgstr "El tiempo máximo de retención debe ser al menos 0 o superior" -#: assistant\commands\admin.py:1593 +#: assistant\commands\admin.py:1880 msgid "Conversations will be stored until the bot restarts or the cog is reloaded" msgstr "Las conversaciones se almacenarán hasta que el bot se reinicie o se recargue el engranaje" -#: assistant\commands\admin.py:1595 +#: assistant\commands\admin.py:1882 msgid "Conversations will be considered active for **{}** seconds" msgstr "Las conversaciones se considerarán activas durante **{}** segundos" -#: assistant\commands\admin.py:1600 +#: assistant\commands\admin.py:1887 +#, docstring +msgid "\n" +" Set maximum tokens a convo can consume\n\n" +" Set to 0 for dynamic token usage\n\n" +" **Tips**\n" +" - Max tokens are a soft cap, sometimes messages can be a little over\n" +" - If you set max tokens too high the cog will auto-adjust to 100 less than the models natural cap\n" +" - Ideally set max to 500 less than that models maximum, to allow adequate responses\n\n" +" Using more than the model can handle will raise exceptions.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:1902 +msgid "The maximum amount of tokens sent in a payload will be {}.\n" +"*Note that models with token limits lower than this will still be trimmed*" +msgstr "La cantidad máxima de tokens enviados en una carga útil será {}.\n" +"*Tenga en cuenta que los modelos con límites de tokens inferiores a este se recortarán igualmente*" + +#: assistant\commands\admin.py:1907 +msgid "The maximum amount of tokens sent in a payload will be dynamic" +msgstr "" + +#: assistant\commands\admin.py:1913 +#, docstring +msgid "\n" +" Set the max response tokens the model can respond with\n\n" +" Set to 0 for response tokens to be dynamic\n" +" " +msgstr "Establece el máximo de tokens de respuesta con los que puede responder el modelo.\n\n" +"Establece 0 para que los tokens de respuesta sean dinámicos " + +#: assistant\commands\admin.py:1921 +msgid "The maximum amount of tokens in the models responses will be {}." +msgstr "La cantidad máxima de fichas en las respuestas de los modelos será {}." + +#: assistant\commands\admin.py:1923 +msgid "Response tokens will now be dynamic" +msgstr "Los tokens de respuesta ahora serán dinámicos" + +#: assistant\commands\admin.py:1929 #, docstring msgid "\n" " Set the temperature for the model (0.0 - 2.0)\n" @@ -1348,15 +1561,15 @@ msgstr "\n" " Más cerca de 0 es más conciso y preciso mientras que más cerca de 2 es más imaginativo\n" " " -#: assistant\commands\admin.py:1607 +#: assistant\commands\admin.py:1936 msgid "Temperature must be between **0.0** and **2.0**" msgstr "La temperatura debe estar entre **0.0** y **2.0**" -#: assistant\commands\admin.py:1612 +#: assistant\commands\admin.py:1941 msgid "Temperature has been set to **{}**" msgstr "La temperatura se ha establecido en **{}**" -#: assistant\commands\admin.py:1616 +#: assistant\commands\admin.py:1945 #, docstring msgid "\n" " Set the frequency penalty for the model (-2.0 to 2.0)\n" @@ -1369,15 +1582,15 @@ msgstr "\n" " Los valores positivos penalizan los nuevos tokens según su frecuencia existente en el texto hasta ese momento, disminuyendo la probabilidad de que el modelo repita la misma línea literalmente.\n" " " -#: assistant\commands\admin.py:1623 +#: assistant\commands\admin.py:1952 msgid "Frequency penalty must be between **-2.0** and **2.0**" msgstr "La penalización de frecuencia debe estar entre **-2.0** y **2.0**" -#: assistant\commands\admin.py:1628 +#: assistant\commands\admin.py:1957 msgid "Frequency penalty has been set to **{}**" msgstr "La penalización de frecuencia se ha establecido en **{}**" -#: assistant\commands\admin.py:1632 +#: assistant\commands\admin.py:1961 #, docstring msgid "\n" " Set the presence penalty for the model (-2.0 to 2.0)\n" @@ -1390,15 +1603,49 @@ msgstr "\n" " Los valores positivos penalizan los nuevos tokens según si aparecen en el texto hasta ahora, aumentando la probabilidad de que el modelo hable sobre nuevos temas.\n" " " -#: assistant\commands\admin.py:1639 +#: assistant\commands\admin.py:1968 msgid "Presence penalty must be between **-2.0** and **2.0**" msgstr "La penalización de presencia debe estar entre **-2.0** y **2.0**" -#: assistant\commands\admin.py:1644 +#: assistant\commands\admin.py:1973 msgid "Presence penalty has been set to **{}**" msgstr "La penalización de presencia se ha establecido en **{}**" -#: assistant\commands\admin.py:1648 +#: assistant\commands\admin.py:1977 +#, docstring +msgid "Switch vision resolution between high and low for relevant GPT-4-Turbo models" +msgstr "" + +#: assistant\commands\admin.py:1981 +msgid "Vision resolution has been set to **Low**" +msgstr "" + +#: assistant\commands\admin.py:1984 +msgid "Vision resolution has been set to **High**" +msgstr "" + +#: assistant\commands\admin.py:1987 +msgid "Vision resolution has been set to **Auto**" +msgstr "" + +#: assistant\commands\admin.py:1992 +#, docstring +msgid "Switch reasoning effort between none, minimal, low, medium, high, and xhigh\n\n" +" Not all models support every level. Unsupported levels are automatically mapped to the closest supported value.\n" +" - **none**: No reasoning (gpt-5.4 only, skipped for other models)\n" +" - **minimal**: Minimal reasoning (gpt-5 only, mapped to low for o-series)\n" +" - **low**: Low reasoning effort\n" +" - **medium**: Medium reasoning effort\n" +" - **high**: High reasoning effort\n" +" - **xhigh**: Maximum reasoning (gpt-5.4 only, mapped to high for other models)\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2009 +msgid "Reasoning effort has been set to **{}**" +msgstr "" + +#: assistant\commands\admin.py:2014 #, docstring msgid "\n" " Make the model more deterministic by setting a seed for the model.\n" @@ -1411,15 +1658,15 @@ msgstr "\n" " Si se especifica, el sistema hará un mejor esfuerzo para muestrear de manera determinista, de modo que las solicitudes repetidas con la misma semilla y parámetros deben devolver el mismo resultado.\n" " " -#: assistant\commands\admin.py:1655 +#: assistant\commands\admin.py:2021 msgid "Seed must be a positive integer" msgstr "La semilla debe ser un número entero positivo" -#: assistant\commands\admin.py:1659 +#: assistant\commands\admin.py:2025 msgid "The seed has been set to **{}**" msgstr "La semilla se ha establecido en **{}**" -#: assistant\commands\admin.py:1663 +#: assistant\commands\admin.py:2032 #, docstring msgid "\n" " Refresh embedding weights\n\n" @@ -1432,47 +1679,43 @@ msgstr "\n" " Las incrustaciones que fueron creadas utilizando OpenAI no se pueden utilizar con el modelo autoalojado y viceversa\n" " " -#: assistant\commands\admin.py:1676 +#: assistant\commands\admin.py:2045 msgid "{} embeddings have been updated" msgstr "Las incrustaciones {} han sido actualizadas" -#: assistant\commands\admin.py:1678 +#: assistant\commands\admin.py:2047 msgid "No embeddings needed to be refreshed" msgstr "No es necesario actualizar las incrustaciones" -#: assistant\commands\admin.py:1682 +#: assistant\commands\admin.py:2051 #, docstring msgid "Toggle whether GPT can call functions" msgstr "" -#: assistant\commands\admin.py:1686 +#: assistant\commands\admin.py:2055 msgid "Assistant will not call functions" msgstr "El asistente no llamará a las funciones" -#: assistant\commands\admin.py:1689 +#: assistant\commands\admin.py:2058 msgid "Assistant will now call functions as needed" msgstr "El asistente ahora llamará a las funciones según sea necesario" -#: assistant\commands\admin.py:1694 +#: assistant\commands\admin.py:2063 #, docstring msgid "Set the maximum function calls allowed in a row\n\n" -" This sets how many times the model can call functions in a row\n\n" -" Only the following models can call functions at the moment\n" -" - gpt-4o-mini\n" -" - gpt-4o\n" -" - ect..\n" +" This sets how many times the model can call functions in a row\n" " " msgstr "" -#: assistant\commands\admin.py:1706 +#: assistant\commands\admin.py:2070 msgid "Function calls will not be used since recursion is 0" msgstr "Las llamadas a funciones no se utilizarán ya que la recursión es 0" -#: assistant\commands\admin.py:1708 +#: assistant\commands\admin.py:2072 msgid "The model can now call various functions up to {} times before returning a response" msgstr "El modelo ahora puede llamar a varias funciones hasta {} veces antes de devolver una respuesta" -#: assistant\commands\admin.py:1714 +#: assistant\commands\admin.py:2078 #, docstring msgid "\n" " set min character length for questions\n\n" @@ -1481,89 +1724,64 @@ msgid "\n" msgstr "Establecer la longitud mínima de caracteres para las preguntas.\n\n" "Establecer en 0 para responder a cualquier cosa " -#: assistant\commands\admin.py:1720 +#: assistant\commands\admin.py:2084 msgid "Minimum length needs to be at least 0 or higher" msgstr "La longitud mínima debe ser al menos 0 o superior" -#: assistant\commands\admin.py:1724 +#: assistant\commands\admin.py:2088 msgid "{} will respond regardless of message length" msgstr "{} responderá independientemente de la longitud del mensaje" -#: assistant\commands\admin.py:1727 +#: assistant\commands\admin.py:2091 msgid "{} will respond to messages with more than **{}** characters" msgstr "{} responderá a mensajes con más de **{}** caracteres" -#: assistant\commands\admin.py:1735 +#: assistant\commands\admin.py:2099 #, docstring msgid "\n" -" Set maximum tokens a convo can consume\n\n" -" Set to 0 for dynamic token usage\n\n" -" **Tips**\n" -" - Max tokens are a soft cap, sometimes messages can be a little over\n" -" - If you set max tokens too high the cog will auto-adjust to 100 less than the models natural cap\n" -" - Ideally set max to 500 less than that models maximum, to allow adequate responses\n\n" -" Using more than the model can handle will raise exceptions.\n" +" Set the chat model to use\n\n" +" Run without arguments to open an interactive picker that lists every\n" +" model your endpoint advertises, grouped by provider. The picker also\n" +" accepts manual entry - useful for router aliases like\n" +" `openrouter/auto` or `openrouter/free`.\n" " " msgstr "" -#: assistant\commands\admin.py:1750 -msgid "The maximum amount of tokens sent in a payload will be {}.\n" -"*Note that models with token limits lower than this will still be trimmed*" -msgstr "La cantidad máxima de tokens enviados en una carga útil será {}.\n" -"*Tenga en cuenta que los modelos con límites de tokens inferiores a este se recortarán igualmente*" - -#: assistant\commands\admin.py:1755 -msgid "The maximum amount of tokens sent in a payload will be dynamic" +#: assistant\commands\admin.py:2121 +msgid "Could not probe `{}` to discover available models. Try setting a model id manually, e.g. `{}assistant set model openrouter/auto`." msgstr "" -#: assistant\commands\admin.py:1761 -#, docstring -msgid "\n" -" Set the max response tokens the model can respond with\n\n" -" Set to 0 for response tokens to be dynamic\n" -" " -msgstr "Establece el máximo de tokens de respuesta con los que puede responder el modelo.\n\n" -"Establece 0 para que los tokens de respuesta sean dinámicos " - -#: assistant\commands\admin.py:1769 -msgid "The maximum amount of tokens in the models responses will be {}." -msgstr "La cantidad máxima de fichas en las respuestas de los modelos será {}." - -#: assistant\commands\admin.py:1771 -msgid "Response tokens will now be dynamic" -msgstr "Los tokens de respuesta ahora serán dinámicos" - -#: assistant\commands\admin.py:1777 -#, docstring -msgid "\n" -" Set the OpenAI model to use\n" -" " -msgstr "\n" -" Establezca el modelo OpenAI a usar\n" -" " - -#: assistant\commands\admin.py:1798 assistant\commands\admin.py:2910 +#: assistant\commands\admin.py:2146 assistant\commands\admin.py:3985 msgid "Error: {}" msgstr "Error: {}" -#: assistant\commands\admin.py:1802 +#: assistant\commands\admin.py:2150 msgid "The **{}** model will now be used" msgstr "El modelo **{}** ahora será utilizado" -#: assistant\commands\admin.py:1809 +#: assistant\commands\admin.py:2157 msgid "**Note**: Starting with `o1-2024-12-17`, reasoning models in the API will avoid generating responses with markdown formatting. To signal to the model when you do want markdown formatting in the response, include the string `Formatting re-enabled` on the first line of your system message." msgstr "" -#: assistant\commands\admin.py:1818 +#: assistant\commands\admin.py:2166 #, docstring -msgid "Set the OpenAI Embedding model to use" -msgstr "Establecer el modelo de incrustación de OpenAI a utilizar" +msgid "\n" +" Set the embedding model to use\n\n" +" Run without arguments to open an interactive picker that lists\n" +" every embedding model your endpoint advertises, grouped by provider.\n" +" Embeddings use the same endpoint as chat.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2192 +msgid "Could not probe `{}` to discover available embedding models. Try setting an id manually, e.g. `{}assistant embed model text-embedding-3-small`." +msgstr "" -#: assistant\commands\admin.py:1836 +#: assistant\commands\admin.py:2217 msgid "The **{}** model will now be used for embeddings" msgstr "El modelo **{}** ahora será utilizado para las incrustaciones" -#: assistant\commands\admin.py:1845 +#: assistant\commands\admin.py:2225 #, docstring msgid "\n" " Wipe saved embeddings for the assistant\n\n" @@ -1572,15 +1790,15 @@ msgid "\n" msgstr "Borrar las incrustaciones guardadas para el asistente.\n\n" "Esto eliminará todos y cada uno de los datos de entrenamiento de incrustación guardados para el asistente " -#: assistant\commands\admin.py:1851 assistant\commands\admin.py:3257 +#: assistant\commands\admin.py:2231 assistant\commands\admin.py:4373 msgid "Not wiping embedding data" msgstr "No borrar los datos incrustados" -#: assistant\commands\admin.py:1855 +#: assistant\commands\admin.py:2235 msgid "All embedding data has been wiped!" msgstr "¡Se han borrado todos los datos de incrustación!" -#: assistant\commands\admin.py:1860 +#: assistant\commands\admin.py:2240 #, docstring msgid "\n" " Wipe saved conversations for the assistant in this server\n\n" @@ -1589,15 +1807,15 @@ msgid "\n" msgstr "Borrar conversaciones guardadas para el asistente en este servidor.\n\n" "Esto borrará todas y cada una de las conversaciones guardadas para el asistente " -#: assistant\commands\admin.py:1866 assistant\commands\admin.py:3218 +#: assistant\commands\admin.py:2246 assistant\commands\admin.py:4334 msgid "Not wiping conversations" msgstr "No borrar conversaciones" -#: assistant\commands\admin.py:1870 +#: assistant\commands\admin.py:2250 msgid "Conversations have been wiped in this server!" msgstr "¡Se han borrado las conversaciones en este servidor!" -#: assistant\commands\admin.py:1875 +#: assistant\commands\admin.py:2255 #, docstring msgid "\n" " Set the embedding inclusion amout\n\n" @@ -1605,19 +1823,19 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1881 +#: assistant\commands\admin.py:2261 msgid "Top N must be between 0 and 10" msgstr "Top N debe estar entre 0 y 10" -#: assistant\commands\admin.py:1885 +#: assistant\commands\admin.py:2265 msgid "Embeddings will not be pulled during conversations" msgstr "Las incrustaciones no se extraerán durante las conversaciones" -#: assistant\commands\admin.py:1887 +#: assistant\commands\admin.py:2267 msgid "Up to **{}** embeddings will be pulled for each interaction" msgstr "Se extraerán hasta **{}** incrustaciones por cada interacción" -#: assistant\commands\admin.py:1892 +#: assistant\commands\admin.py:2272 #, docstring msgid "\n" " Set the minimum relatedness an embedding must be to include with the prompt\n\n" @@ -1630,32 +1848,32 @@ msgstr "Establezca el nivel mínimo de relación que debe tener una incrustació "Las preguntas se convierten en incrustaciones y se comparan con las incrustaciones almacenadas para obtener las más relevantes. Esta es la puntuación que se deriva de esa comparación.\n\n" "**Consejo**: Cuanto más cerca esté de 1, más deterministas y precisos serán los resultados, pero no sea *demasiado* estricto o no habrá ningún resultado " -#: assistant\commands\admin.py:1902 +#: assistant\commands\admin.py:2282 msgid "Minimum relatedness must be between 0 and 1" msgstr "El parentesco mínimo debe estar entre 0 y 1" -#: assistant\commands\admin.py:1905 +#: assistant\commands\admin.py:2285 msgid "Minimum relatedness has been set to **{}**" msgstr "El parentesco mínimo se ha establecido en **{}**" -#: assistant\commands\admin.py:1910 +#: assistant\commands\admin.py:2290 #, docstring msgid "Remove certain words/phrases in the bot's responses" msgstr "Eliminar ciertas palabras/frases en las respuestas del bot" -#: assistant\commands\admin.py:1914 +#: assistant\commands\admin.py:2294 msgid "That regex is invalid" msgstr "Esa expresión regular no es válida" -#: assistant\commands\admin.py:1918 +#: assistant\commands\admin.py:2298 msgid "`{}` has been **Removed** from the blacklist" msgstr "`{}` ha sido **eliminado** de la lista negra" -#: assistant\commands\admin.py:1921 +#: assistant\commands\admin.py:2301 msgid "`{}` has been **Added** to the blacklist" msgstr "`{}` ha sido **Agregado** a la lista negra" -#: assistant\commands\admin.py:1926 +#: assistant\commands\admin.py:2306 #, docstring msgid "\n" " Toggle whether failed regex blocks the assistant's reply\n\n" @@ -1666,15 +1884,15 @@ msgstr "Alternar si la regex fallida bloquea la respuesta del asistente.\n\n" "Algunas regex pueden causar [retroceso catastrófico](https://www.rexegg.com/regex-explosive-quantifiers.html).\n" "El bot puede manejar esto de manera segura y continuará o bloqueará la respuesta " -#: assistant\commands\admin.py:1935 +#: assistant\commands\admin.py:2315 msgid "If a regex blacklist fails, the bots reply will be blocked" msgstr "Si una lista negra de expresiones regulares falla, la respuesta del bot será bloqueada" -#: assistant\commands\admin.py:1938 +#: assistant\commands\admin.py:2318 msgid "If a reges blacklist fails, the bot will still reply" msgstr "Si una lista negra de reges falla, el bot seguirá respondiendo" -#: assistant\commands\admin.py:1943 +#: assistant\commands\admin.py:2323 #, docstring msgid "\n" " Toggle question mode\n\n" @@ -1685,15 +1903,15 @@ msgstr "\n" " Si el modo de preguntas está activado, las incrustaciones solo se obtendrán durante el primer mensaje de una conversación y los mensajes que terminen en **?**\n" " " -#: assistant\commands\admin.py:1951 +#: assistant\commands\admin.py:2331 msgid "Question mode is now **Disabled**" msgstr "El modo de preguntas está ahora **Deshabilitado**" -#: assistant\commands\admin.py:1954 +#: assistant\commands\admin.py:2334 msgid "Question mode is now **Enabled**" msgstr "El modo de preguntas está ahora **Habilitado**" -#: assistant\commands\admin.py:1959 +#: assistant\commands\admin.py:2339 #, docstring msgid "Import embeddings to use with the assistant\n\n" " Args:\n" @@ -1705,60 +1923,60 @@ msgstr "Importar incrustaciones para usar con el asistente\n\n" " overwrite (bool): sobrescribir las incrustaciones con nombres de entrada existentes\n\n" " Esto también leerá archivos de Excel " -#: assistant\commands\admin.py:1972 +#: assistant\commands\admin.py:2352 msgid "You must attach **.csv** files to this command or reference a message that has them!" msgstr "¡Debe adjuntar archivos **.csv** a este comando o hacer referencia a un mensaje que los contenga!" -#: assistant\commands\admin.py:1985 assistant\commands\admin.py:2062 -#: assistant\commands\admin.py:2122 +#: assistant\commands\admin.py:2365 assistant\commands\admin.py:2442 +#: assistant\commands\admin.py:2505 msgid "Error reading **{}**: {}" msgstr "Error al leer **{}**: {}" -#: assistant\commands\admin.py:1990 +#: assistant\commands\admin.py:2370 msgid "**{}** contains invalid formatting, columns must be " msgstr "**{}** contiene un formato no válido, las columnas deben ser " -#: assistant\commands\admin.py:1998 +#: assistant\commands\admin.py:2378 msgid "There are no valid files to import!" msgstr "¡No hay archivos válidos para importar!" -#: assistant\commands\admin.py:2000 assistant\commands\admin.py:2137 +#: assistant\commands\admin.py:2380 assistant\commands\admin.py:2520 msgid "Processing the following files in the background\n" "{}" msgstr "Procesando los siguientes archivos en segundo plano\n" "{}" -#: assistant\commands\admin.py:2014 assistant\commands\admin.py:2148 +#: assistant\commands\admin.py:2394 assistant\commands\admin.py:2531 msgid "processing" msgstr "procesamiento" -#: assistant\commands\admin.py:2016 assistant\commands\admin.py:2150 +#: assistant\commands\admin.py:2396 assistant\commands\admin.py:2533 msgid "overwriting" msgstr "sobrescribiendo" -#: assistant\commands\admin.py:2024 assistant\commands\admin.py:2158 +#: assistant\commands\admin.py:2404 assistant\commands\admin.py:2541 msgid "{}\n" "`Currently {}: `**{}** ({}/{})" msgstr "{}\n" "`Actualmente {}: `**{}** ({}/{})" -#: assistant\commands\admin.py:2030 assistant\commands\admin.py:2165 +#: assistant\commands\admin.py:2410 assistant\commands\admin.py:2551 msgid "Failed to process embedding: `{}`" msgstr "Error al procesar la incrustación: `{}`" -#: assistant\commands\admin.py:2035 assistant\commands\admin.py:2178 -#: assistant\commands\admin.py:2182 +#: assistant\commands\admin.py:2415 assistant\commands\admin.py:2564 +#: assistant\commands\admin.py:2568 msgid "{}\n" "**COMPLETE**" msgstr "{}\n" "**COMPLETAR**\n" "**COMPLETADO**" -#: assistant\commands\admin.py:2036 assistant\commands\admin.py:2179 +#: assistant\commands\admin.py:2416 assistant\commands\admin.py:2565 msgid "Successfully imported {} embeddings!" msgstr "¡Importado con éxito {} incrustaciones!" -#: assistant\commands\admin.py:2041 +#: assistant\commands\admin.py:2421 #, docstring msgid "Import embeddings to use with the assistant\n\n" " Args:\n" @@ -1768,306 +1986,920 @@ msgstr "Importar incrustaciones para usar con el asistente\n\n" " Args:\n" " overwrite (bool): sobrescribir las incrustaciones con nombres de entrada existentes " -#: assistant\commands\admin.py:2050 assistant\commands\admin.py:3202 +#: assistant\commands\admin.py:2430 assistant\commands\admin.py:4318 msgid "You must attach **.json** files to this command or reference a message that has them!" msgstr "¡Debe adjuntar archivos **.json** a este comando o hacer referencia a un mensaje que los contenga!" -#: assistant\commands\admin.py:2086 +#: assistant\commands\admin.py:2469 msgid "Failed to import **{}** because it contains invalid formatting!" msgstr "¡No se pudo importar **{}** porque contiene un formato no válido!" -#: assistant\commands\admin.py:2091 +#: assistant\commands\admin.py:2474 msgid "Imported the following files: `{}`\n" "{} embeddings imported" msgstr "Importados los siguientes archivos: `{}`\n" "Se importaron {} incrustaciones" -#: assistant\commands\admin.py:2099 +#: assistant\commands\admin.py:2482 +#, docstring +msgid "Import embeddings from an .xlsx file\n\n" +" Args:\n" +" overwrite (bool): overwrite embeddings with existing entry names\n" +" " +msgstr "Importar incrustaciones desde un archivo .xlsx\n\n" +" Args:\n" +" overwrite (bool): sobrescribir las incrustaciones con nombres de entrada existentes\n" +" " + +#: assistant\commands\admin.py:2491 +msgid "You must attach **.xlsx** files to this command or reference a message that has them!" +msgstr "¡Debe adjuntar archivos **.xlsx** a este comando o hacer referencia a un mensaje que los contenga!" + +#: assistant\commands\admin.py:2512 +msgid "{} is invalid! Must contain the following columns: {}" +msgstr "{} es inválido! Debe contener las siguientes columnas: {}" + +#: assistant\commands\admin.py:2569 +msgid "No embeddings needed to be updated!" +msgstr "¡No es necesario actualizar las incrustaciones!" + +#: assistant\commands\admin.py:2574 +#, docstring +msgid "\n" +" Export embeddings to an .xlsx file\n\n" +" **Note:** csv exports do not include the embedding values\n" +" " +msgstr "\n" +" Exportar incrustaciones a un archivo .xlsx\n\n" +" **Nota:** las exportaciones csv no incluyen los valores de incrustación\n" +" " + +#: assistant\commands\admin.py:2581 assistant\commands\admin.py:2627 +#: assistant\commands\admin.py:2671 +msgid "There are no embeddings to export!" +msgstr "¡No hay incrustaciones para exportar!" + +#: assistant\commands\admin.py:2621 +#, docstring +msgid "Export embeddings to a .csv file\n\n" +" **Note:** csv exports do not include the embedding values\n" +" " +msgstr "Exportar incrustaciones a un archivo .csv\n\n" +" **Nota:** las exportaciones csv no incluyen los valores de incrustación " + +#: assistant\commands\admin.py:2640 assistant\commands\admin.py:2660 +#: assistant\commands\admin.py:2679 assistant\commands\admin.py:2699 +#: assistant\commands\admin.py:4304 +msgid "Here is your embeddings export!" +msgstr "¡Aquí está su exportación de incrustaciones!" + +#: assistant\commands\admin.py:2643 assistant\commands\admin.py:2682 +#: assistant\commands\admin.py:4286 +msgid "File too large, attempting to compress..." +msgstr "Archivo demasiado grande, intentando comprimir..." + +#: assistant\commands\admin.py:2663 assistant\commands\admin.py:2702 +#: assistant\commands\admin.py:4307 +msgid "File is still too large even with compression!" +msgstr "¡El archivo sigue siendo demasiado grande incluso con compresión!" + +#: assistant\commands\admin.py:2668 +#, docstring +msgid "Export embeddings to a json file" +msgstr "Exportar incrustaciones a un archivo json" + +#: assistant\commands\admin.py:2710 +#, docstring +msgid "\n" +" Manage embeddings for training\n\n" +" Embeddings are used to optimize training of the assistant and minimize token usage.\n\n" +" By using this the bot can store vast amounts of contextual information without going over the token limit.\n\n" +" **Note**\n" +" You can enter a search query with this command to bring up the menu and go directly to that embedding selection.\n" +" " +msgstr "Gestionar las incrustaciones para el entrenamiento.\n\n" +"Las incrustaciones se utilizan para optimizar el entrenamiento del asistente y minimizar el uso de tokens.\n\n" +"Al usar esto, el bot puede almacenar gran cantidad de información contextual sin exceder el límite de tokens.\n\n" +"**Nota**\n" +"Puedes ingresar una consulta de búsqueda con este comando para mostrar el menú y acceder directamente a esa selección de incrustación. " + +#: assistant\commands\admin.py:2760 +#, docstring +msgid "\n" +" Add custom function calls for Assistant to use\n\n" +" **READ**\n" +" - [Function Call Docs](https://platform.openai.com/docs/guides/gpt/function-calling)\n" +" - [OpenAI Cookbook](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_call_functions_with_chat_models.ipynb)\n" +" - [JSON Schema Reference](https://json-schema.org/understanding-json-schema/)\n\n" +" The following objects are passed by default as keyword arguments.\n" +" - **user**: the user currently chatting with the bot (discord.Member)\n" +" - **channel**: channel the user is chatting in (TextChannel|Thread|ForumChannel)\n" +" - **guild**: current guild (discord.Guild)\n" +" - **bot**: the bot object (Red)\n" +" - **conf**: the config model for Assistant (GuildSettings)\n" +" - All functions **MUST** include `*args, **kwargs` in the params and return a string\n" +" ```python\n" +" # Can be either sync or async\n" +" async def func(*args, **kwargs) -> str:\n" +" ```\n" +" Only bot owner can manage this, guild owners can see descriptions but not code\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2800 +#, docstring +msgid "List custom prompt context variables registered by other cogs." +msgstr "" + +#: assistant\commands\admin.py:2802 +msgid "3rd party docs: {}" +msgstr "" + +#: assistant\commands\admin.py:2804 +msgid "No custom context variables have been registered yet!\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:2818 +msgid "Custom Variables" +msgstr "" + +#: assistant\commands\admin.py:2823 +msgid "Page {}/{} | {} variables" +msgstr "" + +#: assistant\commands\admin.py:2836 +#, docstring +msgid "\n" +" List all available functions and their enabled/disabled status\n\n" +" This provides a quick overview of all custom functions and 3rd party\n" +" registered functions without having to navigate through the full menu.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2849 assistant\commands\admin.py:3142 +#: assistant\commands\admin.py:3198 assistant\commands\admin.py:3295 +msgid "No functions have been registered yet!" +msgstr "" + +#: assistant\commands\admin.py:2876 +msgid "Function List" +msgstr "" + +#: assistant\commands\admin.py:2881 +msgid "Page {}/{} | {} enabled, {} disabled" +msgstr "" + +#: assistant\commands\admin.py:2897 +#, docstring +msgid "Open the mobile-friendly AI tools manager." +msgstr "" + +#: assistant\commands\admin.py:2905 +#, docstring +msgid "Open the floating context block manager.\n\n" +" Toggled variables are appended to a trailing payload-only user\n" +" message after conversation history. Because that message rides\n" +" after the cached prefix, putting dynamic (per-request) values\n" +" there keeps the prompt prefix stable across requests so\n" +" provider-side prompt caching can hit.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2920 +#, docstring +msgid "Show prompt-cache stats from the most recent API call." +msgstr "" + +#: assistant\commands\admin.py:2924 +msgid "No cache stats yet - make a request first." +msgstr "" + +#: assistant\commands\admin.py:2928 +msgid "Unknown" +msgstr "" + +#: assistant\commands\admin.py:2932 +msgid "Last API call: **{cached}**/**{total}** prompt tokens cached ({pct:.0f}%) · **{write}** cache-write tokens · model `{model}`" +msgstr "" + +#: assistant\commands\admin.py:2948 +msgid "\n" +"💡 This model requires at least **{min_tokens}** prompt tokens before the provider will cache. Your prompt was only **{total}** tokens - below the threshold, so no cache write or read occurred. A longer system prompt, more conversation history, or enabling variables in the `[p]floatingcontext` block will push it over." +msgstr "" + +#: assistant\commands\admin.py:2963 +msgid "\n" +"ℹ️ This provider uses automatic prompt caching. A **0** cache-write count does not necessarily mean caching is disabled, because some automatic-cache providers do not charge for or clearly expose cache writes. The more useful signal is whether similar follow-up turns start showing non-zero cached tokens. Also note that the relevant threshold is the repeated stable prefix, not the full prompt length, so a large request can still miss if most of its tokens are in the changing tail of the payload." +msgstr "" + +#: assistant\commands\admin.py:2978 +msgid "\n" +"ℹ️ `gpt-oss` is a reasoning model running over Chat Completions. Cache reuse can be weaker than on non-reasoning chat models because not all reasoning state is preserved between turns." +msgstr "" + +#: assistant\commands\admin.py:2988 +msgid "\n" +"⚠️ **Cache writes occurred but no reads.** This means the provider cached your prompt prefix, but the next request didn't match it - the prefix changed between calls. Common causes include dynamic variables like `{{time}}`, `{{date}}`, or `{{username}}` being substituted into your prompt prefix, per-turn context being injected before the cacheable tail, or tool definitions changing between calls. Use `[p]floatingcontext` to move dynamic context out of the prompt prefix." +msgstr "" + +#: assistant\commands\admin.py:3004 +#, docstring +msgid "Enable OpenRouter response caching (Mode A)." +msgstr "" + +#: assistant\commands\admin.py:3008 +msgid "OpenRouter response caching **enabled** (TTL: {}s)." +msgstr "" + +#: assistant\commands\admin.py:3012 +#, docstring +msgid "Disable OpenRouter response caching (Mode A)." +msgstr "" + +#: assistant\commands\admin.py:3016 +msgid "OpenRouter response caching **disabled**." +msgstr "" + +#: assistant\commands\admin.py:3020 +#, docstring +msgid "Set the OpenRouter response cache TTL in seconds (1–86400)." +msgstr "" + +#: assistant\commands\admin.py:3022 +msgid "TTL must be between 1 and 86400 seconds (24 hours)." +msgstr "" + +#: assistant\commands\admin.py:3026 +msgid "OpenRouter response cache TTL set to **{}** seconds." +msgstr "" + +#: assistant\commands\admin.py:3030 +#, docstring +msgid "Set the OpenRouter provider prompt cache TTL.\n\n" +" Choices: `off`, `5m`, `1h`. Applies to Anthropic / Gemini / Qwen\n" +" models routed via OpenRouter.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3037 +msgid "Mode must be one of: `off`, `5m`, `1h`." +msgstr "" + +#: assistant\commands\admin.py:3041 +msgid "OpenRouter provider prompt cache set to **{}**." +msgstr "" + +#: assistant\commands\admin.py:3050 +#, docstring +msgid "Configure OpenRouter provider routing and model slug preferences." +msgstr "" + +#: assistant\commands\admin.py:3055 +#, docstring +msgid "Show current OpenRouter provider routing settings." +msgstr "" + +#: assistant\commands\admin.py:3059 +msgid "not set" +msgstr "" + +#: assistant\commands\admin.py:3062 +msgid "not set (OR default)" +msgstr "" + +#: assistant\commands\admin.py:3064 +msgid "OpenRouter Provider Settings" +msgstr "" + +#: assistant\commands\admin.py:3065 +msgid "Model suffix" +msgstr "" + +#: assistant\commands\admin.py:3066 +msgid "Allow fallbacks" +msgstr "" + +#: assistant\commands\admin.py:3067 +msgid "Provider order" +msgstr "" + +#: assistant\commands\admin.py:3068 +msgid "Tip: `providers Fireworks` + `fallbacks false` hard-pins to that provider." +msgstr "" + +#: assistant\commands\admin.py:3073 +#, docstring +msgid "Set a guild-wide model slug suffix applied to every OpenRouter request.\n\n" +" Valid values: `:nitro` (throughput priority), `:floor` (price priority),\n" +" `:extended`, `clear` (remove suffix).\n" +" The suffix is appended after model resolution and replaces any per-model suffix.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3083 +msgid "OpenRouter model suffix cleared." +msgstr "" + +#: assistant\commands\admin.py:3086 +msgid "Invalid suffix `{}`. Valid: {}." +msgstr "" + +#: assistant\commands\admin.py:3090 +msgid "OpenRouter model suffix set to `{}`." +msgstr "" + +#: assistant\commands\admin.py:3094 +#, docstring +msgid "Set the ordered list of providers OpenRouter should use (space-separated).\n\n" +" Pass `clear` to reset. Combined with `fallbacks false` this hard-pins routing\n" +" to only the listed providers in order.\n" +" Example: `providers Fireworks Together`\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3104 +msgid "OpenRouter provider list cleared." +msgstr "" + +#: assistant\commands\admin.py:3108 +msgid "OpenRouter will try providers in order: {}." +msgstr "" + +#: assistant\commands\admin.py:3113 +#, docstring +msgid "Set whether OpenRouter may fall back to other providers.\n\n" +" Values: `true`, `false`, `clear` (restore OR default which is true).\n" +" Set to `false` with `providers` to hard-pin routing to those providers only.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3123 +msgid "OpenRouter fallbacks reset to OR default (enabled)." +msgstr "" + +#: assistant\commands\admin.py:3125 +msgid "Value must be `true`, `false`, or `clear`." +msgstr "" + +#: assistant\commands\admin.py:3128 +msgid "OpenRouter fallbacks set to `{}`." +msgstr "" + +#: assistant\commands\admin.py:3135 +#, docstring +msgid "List tool categories and their current enabled state." +msgstr "" + +#: assistant\commands\admin.py:3161 +msgid "Tool Categories" +msgstr "" + +#: assistant\commands\admin.py:3166 +msgid "Page {}/{} | {} enabled of {} total" +msgstr "" + +#: assistant\commands\admin.py:3191 +#, docstring +msgid "Enable or disable all tools in one or more categories." +msgstr "" + +#: assistant\commands\admin.py:3208 +msgid "No valid category names provided!" +msgstr "" + +#: assistant\commands\admin.py:3213 +msgid "The following categories do not exist: {}" +msgstr "" + +#: assistant\commands\admin.py:3235 +msgid "{} **Enabled Categories** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3243 +msgid "{} **Disabled Categories** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3266 +#, docstring +msgid "\n" +" Enable or disable multiple functions at once\n\n" +" **Arguments**\n" +" - `enable`: True to enable, False to disable. Omit to toggle current state.\n" +" - `functions`: Comma-separated list of function names, or \"all\" to affect all functions\n\n" +" **Examples**\n" +" - `[p]togglefunctions get_time, get_weather` - Toggle these functions\n" +" - `[p]togglefunctions True all` - Enable all functions\n" +" - `[p]togglefunctions False get_time, get_weather` - Disable specific functions\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3305 +msgid "No valid function names provided!" +msgstr "" + +#: assistant\commands\admin.py:3311 +msgid "The following functions do not exist: {}" +msgstr "" + +#: assistant\commands\admin.py:3337 +msgid "✅ **Enabled** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3344 +msgid "❌ **Disabled** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3440 +#, docstring +msgid "\n" +" Add/Remove items from the blacklist\n\n" +" `channel_role_member` can be a member, role, channel, or category channel\n" +" " +msgstr "\n" +"Añadir/eliminar elementos de la lista negra\n\n" +"`channel_role_member` puede ser un miembro, rol, canal o categoría de canal " + +#: assistant\commands\admin.py:3448 +msgid "{} has been removed from the blacklist" +msgstr "{} ha sido eliminado de la lista negra" + +#: assistant\commands\admin.py:3451 +msgid "{} has been added to the blacklist" +msgstr "{} ha sido añadido a la lista negra" + +#: assistant\commands\admin.py:3464 +#, docstring +msgid "\n" +" Add/Remove items from the planner list, or view current planners.\n\n" +" Users/roles in the planner list can use the `think_and_plan` tool for complex task breakdown.\n\n" +" If the planner list is empty, everyone can use the planning tool.\n" +" If the planner list has entries, only those users/roles can use it.\n\n" +" `role_or_member` can be a member or role. Omit to view the current list.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3479 +msgid "The planner list is empty. Everyone can use the `think_and_plan` tool." +msgstr "" + +#: assistant\commands\admin.py:3484 +msgid "**Planners:** {}" +msgstr "" + +#: assistant\commands\admin.py:3486 +msgid "The planner list has invalid entries. Consider clearing it." +msgstr "" + +#: assistant\commands\admin.py:3491 +msgid "{} has been removed from the planner list" +msgstr "" + +#: assistant\commands\admin.py:3494 +msgid "{} has been added to the planner list" +msgstr "" + +#: assistant\commands\admin.py:3500 +msgid "**{}:** empty" +msgstr "" + +#: assistant\commands\admin.py:3506 +msgid "**{}:** {}" +msgstr "" + +#: assistant\commands\admin.py:3510 +#, docstring +msgid "Show the current smartmod configuration." +msgstr "" + +#: assistant\commands\admin.py:3517 +msgid "`Enabled: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3518 +msgid "`Report channel:`{}\n" +msgstr "" + +#: assistant\commands\admin.py:3519 +msgid "`OpenAI key: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3519 +msgid "OK" +msgstr "" + +#: assistant\commands\admin.py:3519 +msgid "Missing" +msgstr "" + +#: assistant\commands\admin.py:3520 +msgid "`Review model: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3520 +msgid "(default)" +msgstr "" + +#: assistant\commands\admin.py:3521 +msgid "`Context: `{} before / {} after\n" +msgstr "" + +#: assistant\commands\admin.py:3522 +msgid "`Panel timeout: `{}s\n" +msgstr "" + +#: assistant\commands\admin.py:3523 +msgid "`Auto-action: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3524 +msgid "`Exempt staff: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3525 +msgid "`Staff ping: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3526 +msgid "`Blacklist: `{} items\n" +msgstr "" + +#: assistant\commands\admin.py:3527 +msgid "`Whitelist: `{} items\n" +msgstr "" + +#: assistant\commands\admin.py:3528 +msgid "`Triggers: `{} phrases" +msgstr "" + +#: assistant\commands\admin.py:3530 +msgid "Smartmod (AI Moderation)" +msgstr "" + +#: assistant\commands\admin.py:3535 +#, docstring +msgid "Enable or disable AI moderation. Omit the state to flip it." +msgstr "" + +#: assistant\commands\admin.py:3541 +msgid "\n" +"⚠️ No OpenAI key for the scan. Set one with `{p}assistant smartmod key`." +msgstr "" + +#: assistant\commands\admin.py:3545 +msgid "\n" +"⚠️ No report channel set. Set one with `{p}assistant smartmod channel`." +msgstr "" + +#: assistant\commands\admin.py:3548 +msgid "Smartmod is now **{}**." +msgstr "" + +#: assistant\commands\admin.py:3548 +msgid "enabled" +msgstr "" + +#: assistant\commands\admin.py:3548 +msgid "disabled" +msgstr "" + +#: assistant\commands\admin.py:3553 +#, docstring +msgid "Set the channel where moderation proposals are posted. Omit to clear." +msgstr "" + +#: assistant\commands\admin.py:3556 +msgid "set to {}" +msgstr "" + +#: assistant\commands\admin.py:3556 +msgid "cleared" +msgstr "" + +#: assistant\commands\admin.py:3557 +msgid "Report channel {}." +msgstr "" + +#: assistant\commands\admin.py:3562 #, docstring -msgid "Import embeddings from an .xlsx file\n\n" -" Args:\n" -" overwrite (bool): overwrite embeddings with existing entry names\n" -" " -msgstr "Importar incrustaciones desde un archivo .xlsx\n\n" -" Args:\n" -" overwrite (bool): sobrescribir las incrustaciones con nombres de entrada existentes\n" +msgid "Set the smartmod review model (empty = use the server's default chat model).\n\n" +" Run with no model to open the interactive model picker — endpoint-discovered models when a\n" +" custom endpoint is set, otherwise the built-in OpenAI list.\n" " " +msgstr "" -#: assistant\commands\admin.py:2108 -msgid "You must attach **.xlsx** files to this command or reference a message that has them!" -msgstr "¡Debe adjuntar archivos **.xlsx** a este comando o hacer referencia a un mensaje que los contenga!" +#: assistant\commands\admin.py:3571 +msgid "Review model set to `{}`." +msgstr "" -#: assistant\commands\admin.py:2129 -msgid "{} is invalid! Must contain the following columns: {}" -msgstr "{} es inválido! Debe contener las siguientes columnas: {}" +#: assistant\commands\admin.py:3582 +msgid "Could not probe `{}` to discover models. Set one manually with `{}assistant smartmod model `." +msgstr "" -#: assistant\commands\admin.py:2183 -msgid "No embeddings needed to be updated!" -msgstr "¡No es necesario actualizar las incrustaciones!" +#: assistant\commands\admin.py:3602 +msgid "The review model uses the server's default chat model unless set. Valid OpenAI models:\n" +"{}\n" +"Set one with `{}assistant smartmod model `." +msgstr "" -#: assistant\commands\admin.py:2188 +#: assistant\commands\admin.py:3610 #, docstring -msgid "\n" -" Export embeddings to an .xlsx file\n\n" -" **Note:** csv exports do not include the embedding values\n" -" " -msgstr "\n" -" Exportar incrustaciones a un archivo .xlsx\n\n" -" **Nota:** las exportaciones csv no incluyen los valores de incrustación\n" +msgid "Set the moderation review prompt.\n\n" +" Supports the {flagged_categories} placeholder plus the same standard prompt variables\n" +" as the main system prompt (server name, channel name, display name, custom cog\n" +" variables, etc.).\n\n" +" Run with no text to view the current prompt. Use `defaultprompt` to grab the built-in\n" +" default to customize, and `resetprompt` to restore it.\n" " " +msgstr "" -#: assistant\commands\admin.py:2195 assistant\commands\admin.py:2241 -#: assistant\commands\admin.py:2285 -msgid "There are no embeddings to export!" -msgstr "¡No hay incrustaciones para exportar!" +#: assistant\commands\admin.py:3622 +msgid "Current moderation prompt (edit and re-set with `{p}assistant smartmod prompt `):" +msgstr "" -#: assistant\commands\admin.py:2235 +#: assistant\commands\admin.py:3629 +msgid "Moderation prompt updated." +msgstr "" + +#: assistant\commands\admin.py:3634 #, docstring -msgid "Export embeddings to a .csv file\n\n" -" **Note:** csv exports do not include the embedding values\n" -" " -msgstr "Exportar incrustaciones a un archivo .csv\n\n" -" **Nota:** las exportaciones csv no incluyen los valores de incrustación " +msgid "Get the built-in default moderation prompt to copy and customize." +msgstr "" -#: assistant\commands\admin.py:2254 assistant\commands\admin.py:2274 -#: assistant\commands\admin.py:2293 assistant\commands\admin.py:2313 -#: assistant\commands\admin.py:3188 -msgid "Here is your embeddings export!" -msgstr "¡Aquí está su exportación de incrustaciones!" +#: assistant\commands\admin.py:3636 +msgid "Default moderation prompt - copy, edit, then set with `{p}assistant smartmod prompt `:" +msgstr "" -#: assistant\commands\admin.py:2257 assistant\commands\admin.py:2296 -#: assistant\commands\admin.py:3170 -msgid "File too large, attempting to compress..." -msgstr "Archivo demasiado grande, intentando comprimir..." +#: assistant\commands\admin.py:3644 +#, docstring +msgid "Reset the moderation review prompt to the built-in default." +msgstr "" -#: assistant\commands\admin.py:2277 assistant\commands\admin.py:2316 -#: assistant\commands\admin.py:3191 -msgid "File is still too large even with compression!" -msgstr "¡El archivo sigue siendo demasiado grande incluso con compresión!" +#: assistant\commands\admin.py:3647 +msgid "Moderation prompt reset to default." +msgstr "" -#: assistant\commands\admin.py:2282 +#: assistant\commands\admin.py:3652 #, docstring -msgid "Export embeddings to a json file" -msgstr "Exportar incrustaciones a un archivo json" +msgid "Set a category's flag threshold (0.0-1.0), e.g. `harassment 0.4`.\n\n" +" Run with no arguments to list every moderation category and its current threshold.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3661 +msgid "Set one with `{p}assistant smartmod threshold <0.0-1.0>`:\n" +"{box}" +msgstr "" + +#: assistant\commands\admin.py:3669 +msgid "Unknown category. Valid categories:\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3672 +msgid "Value must be between 0.0 and 1.0." +msgstr "" + +#: assistant\commands\admin.py:3675 +msgid "Threshold for `{}` set to `{}`." +msgstr "" -#: assistant\commands\admin.py:2324 +#: assistant\commands\admin.py:3680 #, docstring -msgid "\n" -" Manage embeddings for training\n\n" -" Embeddings are used to optimize training of the assistant and minimize token usage.\n\n" -" By using this the bot can store vast amounts of contextual information without going over the token limit.\n\n" -" **Note**\n" -" You can enter a search query with this command to bring up the menu and go directly to that embedding selection.\n" -" " -msgstr "Gestionar las incrustaciones para el entrenamiento.\n\n" -"Las incrustaciones se utilizan para optimizar el entrenamiento del asistente y minimizar el uso de tokens.\n\n" -"Al usar esto, el bot puede almacenar gran cantidad de información contextual sin exceder el límite de tokens.\n\n" -"**Nota**\n" -"Puedes ingresar una consulta de búsqueda con este comando para mostrar el menú y acceder directamente a esa selección de incrustación. " +msgid "View the effective per-category flag thresholds." +msgstr "" -#: assistant\commands\admin.py:2374 +#: assistant\commands\admin.py:3687 #, docstring -msgid "\n" -" Add custom function calls for Assistant to use\n\n" -" **READ**\n" -" - [Function Call Docs](https://platform.openai.com/docs/guides/gpt/function-calling)\n" -" - [OpenAI Cookbook](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_call_functions_with_chat_models.ipynb)\n" -" - [JSON Schema Reference](https://json-schema.org/understanding-json-schema/)\n\n" -" The following objects are passed by default as keyword arguments.\n" -" - **user**: the user currently chatting with the bot (discord.Member)\n" -" - **channel**: channel the user is chatting in (TextChannel|Thread|ForumChannel)\n" -" - **guild**: current guild (discord.Guild)\n" -" - **bot**: the bot object (Red)\n" -" - **conf**: the config model for Assistant (GuildSettings)\n" -" - All functions **MUST** include `*args, **kwargs` in the params and return a string\n" -" ```python\n" -" # Can be either sync or async\n" -" async def func(*args, **kwargs) -> str:\n" -" ```\n" -" Only bot owner can manage this, guild owners can see descriptions but not code\n" -" " +msgid "Return (flagged_categories, formatted_table_lines) comparing each score to its threshold." msgstr "" -#: assistant\commands\admin.py:2414 +#: assistant\commands\admin.py:3701 #, docstring -msgid "List custom prompt context variables registered by other cogs." +msgid "Preview a sample message: which trigger phrases match plus each moderation score vs its threshold." msgstr "" -#: assistant\commands\admin.py:2416 -msgid "3rd party docs: {}" +#: assistant\commands\admin.py:3707 assistant\commands\admin.py:3741 +msgid "No OpenAI key available for the scan. Set one with `{p}assistant smartmod key`." msgstr "" -#: assistant\commands\admin.py:2418 -msgid "No custom context variables have been registered yet!\n" -"{}" +#: assistant\commands\admin.py:3716 assistant\commands\admin.py:3750 +msgid "Moderation scan failed — check the key or the bot logs." msgstr "" -#: assistant\commands\admin.py:2432 -msgid "Custom Variables" +#: assistant\commands\admin.py:3719 +msgid "🚩 **Would trigger review**" msgstr "" -#: assistant\commands\admin.py:2437 -msgid "Page {}/{} | {} variables" +#: assistant\commands\admin.py:3719 +msgid "✅ **Would not trigger**" +msgstr "" + +#: assistant\commands\admin.py:3721 +msgid "Matched triggers: {}" +msgstr "" + +#: assistant\commands\admin.py:3723 +msgid "Scan flagged: {}" msgstr "" -#: assistant\commands\admin.py:2450 +#: assistant\commands\admin.py:3730 #, docstring -msgid "\n" -" List all available functions and their enabled/disabled status\n\n" -" This provides a quick overview of all custom functions and 3rd party\n" -" registered functions without having to navigate through the full menu.\n" +msgid "Dry-run the FULL pipeline on sample text: scan / triggers -> review model -> action panel.\n\n" +" The review model runs for real (tools, embeddings, this channel's recent context) with you as\n" +" the simulated offender, but the panel's buttons take no real action. The review runs if a\n" +" category trips its threshold OR a trigger phrase matches (same as production).\n" " " msgstr "" -#: assistant\commands\admin.py:2463 assistant\commands\admin.py:2527 -#: assistant\commands\admin.py:2579 assistant\commands\admin.py:2676 -msgid "No functions have been registered yet!" +#: assistant\commands\admin.py:3758 +msgid "✅ Would not trigger — no category over its threshold and no trigger phrase matched." msgstr "" -#: assistant\commands\admin.py:2490 -msgid "Function List" +#: assistant\commands\admin.py:3760 +msgid "🚩 Tripped: {}" msgstr "" -#: assistant\commands\admin.py:2495 -msgid "Page {}/{} | {} enabled, {} disabled" +#: assistant\commands\admin.py:3765 +msgid "Simulation error: {}" +msgstr "" + +#: assistant\commands\admin.py:3768 +msgid "🧪 Model chose **no action**.\n" +"-# {}" +msgstr "" + +#: assistant\commands\admin.py:3768 +msgid "no reason given" +msgstr "" + +#: assistant\commands\admin.py:3770 +msgid "🧪 Model didn't reach a decision within the review turn limit." msgstr "" -#: assistant\commands\admin.py:2511 +#: assistant\commands\admin.py:3772 +msgid "🧪 Model **proposed** an action — see the dry-run panel above (buttons are no-ops)." +msgstr "" + +#: assistant\commands\admin.py:3788 #, docstring -msgid "Open the mobile-friendly AI tools manager." +msgid "Toggle a channel/category/role/member on the moderation ignore list. Omit to view." +msgstr "" + +#: assistant\commands\admin.py:3791 +msgid "Smartmod blacklist (ignored)" +msgstr "" + +#: assistant\commands\admin.py:3796 +msgid "{} removed from the smartmod blacklist." +msgstr "" + +#: assistant\commands\admin.py:3799 +msgid "{} added to the smartmod blacklist." msgstr "" -#: assistant\commands\admin.py:2520 +#: assistant\commands\admin.py:3816 #, docstring -msgid "List tool categories and their current enabled state." +msgid "Only moderate these channel/category/role/members (used only when the blacklist is empty). Omit to view." msgstr "" -#: assistant\commands\admin.py:2545 -msgid "Tool Categories" +#: assistant\commands\admin.py:3819 +msgid "Smartmod whitelist (only these)" msgstr "" -#: assistant\commands\admin.py:2547 -msgid "Page {}/{} | {} enabled of {} total" +#: assistant\commands\admin.py:3824 +msgid "{} removed from the smartmod whitelist." msgstr "" -#: assistant\commands\admin.py:2572 +#: assistant\commands\admin.py:3827 +msgid "{} added to the smartmod whitelist." +msgstr "" + +#: assistant\commands\admin.py:3832 #, docstring -msgid "Enable or disable all tools in one or more categories." +msgid "Toggle a role to ping (and authorize) when an action is proposed. Omit to view." msgstr "" -#: assistant\commands\admin.py:2589 -msgid "No valid category names provided!" +#: assistant\commands\admin.py:3835 +msgid "Smartmod staff ping roles" msgstr "" -#: assistant\commands\admin.py:2594 -msgid "The following categories do not exist: {}" +#: assistant\commands\admin.py:3840 +msgid "{} removed from the staff ping roles." msgstr "" -#: assistant\commands\admin.py:2616 -msgid "{} **Enabled Categories** ({}):\n" -"{}" +#: assistant\commands\admin.py:3843 +msgid "{} added to the staff ping roles." msgstr "" -#: assistant\commands\admin.py:2624 -msgid "{} **Disabled Categories** ({}):\n" -"{}" +#: assistant\commands\admin.py:3848 +#, docstring +msgid "Set how many messages of context to capture before/after a flagged message." +msgstr "" + +#: assistant\commands\admin.py:3853 +msgid "Context window set to {} before / {} after." msgstr "" -#: assistant\commands\admin.py:2647 +#: assistant\commands\admin.py:3861 #, docstring -msgid "\n" -" Enable or disable multiple functions at once\n\n" -" **Arguments**\n" -" - `enable`: True to enable, False to disable. Omit to toggle current state.\n" -" - `functions`: Comma-separated list of function names, or \"all\" to affect all functions\n\n" -" **Examples**\n" -" - `[p]togglefunctions get_time, get_weather` - Toggle these functions\n" -" - `[p]togglefunctions True all` - Enable all functions\n" -" - `[p]togglefunctions False get_time, get_weather` - Disable specific functions\n" -" " +msgid "Set how long the action panel stays interactive, in seconds (60-86400)." msgstr "" -#: assistant\commands\admin.py:2686 -msgid "No valid function names provided!" +#: assistant\commands\admin.py:3864 +msgid "Panel timeout set to {} seconds." msgstr "" -#: assistant\commands\admin.py:2692 -msgid "The following functions do not exist: {}" +#: assistant\commands\admin.py:3869 +#, docstring +msgid "Toggle whether the proposed action auto-executes when the panel times out." msgstr "" -#: assistant\commands\admin.py:2718 -msgid "✅ **Enabled** ({}):\n" -"{}" +#: assistant\commands\admin.py:3873 assistant\commands\admin.py:3883 +msgid "on" msgstr "" -#: assistant\commands\admin.py:2724 -msgid "❌ **Disabled** ({}):\n" -"{}" +#: assistant\commands\admin.py:3873 assistant\commands\admin.py:3883 +msgid "off" msgstr "" -#: assistant\commands\admin.py:2819 -#, docstring -msgid "\n" -" Add/Remove items from the blacklist\n\n" -" `channel_role_member` can be a member, role, channel, or category channel\n" -" " -msgstr "\n" -"Añadir/eliminar elementos de la lista negra\n\n" -"`channel_role_member` puede ser un miembro, rol, canal o categoría de canal " +#: assistant\commands\admin.py:3874 +msgid "Auto-action on timeout is now **{}**." +msgstr "" -#: assistant\commands\admin.py:2827 -msgid "{} has been removed from the blacklist" -msgstr "{} ha sido eliminado de la lista negra" +#: assistant\commands\admin.py:3879 +#, docstring +msgid "Toggle skipping moderation for members with ban/kick/manage-messages permissions." +msgstr "" -#: assistant\commands\admin.py:2830 -msgid "{} has been added to the blacklist" -msgstr "{} ha sido añadido a la lista negra" +#: assistant\commands\admin.py:3883 +msgid "Exempt staff is now **{}**." +msgstr "" -#: assistant\commands\admin.py:2843 +#: assistant\commands\admin.py:3888 #, docstring -msgid "\n" -" Add/Remove items from the planner list, or view current planners.\n\n" -" Users/roles in the planner list can use the `think_and_plan` tool for complex task breakdown.\n\n" -" If the planner list is empty, everyone can use the planning tool.\n" -" If the planner list has entries, only those users/roles can use it.\n\n" -" `role_or_member` can be a member or role. Omit to view the current list.\n" +msgid "Add or remove a trigger phrase that sends a message straight to moderation review.\n\n" +" A match fires the review pipeline **in place of** the OpenAI moderation scan — so\n" +" triggers work even with no OpenAI key set. Re-run with the exact same phrase to remove it.\n\n" +" Only `*` is a wildcard (it matches any run of characters); everything else is literal,\n" +" so pasting real regex is safe and can never lock the bot up. With no `*`, the phrase\n" +" matches on word boundaries (`idiot` hits the word \"idiot\" but not \"idiotic\"); add `*`\n" +" to loosen it: `idiot*` (prefix), `*idiot` (suffix), `*idiot*` (substring anywhere).\n" " " msgstr "" -#: assistant\commands\admin.py:2858 -msgid "The planner list is empty. Everyone can use the `think_and_plan` tool." +#: assistant\commands\admin.py:3903 +msgid "Removed smartmod trigger: `{}`" msgstr "" -#: assistant\commands\admin.py:2863 -msgid "**Planners:** {}" +#: assistant\commands\admin.py:3906 +msgid "A trigger needs at least one non-`*` character." msgstr "" -#: assistant\commands\admin.py:2865 -msgid "The planner list has invalid entries. Consider clearing it." +#: assistant\commands\admin.py:3908 +msgid "That trigger is too long (max {} characters)." msgstr "" -#: assistant\commands\admin.py:2870 -msgid "{} has been removed from the planner list" +#: assistant\commands\admin.py:3911 +msgid "Added smartmod trigger `{phrase}` (matches as `{regex}`)." msgstr "" -#: assistant\commands\admin.py:2873 -msgid "{} has been added to the planner list" +#: assistant\commands\admin.py:3919 +#, docstring +msgid "List the smartmod trigger phrases and the safe pattern each one compiles to." +msgstr "" + +#: assistant\commands\admin.py:3924 +msgid "No smartmod triggers set. Add one with `{p}assistant smartmod trigger `." msgstr "" -#: assistant\commands\admin.py:2878 +#: assistant\commands\admin.py:3935 #, docstring -msgid "\n" -" Override settings for specific roles\n\n" -" **NOTE**\n" -" If a user has two roles with override settings, override associated with the higher role will be used.\n" -" " -msgstr "\n" -" Anular configuraciones para roles específicos\n\n" -" **NOTA**\n" -" Si un usuario tiene dos roles con configuraciones de anulación, se usará la anulación asociada con el rol superior.\n" +msgid "Set a dedicated OpenAI key for the moderation scan (opens a secure modal).\n\n" +" Use this when your chat endpoint is a custom/non-OpenAI endpoint (OpenRouter, LM Studio,\n" +" etc.): the free OpenAI moderation scan still runs against api.openai.com with this key,\n" +" while the review LLM keeps using your configured endpoint. Enter `none` to clear it.\n" " " +msgstr "" + +#: assistant\commands\admin.py:3943 +msgid "Click to set the OpenAI key used for the smartmod moderation scan\n\n" +"To remove the key, enter `none`" +msgstr "" + +#: assistant\commands\admin.py:3950 +msgid "Smartmod OpenAI key has been removed!" +msgstr "" -#: assistant\commands\admin.py:2887 +#: assistant\commands\admin.py:3955 +msgid "Smartmod OpenAI key has been set!" +msgstr "" + +#: assistant\commands\admin.py:3960 #, docstring msgid "\n" " Assign a role to use a model\n\n" @@ -2077,23 +2909,23 @@ msgstr "\n" "Asigna un rol para utilizar un modelo\n\n" "*Especifica el mismo rol y modelo para eliminar la anulación* " -#: assistant\commands\admin.py:2899 +#: assistant\commands\admin.py:3974 msgid "Enter a model id supported by your custom endpoint. If it exposes `/v1/models`, you can copy one from there." msgstr "" -#: assistant\commands\admin.py:2916 +#: assistant\commands\admin.py:3991 msgid "Role override for {} removed!" msgstr "¡Se ha eliminado la anulación de rol para {}!" -#: assistant\commands\admin.py:2919 +#: assistant\commands\admin.py:3994 msgid "Role override for {} overwritten!" msgstr "Sustitución de rol para {} ¡sobreescrito!" -#: assistant\commands\admin.py:2922 +#: assistant\commands\admin.py:3997 msgid "Role override for {} added!" msgstr "¡Se ha añadido la anulación de rol para {}!" -#: assistant\commands\admin.py:2928 +#: assistant\commands\admin.py:4003 #, docstring msgid "\n" " Assign a max token override to a role\n\n" @@ -2103,19 +2935,19 @@ msgstr "\n" "Asignar una anulación de token máximo a un rol\n\n" "*Especificar el mismo rol y número de tokens para eliminar la anulación* " -#: assistant\commands\admin.py:2938 +#: assistant\commands\admin.py:4013 msgid "Max token override for {} removed!" msgstr "¡Se ha eliminado la anulación de token máximo para {}!" -#: assistant\commands\admin.py:2941 +#: assistant\commands\admin.py:4016 msgid "Max token override for {} overwritten!" msgstr "¡Anulación de token máximo para {} sobrescrita!" -#: assistant\commands\admin.py:2944 +#: assistant\commands\admin.py:4019 msgid "Max token override for {} added!" msgstr "¡Se ha añadido la anulación de token máximo para {}!" -#: assistant\commands\admin.py:2952 +#: assistant\commands\admin.py:4031 #, docstring msgid "\n" " Assign a max response token override to a role\n\n" @@ -2127,19 +2959,19 @@ msgstr "\n" "Establecer en 0 para que los tokens de respuesta sean dinámicos\n\n" "*Especificar el mismo rol y número de tokens para eliminar la anulación* " -#: assistant\commands\admin.py:2964 +#: assistant\commands\admin.py:4043 msgid "Max response token override for {} removed!" msgstr "¡Se ha eliminado la anulación del token de respuesta máximo para {}!" -#: assistant\commands\admin.py:2967 +#: assistant\commands\admin.py:4046 msgid "Max response token override for {} overwritten!" msgstr "¡Se ha sobrescrito el token de respuesta máximo para {}!" -#: assistant\commands\admin.py:2970 +#: assistant\commands\admin.py:4049 msgid "Max response token override for {} added!" msgstr "¡Se ha añadido la anulación del token de respuesta máximo para {}!" -#: assistant\commands\admin.py:2975 +#: assistant\commands\admin.py:4054 #, docstring msgid "\n" " Assign a max message retention override to a role\n\n" @@ -2149,19 +2981,19 @@ msgstr "\n" "Asignar una anulación de retención máxima de mensajes a un rol\n\n" "*Especificar el mismo rol y la misma cantidad de retención para eliminar la anulación* " -#: assistant\commands\admin.py:2987 +#: assistant\commands\admin.py:4066 msgid "Max retention override for {} removed!" msgstr "¡Se ha eliminado la anulación de retención máxima para {}!" -#: assistant\commands\admin.py:2990 +#: assistant\commands\admin.py:4069 msgid "Max retention override for {} overwritten!" msgstr "Anulación de retención máxima para {} ¡sobrescrita!" -#: assistant\commands\admin.py:2993 +#: assistant\commands\admin.py:4072 msgid "Max retention override for {} added!" msgstr "¡Se ha añadido la anulación de retención máxima para {}!" -#: assistant\commands\admin.py:2998 +#: assistant\commands\admin.py:4077 #, docstring msgid "\n" " Assign a max retention time override to a role\n\n" @@ -2170,19 +3002,19 @@ msgid "\n" msgstr "Asignar una anulación de tiempo máximo de retención a un rol\n\n" "*Especificar el mismo rol y tiempo para eliminar la anulación* " -#: assistant\commands\admin.py:3010 +#: assistant\commands\admin.py:4089 msgid "Max retention time override for {} removed!" msgstr "¡Se ha eliminado la anulación del tiempo máximo de retención para {}!" -#: assistant\commands\admin.py:3013 +#: assistant\commands\admin.py:4092 msgid "Max retention time override for {} overwritten!" msgstr "Tiempo máximo de retención para {} ¡sobrescrito!" -#: assistant\commands\admin.py:3016 +#: assistant\commands\admin.py:4095 msgid "Max retention time override for {} added!" msgstr "¡Se ha añadido la anulación del tiempo máximo de retención para {}!" -#: assistant\commands\admin.py:3021 +#: assistant\commands\admin.py:4100 #, docstring msgid "\n" " Assign a reasoning effort override to a role\n\n" @@ -2191,23 +3023,23 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:3031 +#: assistant\commands\admin.py:4110 msgid "Invalid effort level. Valid values: {}" msgstr "" -#: assistant\commands\admin.py:3038 +#: assistant\commands\admin.py:4117 msgid "Reasoning effort override for {} removed!" msgstr "" -#: assistant\commands\admin.py:3041 +#: assistant\commands\admin.py:4120 msgid "Reasoning effort override for {} overwritten!" msgstr "" -#: assistant\commands\admin.py:3044 +#: assistant\commands\admin.py:4123 msgid "Reasoning effort override for {} added!" msgstr "" -#: assistant\commands\admin.py:3049 +#: assistant\commands\admin.py:4128 #, docstring msgid "\n" " Switch verbosity level for gpt-5 model between low, medium, and high\n\n" @@ -2215,79 +3047,112 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:3057 +#: assistant\commands\admin.py:4136 msgid "Verbosity has been set to **Medium**" msgstr "" -#: assistant\commands\admin.py:3060 +#: assistant\commands\admin.py:4139 msgid "Verbosity has been set to **High**" msgstr "" -#: assistant\commands\admin.py:3063 +#: assistant\commands\admin.py:4142 msgid "Verbosity has been set to **Low**" msgstr "" -#: assistant\commands\admin.py:3075 +#: assistant\commands\admin.py:4154 +#, docstring +msgid "Set the global default chat model for guilds that haven't picked their own (owner).\n\n" +" Pairs with `[p]assistant api globalendpoint`: e.g. set `openrouter/free` so new servers\n" +" route to OpenRouter's free models instead of the built-in `gpt-5.4` default. Guilds that\n" +" chose their own model are unaffected. Omit to view; pass `none` to clear.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:4161 +msgid "(not set - guilds use their own model)" +msgstr "" + +#: assistant\commands\admin.py:4163 +msgid "Global default model: `{}`\n" +"Set with `{}assistant api globalmodel `." +msgstr "" + +#: assistant\commands\admin.py:4169 +msgid "Global default model cleared." +msgstr "" + +#: assistant\commands\admin.py:4173 +msgid "Global default model set to `{}`. Guilds without their own model will use it." +msgstr "" + +#: assistant\commands\admin.py:4180 #, docstring msgid "\n" -" Override the global OpenAI-compatible API base URL\n\n" -" Pass the full API base URL, including the scheme and the `/v1` suffix.\n\n" +" Set the global default endpoint URL (owner)\n\n" +" When set, every guild without its own endpoint override calls this\n" +" URL instead of OpenAI's default. Pass the full base URL including\n" +" the scheme and the `/v1` suffix.\n\n" " **Examples**\n" " - `http://127.0.0.1:1234/v1`\n" " - `http://localhost:5001/v1`\n" -" - `https://example.com/api/v1`\n\n" +" - `https://example.com/api/v1`\n" +" - `https://openrouter.ai/api/v1`\n\n" " **Notes**\n" -" - When set, all servers can use the assistant without needing their own API key\n" -" - Custom endpoints must be OpenAI-compatible\n" -" - This should be the SDK `base_url`, not a specific route like `/chat/completions`\n" -" - Use `[p]assistant endpointapikey` to set a global key for authenticated custom endpoints\n" +" - Endpoints must be OpenAI-compatible\n" +" - This is the SDK `base_url`, not a specific route like `/chat/completions`\n" +" - Use `[p]assistant api globalkey` to set the API key for this endpoint\n" +" - Router endpoints like OpenRouter accept special model aliases\n" +" (e.g. `openrouter/auto`, `openrouter/free`) via `[p]assistant set model`\n" " - Omit the argument to remove the override\n" " " msgstr "" -#: assistant\commands\admin.py:3097 +#: assistant\commands\admin.py:4206 msgid "Endpoint is already set to **{}**" msgstr "" -#: assistant\commands\admin.py:3101 +#: assistant\commands\admin.py:4210 msgid "Endpoint has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:3109 +#: assistant\commands\admin.py:4218 msgid "Endpoint has been changed from **{}** to **{}**" msgstr "" -#: assistant\commands\admin.py:3116 +#: assistant\commands\admin.py:4225 msgid "Endpoint override has been removed!" msgstr "" -#: assistant\commands\admin.py:3122 +#: assistant\commands\admin.py:4232 #, docstring -msgid "Probe the configured custom endpoint and cache its runtime model/capability profile" +msgid "Probe the active endpoint and refresh its cached model/capability profile\n\n" +" Checks the guild endpoint override first; if none is set, probes the\n" +" global endpoint override. Reports an error if no endpoint is configured.\n" +" " msgstr "" -#: assistant\commands\admin.py:3124 -msgid "No endpoint override is configured." +#: assistant\commands\admin.py:4240 +msgid "No endpoint override is configured for this guild or globally." msgstr "" -#: assistant\commands\admin.py:3130 -msgid "Failed to probe the configured endpoint." +#: assistant\commands\admin.py:4246 +msgid "Failed to probe `{}`." msgstr "" -#: assistant\commands\admin.py:3137 +#: assistant\commands\admin.py:4253 #, docstring msgid "Wipe all settings and data for entire cog" msgstr "Borrar todos los ajustes y datos para todo el engranaje" -#: assistant\commands\admin.py:3139 +#: assistant\commands\admin.py:4255 msgid "Not wiping cog" msgstr "No limpiar el engranaje" -#: assistant\commands\admin.py:3144 +#: assistant\commands\admin.py:4260 msgid "Cog has been wiped!" msgstr "¡Cog ha sido eliminado!" -#: assistant\commands\admin.py:3149 +#: assistant\commands\admin.py:4265 #, docstring msgid "\n" " Take a backup of the cog\n\n" @@ -2296,22 +3161,22 @@ msgid "\n" msgstr "Tome una copia de seguridad del engranaje\n\n" "- Esto no hace una copia de seguridad de los datos de la conversación " -#: assistant\commands\admin.py:3167 +#: assistant\commands\admin.py:4283 msgid "Here is your export!" msgstr "¡Aquí está su exportación!" -#: assistant\commands\admin.py:3196 +#: assistant\commands\admin.py:4312 #, docstring msgid "\n" " Restore the cog from a backup\n" " " msgstr "Restaurar el engranaje a partir de una copia de seguridad " -#: assistant\commands\admin.py:3206 +#: assistant\commands\admin.py:4322 msgid "Cog has been restored!" msgstr "¡Cog ha sido restaurado!" -#: assistant\commands\admin.py:3212 +#: assistant\commands\admin.py:4328 #, docstring msgid "\n" " Wipe saved conversations for the assistant in all servers\n\n" @@ -2320,37 +3185,37 @@ msgid "\n" msgstr "Borrar conversaciones guardadas del asistente en todos los servidores.\n\n" "Esto borrará todas y cada una de las conversaciones guardadas para el asistente " -#: assistant\commands\admin.py:3221 +#: assistant\commands\admin.py:4337 msgid "Conversations have been wiped for all servers!" msgstr "¡Se han borrado las conversaciones de todos los servidores!" -#: assistant\commands\admin.py:3227 +#: assistant\commands\admin.py:4343 #, docstring msgid "Toggle persistent conversations" msgstr "Alternar conversaciones persistentes" -#: assistant\commands\admin.py:3230 +#: assistant\commands\admin.py:4346 msgid "Persistent conversations have been **Disabled**" msgstr "Las conversaciones persistentes han sido **Desactivadas**" -#: assistant\commands\admin.py:3233 +#: assistant\commands\admin.py:4349 msgid "Persistent conversations have been **Enabled**" msgstr "Las conversaciones persistentes han sido **Habilitadas**" -#: assistant\commands\admin.py:3239 +#: assistant\commands\admin.py:4355 #, docstring msgid "Toggle whether reasoning/think blocks are uploaded as files globally" msgstr "" -#: assistant\commands\admin.py:3242 +#: assistant\commands\admin.py:4358 msgid "Reasoning blocks will now be stripped from replies without uploading think files." msgstr "" -#: assistant\commands\admin.py:3245 +#: assistant\commands\admin.py:4361 msgid "Reasoning blocks will now be uploaded as think files when present." msgstr "" -#: assistant\commands\admin.py:3251 +#: assistant\commands\admin.py:4367 #, docstring msgid "\n" " Wipe saved embeddings for all servers\n\n" @@ -2359,11 +3224,11 @@ msgid "\n" msgstr "Borrar las incrustaciones guardadas de todos los servidores.\n\n" "Esto eliminará cualquier y todos los datos de entrenamiento de incrustación guardados para el asistente " -#: assistant\commands\admin.py:3261 +#: assistant\commands\admin.py:4377 msgid "All embedding data has been wiped for all servers!" msgstr "¡Se han borrado todos los datos de incrustación de todos los servidores!" -#: assistant\commands\admin.py:3267 +#: assistant\commands\admin.py:4383 #, docstring msgid "\n" " Toggle whether the assistant listens to other bots\n\n" @@ -2373,113 +3238,113 @@ msgstr "\n" "Conmutar si el asistente escucha a otros bots\n\n" "**NO RECOMENDADO PARA BOTS PÚBLICOS!** " -#: assistant\commands\admin.py:3274 +#: assistant\commands\admin.py:4390 msgid "Assistant will no longer listen to other bot messages" msgstr "El asistente ya no escuchará los mensajes de otros bots" -#: assistant\commands\admin.py:3277 +#: assistant\commands\admin.py:4393 msgid "Assistant will listen to other bot messages" msgstr "El asistente escuchará los mensajes de otros bots" -#: assistant\commands\admin.py:3285 +#: assistant\commands\admin.py:4401 #, docstring msgid "View and manage all scheduled autonomous tasks in this server." msgstr "" -#: assistant\commands\admin.py:3288 +#: assistant\commands\admin.py:4404 msgid "No scheduled tasks in this server." msgstr "" -#: assistant\commands\admin.py:3307 +#: assistant\commands\admin.py:4423 msgid "Scheduled Tasks ({})" msgstr "" -#: assistant\commands\admin.py:3317 +#: assistant\commands\admin.py:4433 #, docstring msgid "Cancel a scheduled task by its ID (admin override)." msgstr "" -#: assistant\commands\admin.py:3320 +#: assistant\commands\admin.py:4436 msgid "No scheduled task found with ID `{}`." msgstr "" -#: assistant\commands\admin.py:3322 +#: assistant\commands\admin.py:4438 msgid "That task belongs to a different server." msgstr "" -#: assistant\commands\admin.py:3331 +#: assistant\commands\admin.py:4447 msgid "Scheduled task `{}` has been cancelled." msgstr "" -#: assistant\commands\admin.py:3337 +#: assistant\commands\admin.py:4453 #, docstring msgid "Clear all scheduled tasks in this server." msgstr "" -#: assistant\commands\admin.py:3339 +#: assistant\commands\admin.py:4455 msgid "Not clearing tasks." msgstr "" -#: assistant\commands\admin.py:3350 +#: assistant\commands\admin.py:4466 msgid "Cleared {} scheduled tasks." msgstr "" -#: assistant\commands\admin.py:3356 +#: assistant\commands\admin.py:4470 #, docstring msgid "Toggle LLM-based conversation compaction on or off" msgstr "" -#: assistant\commands\admin.py:3360 +#: assistant\commands\admin.py:4474 msgid "Conversation compaction is now **Disabled** (blind degradation will be used)" msgstr "" -#: assistant\commands\admin.py:3363 +#: assistant\commands\admin.py:4477 msgid "Conversation compaction is now **Enabled**" msgstr "" -#: assistant\commands\admin.py:3368 +#: assistant\commands\admin.py:4482 #, docstring msgid "Set the model used for compaction (leave blank to use the chat model)" msgstr "" -#: assistant\commands\admin.py:3372 +#: assistant\commands\admin.py:4487 msgid "Compaction model cleared, the main chat model will be used" msgstr "" -#: assistant\commands\admin.py:3377 +#: assistant\commands\admin.py:4492 msgid "Compaction model set to **{}**" msgstr "" -#: assistant\commands\admin.py:3382 +#: assistant\commands\admin.py:4497 #, docstring msgid "Set the token threshold at which compaction triggers\n\n" " When set, the bot will proactively compact conversations once they\n" " exceed this many tokens, even if the model's context window is larger.\n\n" " Set to **0** to only compact when hitting the model's max token limit.\n\n" " **Examples**\n" -" - `[p]assistant compactionthreshold 16000` - compact at 16k tokens\n" -" - `[p]assistant compactionthreshold 0` - reset to default behavior\n" +" - `[p]assistant compaction threshold 16000` - compact at 16k tokens\n" +" - `[p]assistant compaction threshold 0` - reset to default behavior\n" " " msgstr "" -#: assistant\commands\admin.py:3394 +#: assistant\commands\admin.py:4509 msgid "Token limit must be 0 or higher" msgstr "" -#: assistant\commands\admin.py:3398 +#: assistant\commands\admin.py:4513 msgid "Compaction will now trigger at **{}** tokens" msgstr "" -#: assistant\commands\admin.py:3400 +#: assistant\commands\admin.py:4515 msgid "Compaction threshold reset, will only compact at the model's max token limit" msgstr "" -#: assistant\commands\base.py:46 +#: assistant\commands\base.py:45 #, docstring msgid "Get help using assistant" msgstr "Obtener ayuda para usar el asistente" -#: assistant\commands\base.py:48 +#: assistant\commands\base.py:47 msgid "\n" "# How to Use\n\n" "### Commands\n" @@ -2487,6 +3352,7 @@ msgid "\n" "`[p]convocontext` - detailed token breakdown of what's consuming your context window.\n" "`[p]convocompact` - intelligently summarize older messages to free up context space.\n" "`[p]clearconvo` - reset your conversation for the current channel/thread/forum.\n" +"`[p]unchat` - cancel the active assistant response for the current channel/thread/forum.\n" "`[p]showconvo` - get a json dump of your current conversation (this is mostly for debugging)\n" "`[p]chat` or `[p]ask` - command prefix for chatting with the bot outside of the live chat, or just @ it.\n\n" "### Chat Arguments\n" @@ -2513,42 +3379,38 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:109 +#: assistant\commands\base.py:110 msgid "The API key is not set up!" msgstr "" -#: assistant\commands\base.py:111 +#: assistant\commands\base.py:112 msgid "Image generation is disabled!" msgstr "" -#: assistant\commands\base.py:120 +#: assistant\commands\base.py:121 msgid "Generating image..." msgstr "" -#: assistant\commands\base.py:124 +#: assistant\commands\base.py:125 msgid "-# Size: {}\n" "-# Quality: {}\n" "-# Model: {}" msgstr "" -#: assistant\commands\base.py:126 +#: assistant\commands\base.py:127 msgid "\n" "-# Style: {}" msgstr "" -#: assistant\commands\base.py:145 -msgid "Cost: ${}" -msgstr "" - -#: assistant\commands\base.py:150 +#: assistant\commands\base.py:155 msgid "Revised Prompt" msgstr "" -#: assistant\commands\base.py:150 +#: assistant\commands\base.py:155 msgid "Continued" msgstr "" -#: assistant\commands\base.py:170 +#: assistant\commands\base.py:178 #, docstring msgid "\n" " Chat with [botname]!\n\n" @@ -2565,7 +3427,11 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:197 +#: assistant\commands\base.py:208 +msgid "There are too many pending messages for this conversation. Please wait for the current reply." +msgstr "" + +#: assistant\commands\base.py:214 #, docstring msgid "\n" " Check the token and message count of yourself or another user's conversation for this channel\n\n" @@ -2577,7 +3443,7 @@ msgstr "\n" "Las conversaciones son *Por* usuario *Por* canal, lo que significa que una conversación que tengas en un canal se mantendrá en memoria separada de otra conversación en un canal distinto.\n\n" "Las conversaciones sólo se guardan en la memoria hasta que el bot se reinicia o el engranaje se recarga " -#: assistant\commands\base.py:252 +#: assistant\commands\base.py:271 msgid "`Messages: `{}/{}\n" "`Context: `{}/{} ({:.1f}%)\n" "`Conversation:`{}\n" @@ -2586,126 +3452,126 @@ msgid "`Messages: `{}/{}\n" "`Model: `{}" msgstr "" -#: assistant\commands\base.py:271 +#: assistant\commands\base.py:290 msgid "\n" "`Tool Calls: `{}" msgstr "" -#: assistant\commands\base.py:273 +#: assistant\commands\base.py:292 msgid "\n" "`Compacted: `{} time(s)" msgstr "" -#: assistant\commands\base.py:275 +#: assistant\commands\base.py:294 msgid "*Collabroative conversations are enabled*" msgstr "*Las conversaciones colaborativas están habilitadas*" -#: assistant\commands\base.py:281 +#: assistant\commands\base.py:300 msgid "Conversation stats for {}" msgstr "Estadísticas de conversación para {}" -#: assistant\commands\base.py:284 +#: assistant\commands\base.py:303 msgid "Context = conversation + overhead (prompts + function schemas)" msgstr "" -#: assistant\commands\base.py:289 +#: assistant\commands\base.py:308 msgid "System prompt override for this conversation" msgstr "Anulación del mensaje del sistema para esta conversación" -#: assistant\commands\base.py:292 +#: assistant\commands\base.py:311 msgid "System prompt override for this channel" msgstr "" -#: assistant\commands\base.py:298 +#: assistant\commands\base.py:317 #, docstring msgid "Show a detailed token breakdown for your conversation context" msgstr "" -#: assistant\commands\base.py:334 +#: assistant\commands\base.py:353 msgid "`Max Context: `{} tokens\n" msgstr "" -#: assistant\commands\base.py:335 +#: assistant\commands\base.py:354 msgid "`Context Fill: `{:.1f}%\n" msgstr "" -#: assistant\commands\base.py:336 +#: assistant\commands\base.py:355 msgid "`Model: `{}\n" msgstr "" -#: assistant\commands\base.py:338 +#: assistant\commands\base.py:357 msgid "**Token Breakdown**\n" msgstr "" -#: assistant\commands\base.py:339 +#: assistant\commands\base.py:358 msgid "`System Prompt: `{}\n" msgstr "" -#: assistant\commands\base.py:340 +#: assistant\commands\base.py:359 msgid "`Initial Prompt: `{}\n" msgstr "" -#: assistant\commands\base.py:341 +#: assistant\commands\base.py:360 msgid "`Channel Prompt: `{}\n" msgstr "" -#: assistant\commands\base.py:342 +#: assistant\commands\base.py:361 msgid "`Function Schemas: `{} ({} functions)\n" msgstr "" -#: assistant\commands\base.py:345 +#: assistant\commands\base.py:364 msgid "`Conversation: `{}\n" msgstr "" -#: assistant\commands\base.py:346 +#: assistant\commands\base.py:365 msgid "`Total: `{}\n" msgstr "" -#: assistant\commands\base.py:348 +#: assistant\commands\base.py:367 msgid "**Message Breakdown**\n" msgstr "" -#: assistant\commands\base.py:349 +#: assistant\commands\base.py:368 msgid "`System/Developer: `{}\n" msgstr "" -#: assistant\commands\base.py:350 +#: assistant\commands\base.py:369 msgid "`User Messages: `{}\n" msgstr "" -#: assistant\commands\base.py:351 +#: assistant\commands\base.py:370 msgid "`Assistant Messages: `{}\n" msgstr "" -#: assistant\commands\base.py:352 +#: assistant\commands\base.py:371 msgid "`Tool Results: `{}\n" msgstr "" -#: assistant\commands\base.py:353 +#: assistant\commands\base.py:372 msgid "`Images: `{}\n" msgstr "" -#: assistant\commands\base.py:354 +#: assistant\commands\base.py:373 msgid "`Compaction Summaries:`{}\n" msgstr "" -#: assistant\commands\base.py:356 +#: assistant\commands\base.py:375 msgid "**Compaction**\n" msgstr "" -#: assistant\commands\base.py:357 +#: assistant\commands\base.py:376 msgid "`Times Compacted: `{}\n" msgstr "" -#: assistant\commands\base.py:367 +#: assistant\commands\base.py:386 msgid "Context Breakdown" msgstr "" -#: assistant\commands\base.py:372 +#: assistant\commands\base.py:391 msgid "Context for {}" msgstr "" -#: assistant\commands\base.py:380 +#: assistant\commands\base.py:399 #, docstring msgid "Compact your conversation using LLM summarization\n\n" " This summarizes older messages instead of deleting them, preserving\n" @@ -2716,35 +3582,35 @@ msgid "Compact your conversation using LLM summarization\n\n" " " msgstr "" -#: assistant\commands\base.py:391 +#: assistant\commands\base.py:411 msgid "No API key has been set!" msgstr "" -#: assistant\commands\base.py:393 +#: assistant\commands\base.py:413 msgid "Conversation compaction is disabled in this server." msgstr "" -#: assistant\commands\base.py:404 +#: assistant\commands\base.py:424 msgid "Only moderators can compact channel conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:409 +#: assistant\commands\base.py:429 msgid "You have no conversation history in this channel." msgstr "" -#: assistant\commands\base.py:414 +#: assistant\commands\base.py:434 msgid "Not enough messages to compact (need more than {})." msgstr "" -#: assistant\commands\base.py:434 +#: assistant\commands\base.py:453 msgid "Conversation compacted! ({} compactions total for this conversation)" msgstr "" -#: assistant\commands\base.py:439 +#: assistant\commands\base.py:458 msgid "Compaction was not needed or failed." msgstr "" -#: assistant\commands\base.py:444 +#: assistant\commands\base.py:463 #, docstring msgid "\n" " Reset your conversation with the bot\n\n" @@ -2754,15 +3620,32 @@ msgstr "\n" "Reinicia tu conversación con el bot\n\n" "Esto borrará todo el historial de mensajes entre tú y el bot para este canal " -#: assistant\commands\base.py:457 +#: assistant\commands\base.py:476 msgid "Only moderators can clear channel conversations when collaborative conversations are enabled!" msgstr "¡Solo los moderadores pueden borrar conversaciones de canal cuando las conversaciones colaborativas están habilitadas!" -#: assistant\commands\base.py:461 +#: assistant\commands\base.py:481 msgid "Your conversation in this channel has been reset!" msgstr "¡Tu conversación en este canal ha sido reiniciada!" -#: assistant\commands\base.py:467 +#: assistant\commands\base.py:486 +#, docstring +msgid "Cancel the active assistant response for this channel" +msgstr "" + +#: assistant\commands\base.py:494 +msgid "Only moderators can cancel channel conversations when collaborative conversations are enabled!" +msgstr "" + +#: assistant\commands\base.py:499 +msgid "There is no active assistant response to cancel in this channel." +msgstr "" + +#: assistant\commands\base.py:500 +msgid "The active assistant response for this channel has been cancelled." +msgstr "" + +#: assistant\commands\base.py:506 #, docstring msgid "\n" " Pop the last message from your conversation\n" @@ -2771,74 +3654,74 @@ msgstr "\n" " Eliminar el último mensaje de tu conversación\n" " " -#: assistant\commands\base.py:478 +#: assistant\commands\base.py:517 msgid "Only moderators can pop messages from conversations when collaborative conversations are enabled!" msgstr "¡Solo los moderadores pueden eliminar mensajes de conversaciones cuando las conversaciones colaborativas están habilitadas!" -#: assistant\commands\base.py:482 assistant\commands\base.py:743 +#: assistant\commands\base.py:521 assistant\commands\base.py:788 msgid "There are no messages in this conversation yet!" msgstr "¡Aún no hay mensajes en esta conversación!" -#: assistant\commands\base.py:487 +#: assistant\commands\base.py:526 msgid "Removed the last message from this conversation" msgstr "Eliminó el último mensaje de esta conversación" -#: assistant\commands\base.py:507 +#: assistant\commands\base.py:546 #, docstring msgid "\n" " Get a summary of whats going on in a channel\n" " " msgstr "" -#: assistant\commands\base.py:513 +#: assistant\commands\base.py:552 msgid "Invalid timeframe! Please use a valid time format like `1h` for an hour" msgstr "" -#: assistant\commands\base.py:516 +#: assistant\commands\base.py:555 msgid "The maximum timeframe is 48 hours!" msgstr "" -#: assistant\commands\base.py:524 +#: assistant\commands\base.py:563 msgid "Only moderators can summarize conversations!" msgstr "" -#: assistant\commands\base.py:531 +#: assistant\commands\base.py:570 msgid "You don't have permission to view the channel!" msgstr "" -#: assistant\commands\base.py:538 +#: assistant\commands\base.py:577 msgid "I don't have permission to view the channel!" msgstr "" -#: assistant\commands\base.py:561 +#: assistant\commands\base.py:600 msgid "No messages found to summarize within that timeframe!" msgstr "" -#: assistant\commands\base.py:563 +#: assistant\commands\base.py:602 msgid "Not enough messages found to summarize within that timeframe!" msgstr "" -#: assistant\commands\base.py:664 +#: assistant\commands\base.py:706 msgid "The request timed out!" msgstr "" -#: assistant\commands\base.py:675 +#: assistant\commands\base.py:717 msgid "Failed to get response" msgstr "" -#: assistant\commands\base.py:678 +#: assistant\commands\base.py:720 msgid "No response was generated!" msgstr "" -#: assistant\commands\base.py:685 +#: assistant\commands\base.py:727 msgid "Timeframe: {}" msgstr "" -#: assistant\commands\base.py:692 assistant\commands\base.py:702 +#: assistant\commands\base.py:734 assistant\commands\base.py:744 msgid "Channel" msgstr "" -#: assistant\commands\base.py:724 +#: assistant\commands\base.py:769 #, docstring msgid "\n" " Copy the conversation to another channel, thread, or forum\n" @@ -2847,23 +3730,23 @@ msgstr "\n" " Copiar la conversación a otro canal, hilo o foro\n" " " -#: assistant\commands\base.py:735 +#: assistant\commands\base.py:780 msgid "Only moderators can copy conversations when collaborative conversations are enabled!" msgstr "¡Solo los moderadores pueden copiar conversaciones cuando las conversaciones colaborativas están habilitadas!" -#: assistant\commands\base.py:746 +#: assistant\commands\base.py:791 msgid "You cannot copy a conversation to a channel you can't see!" msgstr "¡No puedes copiar una conversación a un canal que no puedes ver!" -#: assistant\commands\base.py:752 +#: assistant\commands\base.py:797 msgid "This conversation has been overwritten in {}" msgstr "Esta conversación ha sido sobrescrita en {}" -#: assistant\commands\base.py:754 +#: assistant\commands\base.py:799 msgid "This conversation has been copied over to {}" msgstr "Esta conversación ha sido copiada a {}" -#: assistant\commands\base.py:764 +#: assistant\commands\base.py:809 #, docstring msgid "\n" " Set a system prompt for this conversation!\n\n" @@ -2876,29 +3759,29 @@ msgstr "\n" " Consulta [Esta Guía](https://platform.openai.com/docs/guides/prompt-engineering) para obtener ayuda con los mensajes.\n" " " -#: assistant\commands\base.py:773 +#: assistant\commands\base.py:818 msgid "Conversation system prompt overriding is **Disabled**." msgstr "La anulación del mensaje del sistema para la conversación está **Deshabilitada**." -#: assistant\commands\base.py:783 +#: assistant\commands\base.py:828 msgid "Only moderators can set conversation prompts when collaborative conversations are enabled!" msgstr "¡Solo los moderadores pueden configurar mensajes de conversación cuando las conversaciones colaborativas están habilitadas!" -#: assistant\commands\base.py:803 +#: assistant\commands\base.py:848 msgid "This prompt is uses {} tokens which is more than 90% of the maximum tokens allowed per conversation!\n" "Write a prompt using {} tokens or less to leave 10% of your token limit for responses" msgstr "¡Este prompt usa {} tokens, lo cual es más del 90% de los tokens máximos permitidos por conversación!\n" "Escribe un prompt usando {} tokens o menos para dejar el 10% de tu límite de tokens para respuestas" -#: assistant\commands\base.py:812 +#: assistant\commands\base.py:857 msgid "System prompt has been set for this conversation!" msgstr "¡El prompt del sistema ha sido configurado para esta conversación!" -#: assistant\commands\base.py:814 +#: assistant\commands\base.py:859 msgid "System prompt has been **Removed** for this conversation!" msgstr "¡El prompt del sistema ha sido **eliminado** para esta conversación!" -#: assistant\commands\base.py:826 +#: assistant\commands\base.py:871 #, docstring msgid "\n" " View the current transcript of a conversation\n\n" @@ -2908,50 +3791,50 @@ msgstr "\n" "Ver la transcripción actual de una conversación\n\n" "Esto está principalmente aquí con fines de moderación " -#: assistant\commands\base.py:838 +#: assistant\commands\base.py:883 msgid "You have no conversation in this channel!" msgstr "¡No tienes conversación en este canal!" -#: assistant\commands\base.py:851 +#: assistant\commands\base.py:896 msgid "Here is your conversation transcript!" msgstr "¡Aquí está la transcripción de tu conversación!" -#: assistant\commands\base.py:857 +#: assistant\commands\base.py:902 #, docstring msgid "\n" " Import a conversation from a file\n" " " msgstr "" -#: assistant\commands\base.py:862 +#: assistant\commands\base.py:907 msgid "Please attach a file to import the conversation from!" msgstr "" -#: assistant\commands\base.py:864 +#: assistant\commands\base.py:909 msgid "Please only attach one file to import the conversation from!" msgstr "" -#: assistant\commands\base.py:867 +#: assistant\commands\base.py:912 msgid "Please upload a valid JSON file." msgstr "" -#: assistant\commands\base.py:872 +#: assistant\commands\base.py:917 msgid "Failed to parse conversation file." msgstr "" -#: assistant\commands\base.py:878 +#: assistant\commands\base.py:923 msgid "The conversation file is not in the correct format. It should be a list of messages." msgstr "" -#: assistant\commands\base.py:888 +#: assistant\commands\base.py:933 msgid "You do not have permission to import conversations." msgstr "" -#: assistant\commands\base.py:893 +#: assistant\commands\base.py:938 msgid "Conversation has been imported successfully!" msgstr "" -#: assistant\commands\base.py:899 +#: assistant\commands\base.py:944 #, docstring msgid "\n" " Fetch related embeddings according to the current topn setting along with their scores\n\n" @@ -2959,31 +3842,31 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:906 +#: assistant\commands\base.py:951 msgid "You do not have any embeddings configured!" msgstr "¡No tiene ninguna incrustación configurada!" -#: assistant\commands\base.py:908 +#: assistant\commands\base.py:953 msgid "Top N is set to 0 so no embeddings will be returned" msgstr "Top N se establece en 0, por lo que no se devolverán incrustaciones" -#: assistant\commands\base.py:914 +#: assistant\commands\base.py:959 msgid "Failed to get embedding for your query" msgstr "No se pudo obtener la incrustación para su consulta" -#: assistant\commands\base.py:923 +#: assistant\commands\base.py:968 msgid "No embeddings could be related to this query with the current settings" msgstr "No se han podido relacionar incrustaciones con esta consulta utilizando la configuración actual" -#: assistant\commands\base.py:927 +#: assistant\commands\base.py:972 msgid "`Entry Name: `{}\n" msgstr "nombre de entrada: `{}`\n" -#: assistant\commands\base.py:928 +#: assistant\commands\base.py:973 msgid "`Relatedness: `{}\n" msgstr "`Relación: `{}\n" -#: assistant\commands\base.py:929 +#: assistant\commands\base.py:974 msgid "`Dimensions: `{}\n" msgstr "`Dimensiones: `{}\n" From 38447aff2c5cb73759417cb1ace33bdda32ae4ae Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Mon, 1 Jun 2026 11:10:43 -0400 Subject: [PATCH 051/104] New translations messages.pot (German) [ci skip] --- assistant/commands/locales/de-DE.po | 2684 ++++++++++++++++++--------- 1 file changed, 1788 insertions(+), 896 deletions(-) diff --git a/assistant/commands/locales/de-DE.po b/assistant/commands/locales/de-DE.po index 2e6f92814..dffc85f95 100644 --- a/assistant/commands/locales/de-DE.po +++ b/assistant/commands/locales/de-DE.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-20 01:28\n" +"POT-Creation-Date: 2026-06-01 09:46-0400\n" +"PO-Revision-Date: 2026-06-01 15:10\n" "Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" @@ -17,19 +17,19 @@ msgstr "" "X-Crowdin-File-ID: 53\n" "Language: de_DE\n" -#: assistant\commands\admin.py:67 +#: assistant\commands\admin.py:89 msgid "Endpoint override must be a full base URL, for example `http://127.0.0.1:1234/v1` or `https://example.com/api/v1`." msgstr "" -#: assistant\commands\admin.py:72 +#: assistant\commands\admin.py:94 msgid "Endpoint override must point at the OpenAI-compatible API base path ending in `/v1`. Do not include routes like `/chat/completions` or `/models`." msgstr "" -#: assistant\commands\admin.py:81 +#: assistant\commands\admin.py:103 msgid "Empty" msgstr "" -#: assistant\commands\admin.py:90 +#: assistant\commands\admin.py:112 #, docstring msgid "\n" " Setup the assistant\n\n" @@ -37,69 +37,166 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:133 +#: assistant\commands\admin.py:122 +#, docstring +msgid "Manage API keys and endpoint URLs" +msgstr "" + +#: assistant\commands\admin.py:127 +#, docstring +msgid "Per-guild endpoint and key overrides (chat + embeddings)" +msgstr "" + +#: assistant\commands\admin.py:132 +#, docstring +msgid "Configure general guild settings" +msgstr "" + +#: assistant\commands\admin.py:137 +#, docstring +msgid "Configure assistant prompts" +msgstr "" + +#: assistant\commands\admin.py:142 +#, docstring +msgid "Configure feature toggles" +msgstr "" + +#: assistant\commands\admin.py:147 +#, docstring +msgid "Configure auto-answer settings" +msgstr "" + +#: assistant\commands\admin.py:152 +#, docstring +msgid "Configure trigger phrase system" +msgstr "" + +#: assistant\commands\admin.py:157 +#, docstring +msgid "Configure content filtering" +msgstr "" + +#: assistant\commands\admin.py:162 +#, docstring +msgid "Configure token and retention limits" +msgstr "" + +#: assistant\commands\admin.py:167 +#, docstring +msgid "Configure model behavior parameters" +msgstr "" + +#: assistant\commands\admin.py:172 +#, docstring +msgid "Configure embeddings and RAG settings" +msgstr "" + +#: assistant\commands\admin.py:177 +#, docstring +msgid "Admin maintenance commands" +msgstr "" + +#: assistant\commands\admin.py:183 +#, docstring +msgid "Configure OpenRouter response & prompt caching." +msgstr "" + +#: assistant\commands\admin.py:188 +#, docstring +msgid "Manage role-based overrides" +msgstr "" + +#: assistant\commands\admin.py:193 +#, docstring +msgid "Manage scheduled autonomous tasks" +msgstr "" + +#: assistant\commands\admin.py:198 +#, docstring +msgid "Configure conversation compaction" +msgstr "" + +#: assistant\commands\admin.py:203 +#, docstring +msgid "AI moderation: scan messages, review flagged ones, and propose staff actions." +msgstr "" + +#: assistant\commands\admin.py:244 msgid "... and {} more" msgstr "" -#: assistant\commands\admin.py:143 +#: assistant\commands\admin.py:255 msgid "Configured chat model" msgstr "" -#: assistant\commands\admin.py:144 +#: assistant\commands\admin.py:256 msgid "{}: **{}**" msgstr "" -#: assistant\commands\admin.py:147 assistant\commands\admin.py:180 +#: assistant\commands\admin.py:259 assistant\commands\admin.py:294 msgid "No endpoint model cache is available yet. Run `{}` to refresh it, or enter a model id manually." msgstr "" -#: assistant\commands\admin.py:154 +#: assistant\commands\admin.py:266 msgid "Runtime chat model: **{}**" msgstr "" -#: assistant\commands\admin.py:159 +#: assistant\commands\admin.py:271 msgid "Discovered chat models:\n" "{}" msgstr "" -#: assistant\commands\admin.py:165 +#: assistant\commands\admin.py:277 msgid "No chat models were discovered from this endpoint yet. You can still enter a model id manually." msgstr "" -#: assistant\commands\admin.py:169 assistant\commands\admin.py:204 +#: assistant\commands\admin.py:281 assistant\commands\admin.py:318 msgid "Use this command again with one of these model ids, or enter another id manually if your endpoint supports it." msgstr "" -#: assistant\commands\admin.py:177 +#: assistant\commands\admin.py:291 msgid "Configured embedding model: **{}**" msgstr "" -#: assistant\commands\admin.py:187 +#: assistant\commands\admin.py:301 msgid "Runtime embedding model: **{}**" msgstr "" -#: assistant\commands\admin.py:192 +#: assistant\commands\admin.py:306 msgid "Discovered embedding models:\n" "{}" msgstr "" -#: assistant\commands\admin.py:198 +#: assistant\commands\admin.py:312 msgid "No embedding models were discovered from this endpoint yet. You can still enter a model id manually." msgstr "" -#: assistant\commands\admin.py:217 +#: assistant\commands\admin.py:332 msgid "embedding" msgstr "" -#: assistant\commands\admin.py:217 +#: assistant\commands\admin.py:332 msgid "chat" msgstr "" -#: assistant\commands\admin.py:220 -msgid "Note: `{}` is not in the endpoint's discovered {} model list. Requests will currently resolve to `{}` unless the endpoint starts advertising or returning that model." +#: assistant\commands\admin.py:351 +msgid "Note: `{}` is not in the endpoint's discovered {} model list. Requests on this endpoint will automatically use `{}` instead." msgstr "" -#: assistant\commands\admin.py:228 +#: assistant\commands\admin.py:354 +msgid "Note: `{}` is not in the endpoint's discovered {} model list. The cog will still try to use it directly, but the endpoint may reject it." +msgstr "" + +#: assistant\commands\admin.py:400 +msgid "Warning: stored embeddings currently use mixed dimensions ({}). Run `{}` to resync them with `{}`." +msgstr "" + +#: assistant\commands\admin.py:412 +msgid "Warning: stored embeddings are `{}` dimensions, but `{}` returns `{}` dimensions. Run `{}` to resync them after switching models." +msgstr "" + +#: assistant\commands\admin.py:443 #, docstring msgid "\n" " View current settings\n\n" @@ -109,538 +206,657 @@ msgstr "\n" "Aktuelle Einstellungen anzeigen\n\n" "Um im aktuellen Kanal zu senden, verwenden Sie `[p]assistant view false` " -#: assistant\commands\admin.py:248 +#: assistant\commands\admin.py:468 msgid "`OpenAI Version: `{}\n" msgstr "`OpenAI Version: `{}\n" -#: assistant\commands\admin.py:249 +#: assistant\commands\admin.py:469 msgid "`OpenAI API Status: `{}\n" msgstr "" -#: assistant\commands\admin.py:250 +#: assistant\commands\admin.py:470 msgid "`Draw Command: `{}\n" msgstr "" -#: assistant\commands\admin.py:250 assistant\commands\admin.py:295 -#: assistant\commands\admin.py:302 assistant\commands\admin.py:312 -#: assistant\commands\admin.py:396 assistant\commands\admin.py:1346 +#: assistant\commands\admin.py:470 assistant\commands\admin.py:525 +#: assistant\commands\admin.py:532 assistant\commands\admin.py:542 +#: assistant\commands\admin.py:679 assistant\commands\admin.py:1695 msgid "Enabled" msgstr "" -#: assistant\commands\admin.py:250 assistant\commands\admin.py:295 -#: assistant\commands\admin.py:302 assistant\commands\admin.py:312 -#: assistant\commands\admin.py:396 assistant\commands\admin.py:1346 +#: assistant\commands\admin.py:470 assistant\commands\admin.py:525 +#: assistant\commands\admin.py:532 assistant\commands\admin.py:542 +#: assistant\commands\admin.py:604 assistant\commands\admin.py:679 +#: assistant\commands\admin.py:1695 msgid "Disabled" msgstr "" -#: assistant\commands\admin.py:251 +#: assistant\commands\admin.py:471 msgid "`Model: `{}\n" msgstr "`Modell: `{}\n" -#: assistant\commands\admin.py:252 +#: assistant\commands\admin.py:472 msgid "`Embed Model: `{}\n" msgstr "" -#: assistant\commands\admin.py:253 +#: assistant\commands\admin.py:473 msgid "`Enabled: `{}\n" msgstr "`Aktiviert: `{}\n" -#: assistant\commands\admin.py:254 +#: assistant\commands\admin.py:474 msgid "`Timezone: `{}\n" msgstr "`Zeitzone: `{}\n" -#: assistant\commands\admin.py:255 +#: assistant\commands\admin.py:475 msgid "`Channel: `{}\n" msgstr "`Kanal: `{}\n" -#: assistant\commands\admin.py:255 assistant\commands\admin.py:405 -#: assistant\commands\admin.py:412 +#: assistant\commands\admin.py:475 assistant\commands\admin.py:688 +#: assistant\commands\admin.py:695 msgid "Not Set" msgstr "Nicht festgelegt" -#: assistant\commands\admin.py:256 +#: assistant\commands\admin.py:476 msgid "`? Required: `{}\n" msgstr "`? Erforderlich: `{}\n" -#: assistant\commands\admin.py:257 +#: assistant\commands\admin.py:477 msgid "`Question Mode: `{}\n" msgstr "" -#: assistant\commands\admin.py:258 +#: assistant\commands\admin.py:478 msgid "`Mention on Reply: `{}\n" msgstr "" -#: assistant\commands\admin.py:259 +#: assistant\commands\admin.py:479 msgid "`Respond to Mentions: `{}\n" msgstr "" -#: assistant\commands\admin.py:260 +#: assistant\commands\admin.py:480 msgid "`Collaborative Mode: `{}\n" msgstr "" -#: assistant\commands\admin.py:262 +#: assistant\commands\admin.py:481 msgid "`Max Retention: `{}\n" msgstr "`Maximale Aufbewahrung: `{}\n" -#: assistant\commands\admin.py:263 +#: assistant\commands\admin.py:482 msgid "`Retention Expire: `{}s\n" msgstr "`Ablauf der Beibehaltung: {}s\\n`\n" -#: assistant\commands\admin.py:264 +#: assistant\commands\admin.py:483 msgid "`Max Tokens: `{}\n" msgstr "`Max Tokens: `{}\n" -#: assistant\commands\admin.py:265 +#: assistant\commands\admin.py:484 msgid "`Max Response Tokens: `{}\n" msgstr "`Maximale Antwort-Tokens: {}`\n" -#: assistant\commands\admin.py:266 +#: assistant\commands\admin.py:485 msgid "`Min Length: `{}\n" msgstr "`Mindestlänge: `{}\n" -#: assistant\commands\admin.py:267 +#: assistant\commands\admin.py:486 msgid "`Temperature: `{}\n" msgstr "`Temperatur: `{}\n" -#: assistant\commands\admin.py:268 +#: assistant\commands\admin.py:487 msgid "`Frequency Penalty: `{}\n" msgstr "" -#: assistant\commands\admin.py:269 +#: assistant\commands\admin.py:488 msgid "`Presence Penalty: `{}\n" msgstr "" -#: assistant\commands\admin.py:270 +#: assistant\commands\admin.py:489 msgid "`Seed: `{}\n" msgstr "" -#: assistant\commands\admin.py:271 +#: assistant\commands\admin.py:490 msgid "`Vision Resolution: `{}\n" msgstr "" -#: assistant\commands\admin.py:272 +#: assistant\commands\admin.py:491 msgid "`Reasoning Effort: `{}\n" msgstr "" -#: assistant\commands\admin.py:273 +#: assistant\commands\admin.py:492 msgid "`Verbosity: `{}\n" msgstr "" -#: assistant\commands\admin.py:274 +#: assistant\commands\admin.py:493 msgid "`System Prompt: `{} tokens\n" msgstr "" -#: assistant\commands\admin.py:275 +#: assistant\commands\admin.py:494 msgid "`User Prompt: `{} tokens\n" msgstr "" -#: assistant\commands\admin.py:276 +#: assistant\commands\admin.py:495 msgid "`Endpoint Override: `{}\n" msgstr "" -#: assistant\commands\admin.py:280 +#: assistant\commands\admin.py:495 assistant\commands\admin.py:496 +#: assistant\commands\admin.py:3518 +msgid "Not set" +msgstr "" + +#: assistant\commands\admin.py:496 +msgid "`Guild Endpoint: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:500 +msgid "`Effective Model: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:502 +msgid "`Effective Embed: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:505 msgid "Assistant Settings" msgstr "Assistenteneinstellungen" -#: assistant\commands\admin.py:288 +#: assistant\commands\admin.py:515 assistant\commands\admin.py:978 +#: assistant\commands\admin.py:1062 msgid "Endpoint Runtime" msgstr "" -#: assistant\commands\admin.py:290 +#: assistant\commands\admin.py:520 msgid "Auto Answer" msgstr "" -#: assistant\commands\admin.py:291 +#: assistant\commands\admin.py:521 msgid "Auto-answer will trigger the bot outside of the assistant channel if a question is detected and an embedding is not found.\n" msgstr "" -#: assistant\commands\admin.py:294 +#: assistant\commands\admin.py:524 msgid "`Model: `{}\n" msgstr "" -#: assistant\commands\admin.py:295 assistant\commands\admin.py:302 +#: assistant\commands\admin.py:525 assistant\commands\admin.py:532 msgid "`Status: `{}\n" msgstr "" -#: assistant\commands\admin.py:296 +#: assistant\commands\admin.py:526 msgid "`Threshold: `{}\n" msgstr "" -#: assistant\commands\admin.py:297 assistant\commands\admin.py:304 +#: assistant\commands\admin.py:527 assistant\commands\admin.py:534 msgid "`Ignored: `{}\n" msgstr "" -#: assistant\commands\admin.py:300 +#: assistant\commands\admin.py:530 msgid "Trigger Words" msgstr "" -#: assistant\commands\admin.py:301 +#: assistant\commands\admin.py:531 msgid "Trigger words allow the bot to respond to messages containing specific keywords or regex patterns.\n" msgstr "" -#: assistant\commands\admin.py:303 +#: assistant\commands\admin.py:533 msgid "`Phrases: `{}\n" msgstr "" -#: assistant\commands\admin.py:305 +#: assistant\commands\admin.py:535 assistant\commands\admin.py:3515 msgid "None" msgstr "" -#: assistant\commands\admin.py:307 +#: assistant\commands\admin.py:537 msgid "`Has Prompt:`{}\n" msgstr "" -#: assistant\commands\admin.py:307 +#: assistant\commands\admin.py:537 msgid "Yes" msgstr "" -#: assistant\commands\admin.py:307 +#: assistant\commands\admin.py:537 msgid "No" msgstr "" -#: assistant\commands\admin.py:310 +#: assistant\commands\admin.py:540 msgid "Think Tags" msgstr "" -#: assistant\commands\admin.py:311 +#: assistant\commands\admin.py:541 msgid "Reasoning blocks wrapped in these tags are removed from chat output.\n" msgstr "" -#: assistant\commands\admin.py:312 +#: assistant\commands\admin.py:542 msgid "`Upload as Files:`{}\n" msgstr "" -#: assistant\commands\admin.py:313 +#: assistant\commands\admin.py:543 msgid "Prefix\n" "{}\n" "Suffix\n" "{}" msgstr "" -#: assistant\commands\admin.py:320 +#: assistant\commands\admin.py:550 msgid "System prompt override is **Allowed**, users can set a personal system prompt per convo." msgstr "" -#: assistant\commands\admin.py:322 +#: assistant\commands\admin.py:552 msgid "System prompt override is **Disabled**, users cannot set a personal system prompt per convo." msgstr "" -#: assistant\commands\admin.py:323 +#: assistant\commands\admin.py:553 msgid "\n" "*This will be restricted to mods if collaborative conversations are enabled!*" msgstr "" -#: assistant\commands\admin.py:324 +#: assistant\commands\admin.py:554 msgid "System Prompt Overriding" msgstr "" -#: assistant\commands\admin.py:332 +#: assistant\commands\admin.py:562 msgid "Channel Prompt Overrides" msgstr "" -#: assistant\commands\admin.py:343 +#: assistant\commands\admin.py:578 +msgid "• System prompt - `{}`" +msgstr "" + +#: assistant\commands\admin.py:581 +msgid "• Initial prompt - `{}`" +msgstr "" + +#: assistant\commands\admin.py:586 +msgid "• <#{}> - `{}`" +msgstr "" + +#: assistant\commands\admin.py:589 +msgid "⚠️ Cache Warning" +msgstr "" + +#: assistant\commands\admin.py:590 +msgid "These prompts contain dynamic variable placeholders that break prompt prefix caching on every request. Use `{prefix}floatingcontext` to move them to the floating context block instead.\n" +msgstr "" + +#: assistant\commands\admin.py:602 +msgid "Enabled ({}s TTL)" +msgstr "" + +#: assistant\commands\admin.py:607 +msgid "Off" +msgstr "" + +#: assistant\commands\admin.py:608 +msgid "5 minutes" +msgstr "" + +#: assistant\commands\admin.py:609 +msgid "1 hour" +msgstr "" + +#: assistant\commands\admin.py:612 +msgid "OpenRouter Caching" +msgstr "" + +#: assistant\commands\admin.py:614 +msgid "`Response Cache: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:615 +msgid "`Provider Prompt Cache: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:626 msgid "Auto-Reply Channels" msgstr "" -#: assistant\commands\admin.py:352 +#: assistant\commands\admin.py:635 msgid "Mixed (Please Refresh!)" msgstr "Gemischt (Bitte aktualisieren!)" -#: assistant\commands\admin.py:354 +#: assistant\commands\admin.py:637 msgid "Synced!" msgstr "Synchronisiert!" -#: assistant\commands\admin.py:356 +#: assistant\commands\admin.py:639 msgid "N/A" msgstr "Entschuldigung für den Fehler. Hier ist die korrigierte Übersetzung:\n\n" "Nicht verfügbar (N/A)" -#: assistant\commands\admin.py:359 +#: assistant\commands\admin.py:642 msgid "`Top N Embeddings: `{}\n" msgstr "`Top N Einbettungen: `{}\n" -#: assistant\commands\admin.py:360 +#: assistant\commands\admin.py:643 msgid "`Min Relatedness: `{}\n" msgstr "`Min. Verwandtschaft: {}`\n" -#: assistant\commands\admin.py:361 +#: assistant\commands\admin.py:644 msgid "`Encodings: `{}" msgstr "" -#: assistant\commands\admin.py:365 +#: assistant\commands\admin.py:648 msgid "Embeddings ({})" msgstr "Einbettungen ({})" -#: assistant\commands\admin.py:373 +#: assistant\commands\admin.py:656 msgid "The following roles/users can use the `think_and_plan` tool: " msgstr "" -#: assistant\commands\admin.py:378 +#: assistant\commands\admin.py:661 msgid "`Function Calling: `{}\n" msgstr "Funktionsaufruf: `{}`\n" -#: assistant\commands\admin.py:379 +#: assistant\commands\admin.py:662 msgid "`Maximum Recursion: `{}\n" msgstr "`Maximale Rekursion: {}`\n" -#: assistant\commands\admin.py:380 +#: assistant\commands\admin.py:663 msgid "`Function Tokens: `{}\n" msgstr "`Funktions-Token: {}`\n" -#: assistant\commands\admin.py:384 +#: assistant\commands\admin.py:667 msgid "The following cogs also have functions registered with the assistant\n" "{}" msgstr "Die folgenden Rädchen haben ebenfalls Funktionen, die beim Assistenten registriert sind\n" "{}" -#: assistant\commands\admin.py:389 +#: assistant\commands\admin.py:672 msgid "Custom Functions ({})" msgstr "Benutzerdefinierte Funktionen ({})" -#: assistant\commands\admin.py:394 +#: assistant\commands\admin.py:677 msgid "Max tokens" msgstr "" -#: assistant\commands\admin.py:396 +#: assistant\commands\admin.py:679 msgid "`Compaction: `{}\n" msgstr "" -#: assistant\commands\admin.py:397 +#: assistant\commands\admin.py:680 msgid "`Compaction Model: `{}\n" msgstr "" -#: assistant\commands\admin.py:397 +#: assistant\commands\admin.py:680 msgid "Same as chat" msgstr "" -#: assistant\commands\admin.py:398 +#: assistant\commands\admin.py:681 msgid "`Threshold: `{}\n" msgstr "" -#: assistant\commands\admin.py:400 +#: assistant\commands\admin.py:683 msgid "Context Compaction" msgstr "" -#: assistant\commands\admin.py:404 +#: assistant\commands\admin.py:687 msgid "API Key" msgstr "" -#: assistant\commands\admin.py:411 +#: assistant\commands\admin.py:694 msgid "Endpoint Override API Key" msgstr "" -#: assistant\commands\admin.py:419 +#: assistant\commands\admin.py:702 msgid "Regex Blacklist" msgstr "Regex Schwarze Liste" -#: assistant\commands\admin.py:421 +#: assistant\commands\admin.py:704 msgid "Regex Failure Blocking" msgstr "Regex-Fehlersperrung" -#: assistant\commands\admin.py:422 +#: assistant\commands\admin.py:705 msgid "Block reply if regex replacement fails: **{}**" msgstr "Antwort blockieren, wenn die Regex-Ersetzung fehlschlägt: **{}**" -#: assistant\commands\admin.py:427 +#: assistant\commands\admin.py:710 msgid "Conversations are stored persistently" msgstr "Konversationen werden dauerhaft gespeichert" -#: assistant\commands\admin.py:429 +#: assistant\commands\admin.py:712 msgid "conversations are stored in memory until reboot or reload" msgstr "Unterhaltungen werden im Speicher gespeichert, bis zum Neustart oder zur Neuladung" -#: assistant\commands\admin.py:431 +#: assistant\commands\admin.py:714 msgid "Persistent Conversations" msgstr "Anhaltende Konversationen" -#: assistant\commands\admin.py:445 +#: assistant\commands\admin.py:728 msgid "Blacklist" msgstr "Schwarze Liste" -#: assistant\commands\admin.py:457 +#: assistant\commands\admin.py:740 msgid "Model Role Overrides" msgstr "Modellrollenüberschreibungen" -#: assistant\commands\admin.py:468 +#: assistant\commands\admin.py:751 msgid "Max Token Role Overrides" msgstr "Maximale Token-Rollenüberschreibungen" -#: assistant\commands\admin.py:479 +#: assistant\commands\admin.py:763 msgid "Max Message Retention Role Overrides" msgstr "Max Message Retention Rollenüberschreibungen" -#: assistant\commands\admin.py:491 +#: assistant\commands\admin.py:778 msgid "Max Message Retention Time Role Overrides" msgstr "Maximale Nachrichtenaufbewahrungszeit Rollenüberschreibungen" -#: assistant\commands\admin.py:505 +#: assistant\commands\admin.py:793 msgid "Max Response Token Role Overrides" msgstr "Maximale Antwort-Token-Rollenüberschreibungen" -#: assistant\commands\admin.py:516 +#: assistant\commands\admin.py:808 msgid "Reasoning Effort Role Overrides" msgstr "" -#: assistant\commands\admin.py:520 +#: assistant\commands\admin.py:815 msgid "Your Brave websearch API key is set!" msgstr "" -#: assistant\commands\admin.py:522 +#: assistant\commands\admin.py:817 msgid "Enables the use of the `search_web_brave` function\n" "Get your API key **[Here](https://brave.com/search/api/)**\n" msgstr "" -#: assistant\commands\admin.py:526 +#: assistant\commands\admin.py:821 msgid "Brave Websearch API key" msgstr "" -#: assistant\commands\admin.py:528 +#: assistant\commands\admin.py:823 msgid "Showing settings for {}" msgstr "Anzeigen der Einstellungen für {}" -#: assistant\commands\admin.py:534 +#: assistant\commands\admin.py:829 msgid "SystemPrompt" msgstr "SystemPrompt" -#: assistant\commands\admin.py:540 +#: assistant\commands\admin.py:835 msgid "InitialPrompt" msgstr "InitialPrompt" -#: assistant\commands\admin.py:550 +#: assistant\commands\admin.py:845 msgid "Sent your current settings for this server in DMs!" msgstr "Schickt eure aktuellen Einstellungen für diesen Server in DMs!" -#: assistant\commands\admin.py:552 +#: assistant\commands\admin.py:847 msgid "You need to allow DMs so I can message you!" msgstr "Du musst DMs erlauben, damit ich dir eine Nachricht schicken kann!" -#: assistant\commands\admin.py:559 -#, docstring -msgid "View the token usage stats for this server" -msgstr "Anzeigen der Token-Nutzungsstatistiken für diesen Server" - -#: assistant\commands\admin.py:562 -msgid "There is no usage data yet!" -msgstr "Es liegen noch keine Nutzungsdaten vor!" - -#: assistant\commands\admin.py:593 -msgid "`Total: `{} (${} @ ${}/1k tokens)" -msgstr "`Insgesamt: {} ({} @ {}/1k Token)`" - -#: assistant\commands\admin.py:600 -msgid "Free/Self-Hosted" -msgstr "Kostenlos / Selbst gehostet" - -#: assistant\commands\admin.py:604 -msgid "`Input: `{} (${} @ ${}/1k tokens)\n" -"`Output: `{} (${} @ ${}/1k tokens)\n" -"`Total: `{} (${})" -msgstr "`Eingabe: `{} (${} @ ${}/1k Token)\n" -"`Ausgabe: `{} (${} @ ${}/1k Token)\n" -"`Total: `{} (${})" - -#: assistant\commands\admin.py:618 -msgid "**Overall Token Usage and Cost**\n" -"`Input: `{} (${})\n" -"`Output: `{} (${})\n" -"`Total: `{} (${})\n" -"`Tool Calls: `{}\n" -msgstr "" - -#: assistant\commands\admin.py:639 -#, docstring -msgid "Reset the token usage stats for this server" -msgstr "Zurücksetzen der Token-Nutzungsstatistik für diesen Server" - -#: assistant\commands\admin.py:642 -msgid "Token usage stats have been reset!" -msgstr "Die Token-Verwendungsstatistik wurde zurückgesetzt!" - -#: assistant\commands\admin.py:648 +#: assistant\commands\admin.py:854 #, docstring msgid "\n" -" Set this server's API key\n" +" Set this server's API key\n\n" +" Used for all requests from this guild - whether routing to OpenAI\n" +" directly, the guild's endpoint override, or the global endpoint\n" +" override. If not set, the global endpoint key is used as a fallback.\n" " " msgstr "" -#: assistant\commands\admin.py:654 +#: assistant\commands\admin.py:864 msgid "Click to set this server's API key\n\n" "To remove your key, enter `none`" msgstr "" -#: assistant\commands\admin.py:663 +#: assistant\commands\admin.py:873 msgid "API key has been removed!" msgstr "" -#: assistant\commands\admin.py:666 assistant\commands\admin.py:695 -#: assistant\commands\admin.py:723 +#: assistant\commands\admin.py:876 assistant\commands\admin.py:905 +#: assistant\commands\admin.py:938 assistant\commands\admin.py:3952 msgid "No API key was entered!" msgstr "Es wurde kein API-Schlüssel eingegeben!" -#: assistant\commands\admin.py:669 +#: assistant\commands\admin.py:879 msgid "API key has been set!" msgstr "" -#: assistant\commands\admin.py:679 +#: assistant\commands\admin.py:889 #, docstring msgid "\n" -" Enables use of the `search_web_brave` function\n\n" -" Get your API key **[Here](https://brave.com/search/api/)**\n" +" Set the Brave Search API key (owner) - used by the web-search tool\n\n" +" Get your API key **[here](https://brave.com/search/api/)**.\n" " " msgstr "" -#: assistant\commands\admin.py:685 +#: assistant\commands\admin.py:895 msgid "Click to set your API key\n\n" "To remove your keys, enter `none`" msgstr "" -#: assistant\commands\admin.py:693 +#: assistant\commands\admin.py:903 msgid "Brave API key has been removed!" msgstr "" -#: assistant\commands\admin.py:698 +#: assistant\commands\admin.py:908 msgid "Brave API key has been set!" msgstr "" -#: assistant\commands\admin.py:706 +#: assistant\commands\admin.py:916 #, docstring msgid "\n" -" Set the global API key used for the custom endpoint override\n\n" -" This key is only used when an endpoint override is configured and a guild\n" +" Set the global API key for the default endpoint override (owner)\n\n" +" This key is only used when a global endpoint override is set\n" +" (see `[p]assistant api globalendpoint`) and the requesting guild\n" " has not provided its own API key.\n" " " msgstr "" -#: assistant\commands\admin.py:713 +#: assistant\commands\admin.py:924 msgid "Click to set the API key used for the endpoint override\n\n" "To remove the key, enter `none`" msgstr "" -#: assistant\commands\admin.py:721 +#: assistant\commands\admin.py:933 msgid "Endpoint override API key has been removed!" msgstr "" -#: assistant\commands\admin.py:726 +#: assistant\commands\admin.py:942 msgid "Endpoint override API key has been set!" msgstr "" -#: assistant\commands\admin.py:732 +#: assistant\commands\admin.py:952 +#, docstring +msgid "\n" +" Set this guild's endpoint URL (used for both chat and embeddings)\n\n" +" The endpoint must be a full base URL ending in `/v1`, for example:\n" +" `https://openrouter.ai/api/v1`\n\n" +" Set the API key for this endpoint with `[p]assistant api key`.\n\n" +" After setting, use `[p]assistant set model` (no args) to open an\n" +" interactive model picker. Router endpoints like OpenRouter also\n" +" accept special aliases like `openrouter/auto` or `openrouter/free`.\n\n" +" Run without arguments to view the current guild endpoint.\n" +" Use `none` to remove the guild endpoint override.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:972 +msgid "Guild Endpoint Override" +msgstr "" + +#: assistant\commands\admin.py:973 +msgid "Current endpoint: `{}`" +msgstr "" + +#: assistant\commands\admin.py:983 +msgid "No guild endpoint override is set." +msgstr "" + +#: assistant\commands\admin.py:990 +msgid "Guild endpoint override has been removed!" +msgstr "" + +#: assistant\commands\admin.py:993 +msgid "No guild endpoint override was set." +msgstr "" + +#: assistant\commands\admin.py:1002 +msgid "Guild endpoint override set to `{}`" +msgstr "" + +#: assistant\commands\admin.py:1009 +msgid "Endpoint probed successfully!\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:1024 +msgid "Could not probe the endpoint automatically. You can still use it, but model discovery may be limited." +msgstr "" + +#: assistant\commands\admin.py:1032 +#, docstring +msgid "Clear this guild's endpoint override (URL and cached profile)" +msgstr "" + +#: assistant\commands\admin.py:1035 +msgid "No per-guild endpoint override is set." +msgstr "" + +#: assistant\commands\admin.py:1038 +msgid "Guild endpoint override has been cleared!" +msgstr "" + +#: assistant\commands\admin.py:1044 +#, docstring +msgid "Show this guild's API key and endpoint override status" +msgstr "" + +#: assistant\commands\admin.py:1047 +msgid "Guild API Overrides" +msgstr "" + +#: assistant\commands\admin.py:1051 +msgid "Guild API Key" +msgstr "" + +#: assistant\commands\admin.py:1052 +msgid "Set" +msgstr "" + +#: assistant\commands\admin.py:1052 +msgid "Not set (using global key)" +msgstr "" + +#: assistant\commands\admin.py:1056 +msgid "Endpoint Override" +msgstr "" + +#: assistant\commands\admin.py:1057 +msgid "Not set (using global)" +msgstr "" + +#: assistant\commands\admin.py:1070 #, docstring msgid "Set the timezone used for prompt placeholders" msgstr "Die Zeitzone für Platzhalter in Eingabeaufforderungen festlegen" -#: assistant\commands\admin.py:738 +#: assistant\commands\admin.py:1080 msgid "Invalid Timezone, did you mean `{}`?" msgstr "Ungültige Zeitzone, meinten Sie `{}`?" -#: assistant\commands\admin.py:740 +#: assistant\commands\admin.py:1082 msgid "Timezone set to **{}** (`{}`)" msgstr "Zeitzone eingestellt auf **{}** (`{}`)" -#: assistant\commands\admin.py:747 +#: assistant\commands\admin.py:1089 #, docstring msgid "\n" -" Set the initial prompt for GPT to use\n\n" +" Set the system prompt for GPT to use\n\n" " Check out [This Guide](https://platform.openai.com/docs/guides/prompt-engineering) for prompting help.\n\n" " **Placeholders**\n" " - **botname**: [botname]\n" @@ -679,72 +895,80 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:792 assistant\commands\admin.py:859 -#: assistant\commands\admin.py:941 assistant\commands\admin.py:998 -#: assistant\commands\admin.py:1275 assistant\commands\admin.py:1406 -#: assistant\commands\admin.py:1448 assistant\commands\base.py:791 +#: assistant\commands\admin.py:1134 assistant\commands\admin.py:1191 +#: assistant\commands\admin.py:1285 assistant\commands\admin.py:1356 +#: assistant\commands\admin.py:1622 assistant\commands\admin.py:1718 +#: assistant\commands\admin.py:1760 assistant\commands\base.py:836 msgid "Failed to read `{}`, bot owner can use `{}` for more information" msgstr "Konnte `{}` nicht lesen, Botbesitzer können `{}` für weitere Informationen verwenden" -#: assistant\commands\admin.py:810 assistant\commands\admin.py:882 -#: assistant\commands\admin.py:959 +#: assistant\commands\admin.py:1152 assistant\commands\admin.py:1303 +#: assistant\commands\admin.py:1379 msgid "Your system and initial prompt combined will use {} tokens!\n" "Write a prompt combination using {} tokens or less to leave 10% of your configured max tokens for your response." msgstr "Ihr System und die anfängliche Eingabeaufforderung verwenden insgesamt {} Tokens!\n" "Verfassen Sie eine Kombination aus Prompt und Tokens, die {} Tokens oder weniger enthält, um 10% Ihrer konfigurierten maximalen Tokens für Ihre Antwort freizulassen." -#: assistant\commands\admin.py:818 -msgid "The initial prompt has been removed!" -msgstr "Die ursprüngliche Aufforderung wurde entfernt!" +#: assistant\commands\admin.py:1160 +msgid "The system prompt has been removed!" +msgstr "Die Systemabfrage wurde entfernt!" -#: assistant\commands\admin.py:821 -msgid "Please include an initial prompt or .txt file!\n" +#: assistant\commands\admin.py:1163 +msgid "Please include a system prompt or .txt file!\n" "Use `{}` to view details for this command" -msgstr "Bitte fügen Sie eine anfängliche Aufforderung oder eine .txt-Datei hinzu!\n" +msgstr "Bitte fügen Sie eine System-Eingabeaufforderung oder eine .txt-Datei hinzu!\n" "Verwenden Sie `{}`, um Details zu diesem Befehl anzuzeigen" -#: assistant\commands\admin.py:827 -msgid "The initial prompt has been overwritten!" -msgstr "Die ursprüngliche Eingabeaufforderung wurde überschrieben!" +#: assistant\commands\admin.py:1169 +msgid "The system prompt has been overwritten!" +msgstr "Die Systemeingabeaufforderung wurde überschrieben!" -#: assistant\commands\admin.py:830 -msgid "Initial prompt has been set!" -msgstr "Die erste Eingabeaufforderung wurde festgelegt!" +#: assistant\commands\admin.py:1172 +msgid "System prompt has been set!" +msgstr "Die Systemabfrage wurde eingestellt!" -#: assistant\commands\admin.py:837 +#: assistant\commands\admin.py:1179 #, docstring -msgid "Show the channel specific system prompt" +msgid "\n" +" Set the global default system prompt used by servers that inherit the default prompt\n\n" +" - Run without arguments to view the current global default prompt\n" +" - Use `none` to reset to the built-in default prompt\n" +" - Servers with a custom system prompt keep using their custom prompt\n" +" " msgstr "" -#: assistant\commands\admin.py:840 -msgid "No channel prompt set for {}" +#: assistant\commands\admin.py:1203 +msgid "Current global default system prompt for servers using the default or an unset system prompt:" msgstr "" -#: assistant\commands\admin.py:852 -#, docstring -msgid "Set a channel specific system prompt" +#: assistant\commands\admin.py:1204 +msgid "Servers with a custom system prompt are unchanged." msgstr "" -#: assistant\commands\admin.py:869 -msgid "Channel prompt has been removed from {}!" +#: assistant\commands\admin.py:1207 +msgid "This is currently using the built-in default prompt." msgstr "" -#: assistant\commands\admin.py:872 -msgid "No channel prompt set for {}!" +#: assistant\commands\admin.py:1209 +msgid "This is currently using a custom default prompt." msgstr "" -#: assistant\commands\admin.py:888 -msgid "Channel prompt has been overwritten for {}!" +#: assistant\commands\admin.py:1215 +msgid "Please include a system prompt or .txt file, or use `none` to reset to the built-in default." msgstr "" -#: assistant\commands\admin.py:890 -msgid "Channel prompt has been set for {}!" +#: assistant\commands\admin.py:1221 +msgid "The global default system prompt has been reset to the built-in default. Servers using the default or an unset system prompt will use it immediately." +msgstr "" + +#: assistant\commands\admin.py:1231 +msgid "The global default system prompt has been updated. Servers using the default or an unset system prompt will use it immediately." msgstr "" -#: assistant\commands\admin.py:896 +#: assistant\commands\admin.py:1240 #, docstring msgid "\n" -" Set the system prompt for GPT to use\n\n" +" Set the initial prompt for GPT to use\n\n" " Check out [This Guide](https://platform.openai.com/docs/guides/prompt-engineering) for prompting help.\n\n" " **Placeholders**\n" " - **botname**: [botname]\n" @@ -783,212 +1007,204 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:967 -msgid "The system prompt has been removed!" -msgstr "Die Systemabfrage wurde entfernt!" +#: assistant\commands\admin.py:1311 +msgid "The initial prompt has been removed!" +msgstr "Die ursprüngliche Aufforderung wurde entfernt!" -#: assistant\commands\admin.py:970 -msgid "Please include a system prompt or .txt file!\n" +#: assistant\commands\admin.py:1314 +msgid "Please include an initial prompt or .txt file!\n" "Use `{}` to view details for this command" -msgstr "Bitte fügen Sie eine System-Eingabeaufforderung oder eine .txt-Datei hinzu!\n" +msgstr "Bitte fügen Sie eine anfängliche Aufforderung oder eine .txt-Datei hinzu!\n" "Verwenden Sie `{}`, um Details zu diesem Befehl anzuzeigen" -#: assistant\commands\admin.py:976 -msgid "The system prompt has been overwritten!" -msgstr "Die Systemeingabeaufforderung wurde überschrieben!" +#: assistant\commands\admin.py:1320 +msgid "The initial prompt has been overwritten!" +msgstr "Die ursprüngliche Eingabeaufforderung wurde überschrieben!" -#: assistant\commands\admin.py:979 -msgid "System prompt has been set!" -msgstr "Die Systemabfrage wurde eingestellt!" +#: assistant\commands\admin.py:1323 +msgid "Initial prompt has been set!" +msgstr "Die erste Eingabeaufforderung wurde festgelegt!" -#: assistant\commands\admin.py:986 +#: assistant\commands\admin.py:1334 #, docstring -msgid "\n" -" Set the global default system prompt used by servers that inherit the default prompt\n\n" -" - Run without arguments to view the current global default prompt\n" -" - Use `none` to reset to the built-in default prompt\n" -" - Servers with a custom system prompt keep using their custom prompt\n" -" " -msgstr "" - -#: assistant\commands\admin.py:1010 -msgid "Current global default system prompt for servers using the default or an unset system prompt:" +msgid "Show the channel specific system prompt" msgstr "" -#: assistant\commands\admin.py:1011 -msgid "Servers with a custom system prompt are unchanged." +#: assistant\commands\admin.py:1337 +msgid "No channel prompt set for {}" msgstr "" -#: assistant\commands\admin.py:1014 -msgid "This is currently using the built-in default prompt." +#: assistant\commands\admin.py:1349 +#, docstring +msgid "Set a channel specific system prompt" msgstr "" -#: assistant\commands\admin.py:1016 -msgid "This is currently using a custom default prompt." +#: assistant\commands\admin.py:1366 +msgid "Channel prompt has been removed from {}!" msgstr "" -#: assistant\commands\admin.py:1022 -msgid "Please include a system prompt or .txt file, or use `none` to reset to the built-in default." +#: assistant\commands\admin.py:1369 +msgid "No channel prompt set for {}!" msgstr "" -#: assistant\commands\admin.py:1028 -msgid "The global default system prompt has been reset to the built-in default. Servers using the default or an unset system prompt will use it immediately." +#: assistant\commands\admin.py:1385 +msgid "Channel prompt has been overwritten for {}!" msgstr "" -#: assistant\commands\admin.py:1038 -msgid "The global default system prompt has been updated. Servers using the default or an unset system prompt will use it immediately." +#: assistant\commands\admin.py:1387 +msgid "Channel prompt has been set for {}!" msgstr "" -#: assistant\commands\admin.py:1051 +#: assistant\commands\admin.py:1397 #, docstring msgid "Set the main auto-response channel for the assistant" msgstr "" -#: assistant\commands\admin.py:1056 +#: assistant\commands\admin.py:1402 msgid "Assistant channel has been removed" msgstr "Der Assistenzkanal wurde entfernt" -#: assistant\commands\admin.py:1059 +#: assistant\commands\admin.py:1405 msgid "Assistant channel has been overwritten" msgstr "Der Assistentenkanal wurde überschrieben" -#: assistant\commands\admin.py:1062 +#: assistant\commands\admin.py:1408 msgid "Channel id has been set" msgstr "Die Kanal-ID wurde festgelegt." -#: assistant\commands\admin.py:1068 +#: assistant\commands\admin.py:1414 #, docstring msgid "Toggle this channel as an auto-response channel" msgstr "" -#: assistant\commands\admin.py:1071 +#: assistant\commands\admin.py:1417 msgid "This channel is already set as the assistant channel!" msgstr "" -#: assistant\commands\admin.py:1074 +#: assistant\commands\admin.py:1420 msgid "I will no longer auto-respond to messages in this channel!" msgstr "" -#: assistant\commands\admin.py:1077 +#: assistant\commands\admin.py:1423 msgid "I will now auto-respond to messages in this channel!" msgstr "" -#: assistant\commands\admin.py:1082 +#: assistant\commands\admin.py:1428 #, docstring msgid "Toggle allowing per-conversation system prompt overriding" msgstr "" -#: assistant\commands\admin.py:1086 +#: assistant\commands\admin.py:1432 msgid "System prompt overriding **Disabled**, users cannot set per-convo system prompts" msgstr "" -#: assistant\commands\admin.py:1089 +#: assistant\commands\admin.py:1435 msgid "System prompt overriding **Enabled**, users can now set per-convo system prompts" msgstr "" -#: assistant\commands\admin.py:1094 +#: assistant\commands\admin.py:1440 #, docstring msgid "Toggle the assistant on or off" msgstr "Den Assistenten ein- oder ausschalten" -#: assistant\commands\admin.py:1098 +#: assistant\commands\admin.py:1444 msgid "The assistant is now **Disabled**" msgstr "Der Assistent ist jetzt **Deaktiviert**" -#: assistant\commands\admin.py:1101 +#: assistant\commands\admin.py:1447 msgid "The assistant is now **Enabled**" msgstr "Der Assistent ist jetzt **aktiviert**" -#: assistant\commands\admin.py:1106 +#: assistant\commands\admin.py:1452 #, docstring msgid "Toggle the draw command on or off" msgstr "" -#: assistant\commands\admin.py:1110 +#: assistant\commands\admin.py:1456 msgid "The draw command is now **Disabled**" msgstr "" -#: assistant\commands\admin.py:1113 +#: assistant\commands\admin.py:1459 msgid "The draw command is now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1118 +#: assistant\commands\admin.py:1464 #, docstring msgid "Toggle the auto-answer feature on or off" msgstr "" -#: assistant\commands\admin.py:1122 +#: assistant\commands\admin.py:1468 msgid "Auto-answer has been **Disabled**" msgstr "" -#: assistant\commands\admin.py:1125 +#: assistant\commands\admin.py:1471 msgid "Auto-answer has been **Enabled**" msgstr "" -#: assistant\commands\admin.py:1130 +#: assistant\commands\admin.py:1476 #, docstring msgid "Set the auto-answer threshold for the bot" msgstr "" -#: assistant\commands\admin.py:1133 +#: assistant\commands\admin.py:1479 msgid "Auto-answer threshold has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1140 +#: assistant\commands\admin.py:1488 #, docstring msgid "Ignore a channel for auto-answer" msgstr "" -#: assistant\commands\admin.py:1151 +#: assistant\commands\admin.py:1499 msgid "Auto-answer will no longer ignore {}" msgstr "" -#: assistant\commands\admin.py:1154 assistant\commands\admin.py:1321 +#: assistant\commands\admin.py:1502 assistant\commands\admin.py:1670 msgid "Channel not found!" msgstr "" -#: assistant\commands\admin.py:1156 +#: assistant\commands\admin.py:1504 msgid "Auto-answer will now ignore {}" msgstr "" -#: assistant\commands\admin.py:1161 +#: assistant\commands\admin.py:1509 #, docstring msgid "Set the model used for auto-answer" msgstr "" -#: assistant\commands\admin.py:1168 +#: assistant\commands\admin.py:1517 msgid "Configured auto-answer model" msgstr "" -#: assistant\commands\admin.py:1171 assistant\commands\admin.py:1791 -#: assistant\commands\admin.py:1832 assistant\commands\admin.py:1834 -#: assistant\commands\admin.py:2903 +#: assistant\commands\admin.py:1520 assistant\commands\admin.py:2139 +#: assistant\commands\admin.py:2213 assistant\commands\admin.py:2215 +#: assistant\commands\admin.py:3978 msgid "Valid models are:\n" "{}" msgstr "Gültige Modelle sind: {}" -#: assistant\commands\admin.py:1173 assistant\commands\admin.py:3374 +#: assistant\commands\admin.py:1522 assistant\commands\admin.py:4489 msgid "Invalid model, valid models are: {}" msgstr "" -#: assistant\commands\admin.py:1175 +#: assistant\commands\admin.py:1524 msgid "Auto-answer model has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1186 +#: assistant\commands\admin.py:1533 #, docstring msgid "Toggle the trigger word feature on or off" msgstr "" -#: assistant\commands\admin.py:1190 +#: assistant\commands\admin.py:1537 msgid "Trigger word feature has been **Disabled**" msgstr "" -#: assistant\commands\admin.py:1193 +#: assistant\commands\admin.py:1540 msgid "Trigger word feature has been **Enabled**" msgstr "" -#: assistant\commands\admin.py:1198 +#: assistant\commands\admin.py:1545 #, docstring msgid "\n" " Add or remove a trigger phrase (supports regex)\n\n" @@ -1001,23 +1217,23 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1212 +#: assistant\commands\admin.py:1559 msgid "That regex pattern is invalid!" msgstr "" -#: assistant\commands\admin.py:1217 +#: assistant\commands\admin.py:1564 msgid "⚠️ Warning: `{}` is a very broad pattern that may match most messages!" msgstr "" -#: assistant\commands\admin.py:1222 +#: assistant\commands\admin.py:1569 msgid "Trigger phrase `{}` has been **Removed**" msgstr "" -#: assistant\commands\admin.py:1225 +#: assistant\commands\admin.py:1572 msgid "Trigger phrase `{}` has been **Added**" msgstr "" -#: assistant\commands\admin.py:1230 +#: assistant\commands\admin.py:1577 #, docstring msgid "\n" " Set the prompt to use when a trigger phrase is matched\n\n" @@ -1059,100 +1275,66 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1287 +#: assistant\commands\admin.py:1634 msgid "The trigger prompt has been removed!" msgstr "" -#: assistant\commands\admin.py:1290 +#: assistant\commands\admin.py:1637 msgid "Please include a trigger prompt or .txt file!\n" "Use `{}` to view details for this command" msgstr "" -#: assistant\commands\admin.py:1296 +#: assistant\commands\admin.py:1643 msgid "The trigger prompt has been overwritten!" msgstr "" -#: assistant\commands\admin.py:1299 +#: assistant\commands\admin.py:1646 msgid "Trigger prompt has been set!" msgstr "" -#: assistant\commands\admin.py:1307 +#: assistant\commands\admin.py:1656 #, docstring msgid "Ignore a channel or category for trigger phrases" msgstr "" -#: assistant\commands\admin.py:1318 +#: assistant\commands\admin.py:1667 msgid "Trigger phrases will no longer ignore {}" msgstr "" -#: assistant\commands\admin.py:1323 +#: assistant\commands\admin.py:1672 msgid "Trigger phrases will now ignore {}" msgstr "" -#: assistant\commands\admin.py:1329 +#: assistant\commands\admin.py:1678 #, docstring msgid "View configured trigger phrases" msgstr "" -#: assistant\commands\admin.py:1332 +#: assistant\commands\admin.py:1681 msgid "No trigger phrases configured!" msgstr "" -#: assistant\commands\admin.py:1335 +#: assistant\commands\admin.py:1684 msgid "Trigger Phrases" msgstr "" -#: assistant\commands\admin.py:1336 +#: assistant\commands\admin.py:1685 msgid "The following phrases will trigger a response:\n" msgstr "" -#: assistant\commands\admin.py:1342 +#: assistant\commands\admin.py:1691 msgid "Patterns" msgstr "" -#: assistant\commands\admin.py:1345 +#: assistant\commands\admin.py:1694 msgid "Status" msgstr "" -#: assistant\commands\admin.py:1352 +#: assistant\commands\admin.py:1701 msgid "Ignored Channels" msgstr "" -#: assistant\commands\admin.py:1358 -#, docstring -msgid "Switch vision resolution between high and low for relevant GPT-4-Turbo models" -msgstr "" - -#: assistant\commands\admin.py:1362 -msgid "Vision resolution has been set to **Low**" -msgstr "" - -#: assistant\commands\admin.py:1365 -msgid "Vision resolution has been set to **High**" -msgstr "" - -#: assistant\commands\admin.py:1368 -msgid "Vision resolution has been set to **Auto**" -msgstr "" - -#: assistant\commands\admin.py:1373 -#, docstring -msgid "Switch reasoning effort between none, minimal, low, medium, high, and xhigh\n\n" -" Not all models support every level. Unsupported levels are automatically mapped to the closest supported value.\n" -" - **none**: No reasoning (gpt-5.4 only, skipped for other models)\n" -" - **minimal**: Minimal reasoning (gpt-5 only, mapped to low for o-series)\n" -" - **low**: Low reasoning effort\n" -" - **medium**: Medium reasoning effort\n" -" - **high**: High reasoning effort\n" -" - **xhigh**: Maximum reasoning (gpt-5.4 only, mapped to high for other models)\n" -" " -msgstr "" - -#: assistant\commands\admin.py:1390 -msgid "Reasoning effort has been set to **{}**" -msgstr "" - -#: assistant\commands\admin.py:1395 +#: assistant\commands\admin.py:1707 #, docstring msgid "\n" " Set the prefix used to detect model thinking blocks\n\n" @@ -1161,29 +1343,29 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1417 +#: assistant\commands\admin.py:1729 msgid "Think tag prefix is already set to the default value." msgstr "" -#: assistant\commands\admin.py:1420 +#: assistant\commands\admin.py:1732 msgid "Think tag prefix reset to default:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1426 +#: assistant\commands\admin.py:1738 msgid "Think tag prefix cannot be empty." msgstr "" -#: assistant\commands\admin.py:1429 +#: assistant\commands\admin.py:1741 msgid "Think tag prefix is already set to that value." msgstr "" -#: assistant\commands\admin.py:1432 +#: assistant\commands\admin.py:1744 msgid "Think tag prefix has been set to:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1437 +#: assistant\commands\admin.py:1749 #, docstring msgid "\n" " Set the suffix used to detect model thinking blocks\n\n" @@ -1192,68 +1374,68 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1459 +#: assistant\commands\admin.py:1771 msgid "Think tag suffix is already set to the default value." msgstr "" -#: assistant\commands\admin.py:1462 +#: assistant\commands\admin.py:1774 msgid "Think tag suffix reset to default:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1468 +#: assistant\commands\admin.py:1780 msgid "Think tag suffix cannot be empty." msgstr "" -#: assistant\commands\admin.py:1471 +#: assistant\commands\admin.py:1783 msgid "Think tag suffix is already set to that value." msgstr "" -#: assistant\commands\admin.py:1474 +#: assistant\commands\admin.py:1786 msgid "Think tag suffix has been set to:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1479 +#: assistant\commands\admin.py:1791 #, docstring msgid "Toggle whether questions need to end with **__?__**" msgstr "Umschalten, ob Fragen mit **__?__** enden müssen" -#: assistant\commands\admin.py:1483 +#: assistant\commands\admin.py:1795 msgid "Questions will be answered regardless of if they end with **?**" msgstr "Fragen werden beantwortet, unabhängig davon, ob sie mit **?** enden" -#: assistant\commands\admin.py:1486 +#: assistant\commands\admin.py:1798 msgid "Questions must end in **?** to be answered" msgstr "Fragen müssen mit **?** enden, um beantwortet zu werden" -#: assistant\commands\admin.py:1491 +#: assistant\commands\admin.py:1803 #, docstring msgid "Toggle whether the bot responds to mentions in any channel" msgstr "" -#: assistant\commands\admin.py:1495 +#: assistant\commands\admin.py:1807 msgid "The bot will no longer respond to mentions" msgstr "" -#: assistant\commands\admin.py:1498 +#: assistant\commands\admin.py:1810 msgid "The bot will now respond to mentions" msgstr "" -#: assistant\commands\admin.py:1503 +#: assistant\commands\admin.py:1815 #, docstring msgid "Toggle whether to ping the user on replies" msgstr "Umschalten, ob der Benutzer bei Antworten angepingt werden soll" -#: assistant\commands\admin.py:1507 +#: assistant\commands\admin.py:1819 msgid "Mentions are now **Disabled**" msgstr "Erwähnungen sind jetzt **Deaktiviert**" -#: assistant\commands\admin.py:1510 +#: assistant\commands\admin.py:1822 msgid "Mentions are now **Enabled**" msgstr "Erwähnungen sind jetzt **aktiviert**" -#: assistant\commands\admin.py:1515 +#: assistant\commands\admin.py:1827 #, docstring msgid "\n" " Toggle collaborative conversations\n\n" @@ -1261,45 +1443,39 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1523 +#: assistant\commands\admin.py:1835 msgid "Collaborative conversations are now **Disabled**" msgstr "" -#: assistant\commands\admin.py:1526 +#: assistant\commands\admin.py:1838 msgid "Collaborative conversations are now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1556 +#: assistant\commands\admin.py:1843 #, docstring msgid "\n" " Set the max messages for a conversation\n\n" " Conversation retention is cached and gets reset when the bot restarts or the cog reloads.\n\n" " Regardless of this number, the initial prompt and internal system message are always included,\n" " this only applies to any conversation between the user and bot after that.\n\n" -" Set to 0 to disable conversation retention\n\n" +" Set to 0 for unlimited conversation retention\n\n" " **Note:** *actual message count may exceed the max retention during an API call*\n" " " -msgstr "\n" -"Legen Sie die maximale Anzahl von Nachrichten für eine Konversation fest.\n\n" -"Die Konversationsspeicherung wird zwischengespeichert und zurückgesetzt, wenn der Bot neu gestartet oder das Cog neu geladen wird.\n\n" -"Unabhängig von dieser Zahl werden die anfängliche Aufforderung und die interne Systemnachricht immer eingeschlossen,\n" -"dies gilt nur für jede Konversation zwischen dem Benutzer und dem Bot danach.\n\n" -"Setzen Sie den Wert auf 0, um die Konversationsspeicherung zu deaktivieren.\n\n" -"**Hinweis:** *Die tatsächliche Anzahl der Nachrichten kann die maximale Speicherung während eines API-Aufrufs überschreiten* " - -#: assistant\commands\admin.py:1569 assistant\commands\admin.py:2981 +msgstr "" + +#: assistant\commands\admin.py:1856 assistant\commands\admin.py:4060 msgid "Max retention needs to be at least 0 or higher" msgstr "Der maximale Selbstbehalt muss mindestens 0 oder höher sein" -#: assistant\commands\admin.py:1573 -msgid "Conversation retention has been disabled" -msgstr "Die Gesprächsspeicherung wurde deaktiviert" +#: assistant\commands\admin.py:1860 +msgid "Message retention is now **unlimited**" +msgstr "" -#: assistant\commands\admin.py:1575 +#: assistant\commands\admin.py:1862 msgid "Conversations can now retain up to **{}** messages" msgstr "Konversationen können jetzt bis zu **{}** Nachrichten speichern" -#: assistant\commands\admin.py:1580 +#: assistant\commands\admin.py:1867 #, docstring msgid "\n" " Set the conversation expiration time\n\n" @@ -1312,19 +1488,59 @@ msgstr "Legen Sie die Ablaufzeit der Konversation fest\n\n" "dies gilt nur für jede weitere Unterhaltung zwischen dem Benutzer und dem Bot.\n\n" "Setzen Sie den Wert auf 0, um die Konversationen auf unbestimmte Zeit oder bis zum Neustart des Bots oder bis zum Neuladen von cog zu speichern " -#: assistant\commands\admin.py:1589 assistant\commands\admin.py:3004 +#: assistant\commands\admin.py:1876 assistant\commands\admin.py:4083 msgid "Max retention time needs to be at least 0 or higher" msgstr "Die maximale Verweilzeit muss mindestens 0 oder höher sein" -#: assistant\commands\admin.py:1593 +#: assistant\commands\admin.py:1880 msgid "Conversations will be stored until the bot restarts or the cog is reloaded" msgstr "Unterhaltungen werden gespeichert, bis der Bot neu gestartet oder das Zahnrad neu geladen wird" -#: assistant\commands\admin.py:1595 +#: assistant\commands\admin.py:1882 msgid "Conversations will be considered active for **{}** seconds" msgstr "Gespräche werden für **{}** Sekunden als aktiv betrachtet" -#: assistant\commands\admin.py:1600 +#: assistant\commands\admin.py:1887 +#, docstring +msgid "\n" +" Set maximum tokens a convo can consume\n\n" +" Set to 0 for dynamic token usage\n\n" +" **Tips**\n" +" - Max tokens are a soft cap, sometimes messages can be a little over\n" +" - If you set max tokens too high the cog will auto-adjust to 100 less than the models natural cap\n" +" - Ideally set max to 500 less than that models maximum, to allow adequate responses\n\n" +" Using more than the model can handle will raise exceptions.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:1902 +msgid "The maximum amount of tokens sent in a payload will be {}.\n" +"*Note that models with token limits lower than this will still be trimmed*" +msgstr "Die maximale Anzahl an Tokens, die in einer Nutzlast gesendet werden, beträgt {}.\n" +"*Beachten Sie, dass Modelle mit einer niedrigeren Tokenbegrenzung dennoch gekürzt werden.*" + +#: assistant\commands\admin.py:1907 +msgid "The maximum amount of tokens sent in a payload will be dynamic" +msgstr "" + +#: assistant\commands\admin.py:1913 +#, docstring +msgid "\n" +" Set the max response tokens the model can respond with\n\n" +" Set to 0 for response tokens to be dynamic\n" +" " +msgstr "Legen Sie die maximale Anzahl der Antwort-Token fest, mit denen das Modell antworten kann.\n\n" +"Setzen Sie es auf 0, um eine dynamische Anzahl von Antwort-Token zu erhalten " + +#: assistant\commands\admin.py:1921 +msgid "The maximum amount of tokens in the models responses will be {}." +msgstr "Die maximale Anzahl von Token in den Antworten der Modelle beträgt {}." + +#: assistant\commands\admin.py:1923 +msgid "Response tokens will now be dynamic" +msgstr "Antwort-Tokens werden jetzt dynamisch sein" + +#: assistant\commands\admin.py:1929 #, docstring msgid "\n" " Set the temperature for the model (0.0 - 2.0)\n" @@ -1333,15 +1549,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1607 +#: assistant\commands\admin.py:1936 msgid "Temperature must be between **0.0** and **2.0**" msgstr "Die Temperatur muss zwischen **0,0** und **2,0** liegen" -#: assistant\commands\admin.py:1612 +#: assistant\commands\admin.py:1941 msgid "Temperature has been set to **{}**" msgstr "Die Temperatur wurde auf **{}** eingestellt" -#: assistant\commands\admin.py:1616 +#: assistant\commands\admin.py:1945 #, docstring msgid "\n" " Set the frequency penalty for the model (-2.0 to 2.0)\n" @@ -1350,15 +1566,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1623 +#: assistant\commands\admin.py:1952 msgid "Frequency penalty must be between **-2.0** and **2.0**" msgstr "" -#: assistant\commands\admin.py:1628 +#: assistant\commands\admin.py:1957 msgid "Frequency penalty has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1632 +#: assistant\commands\admin.py:1961 #, docstring msgid "\n" " Set the presence penalty for the model (-2.0 to 2.0)\n" @@ -1367,15 +1583,49 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1639 +#: assistant\commands\admin.py:1968 msgid "Presence penalty must be between **-2.0** and **2.0**" msgstr "" -#: assistant\commands\admin.py:1644 +#: assistant\commands\admin.py:1973 msgid "Presence penalty has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1648 +#: assistant\commands\admin.py:1977 +#, docstring +msgid "Switch vision resolution between high and low for relevant GPT-4-Turbo models" +msgstr "" + +#: assistant\commands\admin.py:1981 +msgid "Vision resolution has been set to **Low**" +msgstr "" + +#: assistant\commands\admin.py:1984 +msgid "Vision resolution has been set to **High**" +msgstr "" + +#: assistant\commands\admin.py:1987 +msgid "Vision resolution has been set to **Auto**" +msgstr "" + +#: assistant\commands\admin.py:1992 +#, docstring +msgid "Switch reasoning effort between none, minimal, low, medium, high, and xhigh\n\n" +" Not all models support every level. Unsupported levels are automatically mapped to the closest supported value.\n" +" - **none**: No reasoning (gpt-5.4 only, skipped for other models)\n" +" - **minimal**: Minimal reasoning (gpt-5 only, mapped to low for o-series)\n" +" - **low**: Low reasoning effort\n" +" - **medium**: Medium reasoning effort\n" +" - **high**: High reasoning effort\n" +" - **xhigh**: Maximum reasoning (gpt-5.4 only, mapped to high for other models)\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2009 +msgid "Reasoning effort has been set to **{}**" +msgstr "" + +#: assistant\commands\admin.py:2014 #, docstring msgid "\n" " Make the model more deterministic by setting a seed for the model.\n" @@ -1384,15 +1634,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1655 +#: assistant\commands\admin.py:2021 msgid "Seed must be a positive integer" msgstr "" -#: assistant\commands\admin.py:1659 +#: assistant\commands\admin.py:2025 msgid "The seed has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1663 +#: assistant\commands\admin.py:2032 #, docstring msgid "\n" " Refresh embedding weights\n\n" @@ -1401,47 +1651,43 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1676 +#: assistant\commands\admin.py:2045 msgid "{} embeddings have been updated" msgstr "Die {} Einbettungen wurden aktualisiert" -#: assistant\commands\admin.py:1678 +#: assistant\commands\admin.py:2047 msgid "No embeddings needed to be refreshed" msgstr "Es müssen keine Einbettungen erneuert werden" -#: assistant\commands\admin.py:1682 +#: assistant\commands\admin.py:2051 #, docstring msgid "Toggle whether GPT can call functions" msgstr "" -#: assistant\commands\admin.py:1686 +#: assistant\commands\admin.py:2055 msgid "Assistant will not call functions" msgstr "Der Assistent wird keine Funktionen aufrufen" -#: assistant\commands\admin.py:1689 +#: assistant\commands\admin.py:2058 msgid "Assistant will now call functions as needed" msgstr "Der Assistent wird nun Funktionen nach Bedarf aufrufen" -#: assistant\commands\admin.py:1694 +#: assistant\commands\admin.py:2063 #, docstring msgid "Set the maximum function calls allowed in a row\n\n" -" This sets how many times the model can call functions in a row\n\n" -" Only the following models can call functions at the moment\n" -" - gpt-4o-mini\n" -" - gpt-4o\n" -" - ect..\n" +" This sets how many times the model can call functions in a row\n" " " msgstr "" -#: assistant\commands\admin.py:1706 +#: assistant\commands\admin.py:2070 msgid "Function calls will not be used since recursion is 0" msgstr "Funktionsaufrufe werden nicht verwendet, da die Rekursion 0 ist" -#: assistant\commands\admin.py:1708 +#: assistant\commands\admin.py:2072 msgid "The model can now call various functions up to {} times before returning a response" msgstr "Das Modell kann nun verschiedene Funktionen bis zu {} Mal aufrufen, bevor es eine Antwort zurückgibt" -#: assistant\commands\admin.py:1714 +#: assistant\commands\admin.py:2078 #, docstring msgid "\n" " set min character length for questions\n\n" @@ -1450,87 +1696,64 @@ msgid "\n" msgstr "Setze die Mindestzeichenlänge für Fragen fest.\n\n" "Setze sie auf 0, um auf alles zu antworten " -#: assistant\commands\admin.py:1720 +#: assistant\commands\admin.py:2084 msgid "Minimum length needs to be at least 0 or higher" msgstr "Die Mindestlänge muss mindestens 0 oder höher sein" -#: assistant\commands\admin.py:1724 +#: assistant\commands\admin.py:2088 msgid "{} will respond regardless of message length" msgstr "{} wird unabhängig von der Länge der Nachricht antworten" -#: assistant\commands\admin.py:1727 +#: assistant\commands\admin.py:2091 msgid "{} will respond to messages with more than **{}** characters" msgstr "{} wird auf Nachrichten mit mehr als **{}** Zeichen antworten" -#: assistant\commands\admin.py:1735 +#: assistant\commands\admin.py:2099 #, docstring msgid "\n" -" Set maximum tokens a convo can consume\n\n" -" Set to 0 for dynamic token usage\n\n" -" **Tips**\n" -" - Max tokens are a soft cap, sometimes messages can be a little over\n" -" - If you set max tokens too high the cog will auto-adjust to 100 less than the models natural cap\n" -" - Ideally set max to 500 less than that models maximum, to allow adequate responses\n\n" -" Using more than the model can handle will raise exceptions.\n" +" Set the chat model to use\n\n" +" Run without arguments to open an interactive picker that lists every\n" +" model your endpoint advertises, grouped by provider. The picker also\n" +" accepts manual entry - useful for router aliases like\n" +" `openrouter/auto` or `openrouter/free`.\n" " " msgstr "" -#: assistant\commands\admin.py:1750 -msgid "The maximum amount of tokens sent in a payload will be {}.\n" -"*Note that models with token limits lower than this will still be trimmed*" -msgstr "Die maximale Anzahl an Tokens, die in einer Nutzlast gesendet werden, beträgt {}.\n" -"*Beachten Sie, dass Modelle mit einer niedrigeren Tokenbegrenzung dennoch gekürzt werden.*" - -#: assistant\commands\admin.py:1755 -msgid "The maximum amount of tokens sent in a payload will be dynamic" -msgstr "" - -#: assistant\commands\admin.py:1761 -#, docstring -msgid "\n" -" Set the max response tokens the model can respond with\n\n" -" Set to 0 for response tokens to be dynamic\n" -" " -msgstr "Legen Sie die maximale Anzahl der Antwort-Token fest, mit denen das Modell antworten kann.\n\n" -"Setzen Sie es auf 0, um eine dynamische Anzahl von Antwort-Token zu erhalten " - -#: assistant\commands\admin.py:1769 -msgid "The maximum amount of tokens in the models responses will be {}." -msgstr "Die maximale Anzahl von Token in den Antworten der Modelle beträgt {}." - -#: assistant\commands\admin.py:1771 -msgid "Response tokens will now be dynamic" -msgstr "Antwort-Tokens werden jetzt dynamisch sein" - -#: assistant\commands\admin.py:1777 -#, docstring -msgid "\n" -" Set the OpenAI model to use\n" -" " +#: assistant\commands\admin.py:2121 +msgid "Could not probe `{}` to discover available models. Try setting a model id manually, e.g. `{}assistant set model openrouter/auto`." msgstr "" -#: assistant\commands\admin.py:1798 assistant\commands\admin.py:2910 +#: assistant\commands\admin.py:2146 assistant\commands\admin.py:3985 msgid "Error: {}" msgstr "" -#: assistant\commands\admin.py:1802 +#: assistant\commands\admin.py:2150 msgid "The **{}** model will now be used" msgstr "Das **{}** Modell wird nun verwendet" -#: assistant\commands\admin.py:1809 +#: assistant\commands\admin.py:2157 msgid "**Note**: Starting with `o1-2024-12-17`, reasoning models in the API will avoid generating responses with markdown formatting. To signal to the model when you do want markdown formatting in the response, include the string `Formatting re-enabled` on the first line of your system message." msgstr "" -#: assistant\commands\admin.py:1818 +#: assistant\commands\admin.py:2166 #, docstring -msgid "Set the OpenAI Embedding model to use" +msgid "\n" +" Set the embedding model to use\n\n" +" Run without arguments to open an interactive picker that lists\n" +" every embedding model your endpoint advertises, grouped by provider.\n" +" Embeddings use the same endpoint as chat.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2192 +msgid "Could not probe `{}` to discover available embedding models. Try setting an id manually, e.g. `{}assistant embed model text-embedding-3-small`." msgstr "" -#: assistant\commands\admin.py:1836 +#: assistant\commands\admin.py:2217 msgid "The **{}** model will now be used for embeddings" msgstr "" -#: assistant\commands\admin.py:1845 +#: assistant\commands\admin.py:2225 #, docstring msgid "\n" " Wipe saved embeddings for the assistant\n\n" @@ -1540,15 +1763,15 @@ msgstr "\n" "Gespeicherte Einbettungen für den Assistenten löschen.\n\n" "Hiermit werden alle gespeicherten Einbettungs-Trainingsdaten für den Assistenten gelöscht " -#: assistant\commands\admin.py:1851 assistant\commands\admin.py:3257 +#: assistant\commands\admin.py:2231 assistant\commands\admin.py:4373 msgid "Not wiping embedding data" msgstr "Keine Löschung der eingebetteten Daten" -#: assistant\commands\admin.py:1855 +#: assistant\commands\admin.py:2235 msgid "All embedding data has been wiped!" msgstr "Alle Einbettungsdaten wurden gelöscht!" -#: assistant\commands\admin.py:1860 +#: assistant\commands\admin.py:2240 #, docstring msgid "\n" " Wipe saved conversations for the assistant in this server\n\n" @@ -1557,15 +1780,15 @@ msgid "\n" msgstr "Löschen Sie gespeicherte Unterhaltungen für den Assistenten auf diesem Server.\n\n" "Dies löscht alle gespeicherten Konversationen für den Assistenten " -#: assistant\commands\admin.py:1866 assistant\commands\admin.py:3218 +#: assistant\commands\admin.py:2246 assistant\commands\admin.py:4334 msgid "Not wiping conversations" msgstr "Keine Gespräche löschen" -#: assistant\commands\admin.py:1870 +#: assistant\commands\admin.py:2250 msgid "Conversations have been wiped in this server!" msgstr "Die Gespräche auf diesem Server wurden gelöscht!" -#: assistant\commands\admin.py:1875 +#: assistant\commands\admin.py:2255 #, docstring msgid "\n" " Set the embedding inclusion amout\n\n" @@ -1573,19 +1796,19 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1881 +#: assistant\commands\admin.py:2261 msgid "Top N must be between 0 and 10" msgstr "Top N muss zwischen 0 und 10 liegen" -#: assistant\commands\admin.py:1885 +#: assistant\commands\admin.py:2265 msgid "Embeddings will not be pulled during conversations" msgstr "Einbettungen werden während Gesprächen nicht gezogen" -#: assistant\commands\admin.py:1887 +#: assistant\commands\admin.py:2267 msgid "Up to **{}** embeddings will be pulled for each interaction" msgstr "Bis zu **{}** Einbettungen werden für jede Interaktion gezogen" -#: assistant\commands\admin.py:1892 +#: assistant\commands\admin.py:2272 #, docstring msgid "\n" " Set the minimum relatedness an embedding must be to include with the prompt\n\n" @@ -1598,32 +1821,32 @@ msgstr "Legen Sie die Mindestverwandtschaft fest, die eine Einbettung haben muss "Fragen werden in Einbettungen umgewandelt und mit gespeicherten Einbettungen verglichen, um die relevantesten Ergebnisse zu erhalten. Dies ist die Punktzahl, die aus diesem Vergleich abgeleitet wird.\n\n" "**Hinweis**: Je näher Sie an 1 kommen, desto deterministischer und genauer können die Ergebnisse sein. Seien Sie jedoch nicht zu streng, da sonst keine Ergebnisse angezeigt werden " -#: assistant\commands\admin.py:1902 +#: assistant\commands\admin.py:2282 msgid "Minimum relatedness must be between 0 and 1" msgstr "Die Mindestverwandtschaft muss zwischen 0 und 1 liegen" -#: assistant\commands\admin.py:1905 +#: assistant\commands\admin.py:2285 msgid "Minimum relatedness has been set to **{}**" msgstr "Die Mindestverwandtschaft wurde auf **{}** festgelegt" -#: assistant\commands\admin.py:1910 +#: assistant\commands\admin.py:2290 #, docstring msgid "Remove certain words/phrases in the bot's responses" msgstr "Bestimmte Wörter/Phrasen in den Antworten des Bots entfernen" -#: assistant\commands\admin.py:1914 +#: assistant\commands\admin.py:2294 msgid "That regex is invalid" msgstr "Diese Regex ist ungültig" -#: assistant\commands\admin.py:1918 +#: assistant\commands\admin.py:2298 msgid "`{}` has been **Removed** from the blacklist" msgstr "`{}` wurde von der schwarzen Liste **entfernt**" -#: assistant\commands\admin.py:1921 +#: assistant\commands\admin.py:2301 msgid "`{}` has been **Added** to the blacklist" msgstr "`{}` wurde **zur schwarzen Liste hinzugefügt**" -#: assistant\commands\admin.py:1926 +#: assistant\commands\admin.py:2306 #, docstring msgid "\n" " Toggle whether failed regex blocks the assistant's reply\n\n" @@ -1634,15 +1857,15 @@ msgstr "Umschalten, ob fehlgeschlagene Regex die Antwort des Assistenten blockie "Einige Regexe können katastrophales Backtracking verursachen (https://www.rexegg.com/regex-explosive-quantifiers.html).\n" "Der Bot kann sicher damit umgehen, wenn dies passiert, und entweder fortsetzen oder die Antwort blockieren " -#: assistant\commands\admin.py:1935 +#: assistant\commands\admin.py:2315 msgid "If a regex blacklist fails, the bots reply will be blocked" msgstr "Wenn die Regex-Blacklist fehlschlägt, wird die Antwort des Bots blockiert" -#: assistant\commands\admin.py:1938 +#: assistant\commands\admin.py:2318 msgid "If a reges blacklist fails, the bot will still reply" msgstr "Wenn eine Reges-Blacklist fehlschlägt, wird der Bot trotzdem antworten" -#: assistant\commands\admin.py:1943 +#: assistant\commands\admin.py:2323 #, docstring msgid "\n" " Toggle question mode\n\n" @@ -1650,15 +1873,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1951 +#: assistant\commands\admin.py:2331 msgid "Question mode is now **Disabled**" msgstr "" -#: assistant\commands\admin.py:1954 +#: assistant\commands\admin.py:2334 msgid "Question mode is now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1959 +#: assistant\commands\admin.py:2339 #, docstring msgid "Import embeddings to use with the assistant\n\n" " Args:\n" @@ -1670,358 +1893,976 @@ msgstr "Importiere Einbettungen, um sie mit dem Assistenten zu verwenden.\n\n" " overwrite (bool): Überschreibe Einbettungen mit vorhandenen Eintragsnamen.\n\n" " Dies liest auch Excel-Dateien " -#: assistant\commands\admin.py:1972 +#: assistant\commands\admin.py:2352 msgid "You must attach **.csv** files to this command or reference a message that has them!" msgstr "Sie müssen **.csv**-Dateien an diesen Befehl anhängen oder auf eine Nachricht verweisen, die sie enthält!" -#: assistant\commands\admin.py:1985 assistant\commands\admin.py:2062 -#: assistant\commands\admin.py:2122 +#: assistant\commands\admin.py:2365 assistant\commands\admin.py:2442 +#: assistant\commands\admin.py:2505 msgid "Error reading **{}**: {}" msgstr "Fehler beim Lesen von **{}**: {}" -#: assistant\commands\admin.py:1990 +#: assistant\commands\admin.py:2370 msgid "**{}** contains invalid formatting, columns must be " msgstr "**{}** enthält ungültige Formatierung, Spalten müssen " -#: assistant\commands\admin.py:1998 +#: assistant\commands\admin.py:2378 msgid "There are no valid files to import!" msgstr "Es sind keine gültigen Dateien zum Importieren vorhanden!" -#: assistant\commands\admin.py:2000 assistant\commands\admin.py:2137 +#: assistant\commands\admin.py:2380 assistant\commands\admin.py:2520 msgid "Processing the following files in the background\n" "{}" msgstr "Verarbeitung der folgenden Dateien im Hintergrund\\n{}" -#: assistant\commands\admin.py:2014 assistant\commands\admin.py:2148 +#: assistant\commands\admin.py:2394 assistant\commands\admin.py:2531 msgid "processing" msgstr "verarbeitung" -#: assistant\commands\admin.py:2016 assistant\commands\admin.py:2150 +#: assistant\commands\admin.py:2396 assistant\commands\admin.py:2533 msgid "overwriting" msgstr "überschreiben" -#: assistant\commands\admin.py:2024 assistant\commands\admin.py:2158 +#: assistant\commands\admin.py:2404 assistant\commands\admin.py:2541 msgid "{}\n" "`Currently {}: `**{}** ({}/{})" msgstr "{}\n" "`Aktuell {}: `**{}** ({}/{})" -#: assistant\commands\admin.py:2030 assistant\commands\admin.py:2165 +#: assistant\commands\admin.py:2410 assistant\commands\admin.py:2551 msgid "Failed to process embedding: `{}`" msgstr "Die Einbettung konnte nicht verarbeitet werden: `{}`" -#: assistant\commands\admin.py:2035 assistant\commands\admin.py:2178 -#: assistant\commands\admin.py:2182 +#: assistant\commands\admin.py:2415 assistant\commands\admin.py:2564 +#: assistant\commands\admin.py:2568 msgid "{}\n" "**COMPLETE**" msgstr "{}\n" "Übersetzen Sie den folgenden Text ins Deutsche. Behalten Sie alle Markdown- und f-string-Formatierungen bei. Geben Sie nur den übersetzten Text zurück.\n" "Übersetze den folgenden Text ins Deutsche. Behalte alle Markdown- und f-string-Formatierungen bei. Geben Sie nur den übersetzten Text zurück" -#: assistant\commands\admin.py:2036 assistant\commands\admin.py:2179 -msgid "Successfully imported {} embeddings!" -msgstr "Erfolgreich {embeddings} importiert!" +#: assistant\commands\admin.py:2416 assistant\commands\admin.py:2565 +msgid "Successfully imported {} embeddings!" +msgstr "Erfolgreich {embeddings} importiert!" + +#: assistant\commands\admin.py:2421 +#, docstring +msgid "Import embeddings to use with the assistant\n\n" +" Args:\n" +" overwrite (bool): overwrite embeddings with existing entry names\n" +" " +msgstr "Importiere Einbettungen, um sie mit dem Assistenten zu verwenden\n\n" +" Args:\n" +" overwrite (bool): Überschreibe Einbettungen mit vorhandenen Eintragsnamen " + +#: assistant\commands\admin.py:2430 assistant\commands\admin.py:4318 +msgid "You must attach **.json** files to this command or reference a message that has them!" +msgstr "Sie müssen **.json** Dateien an diesen Befehl anhängen oder auf eine Nachricht verweisen, die sie enthält!" + +#: assistant\commands\admin.py:2469 +msgid "Failed to import **{}** because it contains invalid formatting!" +msgstr "Der Import von **{}** ist fehlgeschlagen, da er eine ungültige Formatierung enthält!" + +#: assistant\commands\admin.py:2474 +msgid "Imported the following files: `{}`\n" +"{} embeddings imported" +msgstr "Die folgenden Dateien wurden importiert: `{}`.\n" +"Es wurden {} Einbettungen importiert" + +#: assistant\commands\admin.py:2482 +#, docstring +msgid "Import embeddings from an .xlsx file\n\n" +" Args:\n" +" overwrite (bool): overwrite embeddings with existing entry names\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2491 +msgid "You must attach **.xlsx** files to this command or reference a message that has them!" +msgstr "" + +#: assistant\commands\admin.py:2512 +msgid "{} is invalid! Must contain the following columns: {}" +msgstr "" + +#: assistant\commands\admin.py:2569 +msgid "No embeddings needed to be updated!" +msgstr "" + +#: assistant\commands\admin.py:2574 +#, docstring +msgid "\n" +" Export embeddings to an .xlsx file\n\n" +" **Note:** csv exports do not include the embedding values\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2581 assistant\commands\admin.py:2627 +#: assistant\commands\admin.py:2671 +msgid "There are no embeddings to export!" +msgstr "Es gibt keine Einbettungen zum Exportieren!" + +#: assistant\commands\admin.py:2621 +#, docstring +msgid "Export embeddings to a .csv file\n\n" +" **Note:** csv exports do not include the embedding values\n" +" " +msgstr "Einbettungen in eine .csv-Datei exportieren\n\n" +"**Hinweis:** CSV-Exporte enthalten nicht die Einbettungswerte " + +#: assistant\commands\admin.py:2640 assistant\commands\admin.py:2660 +#: assistant\commands\admin.py:2679 assistant\commands\admin.py:2699 +#: assistant\commands\admin.py:4304 +msgid "Here is your embeddings export!" +msgstr "Hier ist Ihr Einbettungsexport!\n" +"Hier ist Ihr Einbettungsexport!" + +#: assistant\commands\admin.py:2643 assistant\commands\admin.py:2682 +#: assistant\commands\admin.py:4286 +msgid "File too large, attempting to compress..." +msgstr "Datei zu groß, versuche zu komprimieren..." + +#: assistant\commands\admin.py:2663 assistant\commands\admin.py:2702 +#: assistant\commands\admin.py:4307 +msgid "File is still too large even with compression!" +msgstr "Die Datei ist selbst nach der Komprimierung immer noch zu groß!" + +#: assistant\commands\admin.py:2668 +#, docstring +msgid "Export embeddings to a json file" +msgstr "Exportiere Einbettungen in eine JSON-Datei" + +#: assistant\commands\admin.py:2710 +#, docstring +msgid "\n" +" Manage embeddings for training\n\n" +" Embeddings are used to optimize training of the assistant and minimize token usage.\n\n" +" By using this the bot can store vast amounts of contextual information without going over the token limit.\n\n" +" **Note**\n" +" You can enter a search query with this command to bring up the menu and go directly to that embedding selection.\n" +" " +msgstr "Verwalten von Einbettungen für das Training.\n\n" +"Einbettungen werden verwendet, um das Training des Assistenten zu optimieren und die Verwendung von Token zu minimieren.\n\n" +"Durch die Verwendung davon kann der Bot große Mengen an kontextueller Information speichern, ohne die Token-Grenze zu überschreiten.\n\n" +"**Hinweis**\n" +"Sie können mit diesem Befehl eine Suchanfrage eingeben, um das Menü aufzurufen und direkt zu dieser Einbettungsauswahl zu gelangen " + +#: assistant\commands\admin.py:2760 +#, docstring +msgid "\n" +" Add custom function calls for Assistant to use\n\n" +" **READ**\n" +" - [Function Call Docs](https://platform.openai.com/docs/guides/gpt/function-calling)\n" +" - [OpenAI Cookbook](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_call_functions_with_chat_models.ipynb)\n" +" - [JSON Schema Reference](https://json-schema.org/understanding-json-schema/)\n\n" +" The following objects are passed by default as keyword arguments.\n" +" - **user**: the user currently chatting with the bot (discord.Member)\n" +" - **channel**: channel the user is chatting in (TextChannel|Thread|ForumChannel)\n" +" - **guild**: current guild (discord.Guild)\n" +" - **bot**: the bot object (Red)\n" +" - **conf**: the config model for Assistant (GuildSettings)\n" +" - All functions **MUST** include `*args, **kwargs` in the params and return a string\n" +" ```python\n" +" # Can be either sync or async\n" +" async def func(*args, **kwargs) -> str:\n" +" ```\n" +" Only bot owner can manage this, guild owners can see descriptions but not code\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2800 +#, docstring +msgid "List custom prompt context variables registered by other cogs." +msgstr "" + +#: assistant\commands\admin.py:2802 +msgid "3rd party docs: {}" +msgstr "" + +#: assistant\commands\admin.py:2804 +msgid "No custom context variables have been registered yet!\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:2818 +msgid "Custom Variables" +msgstr "" + +#: assistant\commands\admin.py:2823 +msgid "Page {}/{} | {} variables" +msgstr "" + +#: assistant\commands\admin.py:2836 +#, docstring +msgid "\n" +" List all available functions and their enabled/disabled status\n\n" +" This provides a quick overview of all custom functions and 3rd party\n" +" registered functions without having to navigate through the full menu.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2849 assistant\commands\admin.py:3142 +#: assistant\commands\admin.py:3198 assistant\commands\admin.py:3295 +msgid "No functions have been registered yet!" +msgstr "" + +#: assistant\commands\admin.py:2876 +msgid "Function List" +msgstr "" + +#: assistant\commands\admin.py:2881 +msgid "Page {}/{} | {} enabled, {} disabled" +msgstr "" + +#: assistant\commands\admin.py:2897 +#, docstring +msgid "Open the mobile-friendly AI tools manager." +msgstr "" + +#: assistant\commands\admin.py:2905 +#, docstring +msgid "Open the floating context block manager.\n\n" +" Toggled variables are appended to a trailing payload-only user\n" +" message after conversation history. Because that message rides\n" +" after the cached prefix, putting dynamic (per-request) values\n" +" there keeps the prompt prefix stable across requests so\n" +" provider-side prompt caching can hit.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2920 +#, docstring +msgid "Show prompt-cache stats from the most recent API call." +msgstr "" + +#: assistant\commands\admin.py:2924 +msgid "No cache stats yet - make a request first." +msgstr "" + +#: assistant\commands\admin.py:2928 +msgid "Unknown" +msgstr "" + +#: assistant\commands\admin.py:2932 +msgid "Last API call: **{cached}**/**{total}** prompt tokens cached ({pct:.0f}%) · **{write}** cache-write tokens · model `{model}`" +msgstr "" + +#: assistant\commands\admin.py:2948 +msgid "\n" +"💡 This model requires at least **{min_tokens}** prompt tokens before the provider will cache. Your prompt was only **{total}** tokens - below the threshold, so no cache write or read occurred. A longer system prompt, more conversation history, or enabling variables in the `[p]floatingcontext` block will push it over." +msgstr "" + +#: assistant\commands\admin.py:2963 +msgid "\n" +"ℹ️ This provider uses automatic prompt caching. A **0** cache-write count does not necessarily mean caching is disabled, because some automatic-cache providers do not charge for or clearly expose cache writes. The more useful signal is whether similar follow-up turns start showing non-zero cached tokens. Also note that the relevant threshold is the repeated stable prefix, not the full prompt length, so a large request can still miss if most of its tokens are in the changing tail of the payload." +msgstr "" + +#: assistant\commands\admin.py:2978 +msgid "\n" +"ℹ️ `gpt-oss` is a reasoning model running over Chat Completions. Cache reuse can be weaker than on non-reasoning chat models because not all reasoning state is preserved between turns." +msgstr "" + +#: assistant\commands\admin.py:2988 +msgid "\n" +"⚠️ **Cache writes occurred but no reads.** This means the provider cached your prompt prefix, but the next request didn't match it - the prefix changed between calls. Common causes include dynamic variables like `{{time}}`, `{{date}}`, or `{{username}}` being substituted into your prompt prefix, per-turn context being injected before the cacheable tail, or tool definitions changing between calls. Use `[p]floatingcontext` to move dynamic context out of the prompt prefix." +msgstr "" + +#: assistant\commands\admin.py:3004 +#, docstring +msgid "Enable OpenRouter response caching (Mode A)." +msgstr "" + +#: assistant\commands\admin.py:3008 +msgid "OpenRouter response caching **enabled** (TTL: {}s)." +msgstr "" + +#: assistant\commands\admin.py:3012 +#, docstring +msgid "Disable OpenRouter response caching (Mode A)." +msgstr "" + +#: assistant\commands\admin.py:3016 +msgid "OpenRouter response caching **disabled**." +msgstr "" + +#: assistant\commands\admin.py:3020 +#, docstring +msgid "Set the OpenRouter response cache TTL in seconds (1–86400)." +msgstr "" + +#: assistant\commands\admin.py:3022 +msgid "TTL must be between 1 and 86400 seconds (24 hours)." +msgstr "" + +#: assistant\commands\admin.py:3026 +msgid "OpenRouter response cache TTL set to **{}** seconds." +msgstr "" + +#: assistant\commands\admin.py:3030 +#, docstring +msgid "Set the OpenRouter provider prompt cache TTL.\n\n" +" Choices: `off`, `5m`, `1h`. Applies to Anthropic / Gemini / Qwen\n" +" models routed via OpenRouter.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3037 +msgid "Mode must be one of: `off`, `5m`, `1h`." +msgstr "" + +#: assistant\commands\admin.py:3041 +msgid "OpenRouter provider prompt cache set to **{}**." +msgstr "" + +#: assistant\commands\admin.py:3050 +#, docstring +msgid "Configure OpenRouter provider routing and model slug preferences." +msgstr "" + +#: assistant\commands\admin.py:3055 +#, docstring +msgid "Show current OpenRouter provider routing settings." +msgstr "" + +#: assistant\commands\admin.py:3059 +msgid "not set" +msgstr "" + +#: assistant\commands\admin.py:3062 +msgid "not set (OR default)" +msgstr "" + +#: assistant\commands\admin.py:3064 +msgid "OpenRouter Provider Settings" +msgstr "" + +#: assistant\commands\admin.py:3065 +msgid "Model suffix" +msgstr "" + +#: assistant\commands\admin.py:3066 +msgid "Allow fallbacks" +msgstr "" + +#: assistant\commands\admin.py:3067 +msgid "Provider order" +msgstr "" + +#: assistant\commands\admin.py:3068 +msgid "Tip: `providers Fireworks` + `fallbacks false` hard-pins to that provider." +msgstr "" + +#: assistant\commands\admin.py:3073 +#, docstring +msgid "Set a guild-wide model slug suffix applied to every OpenRouter request.\n\n" +" Valid values: `:nitro` (throughput priority), `:floor` (price priority),\n" +" `:extended`, `clear` (remove suffix).\n" +" The suffix is appended after model resolution and replaces any per-model suffix.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3083 +msgid "OpenRouter model suffix cleared." +msgstr "" + +#: assistant\commands\admin.py:3086 +msgid "Invalid suffix `{}`. Valid: {}." +msgstr "" + +#: assistant\commands\admin.py:3090 +msgid "OpenRouter model suffix set to `{}`." +msgstr "" + +#: assistant\commands\admin.py:3094 +#, docstring +msgid "Set the ordered list of providers OpenRouter should use (space-separated).\n\n" +" Pass `clear` to reset. Combined with `fallbacks false` this hard-pins routing\n" +" to only the listed providers in order.\n" +" Example: `providers Fireworks Together`\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3104 +msgid "OpenRouter provider list cleared." +msgstr "" + +#: assistant\commands\admin.py:3108 +msgid "OpenRouter will try providers in order: {}." +msgstr "" + +#: assistant\commands\admin.py:3113 +#, docstring +msgid "Set whether OpenRouter may fall back to other providers.\n\n" +" Values: `true`, `false`, `clear` (restore OR default which is true).\n" +" Set to `false` with `providers` to hard-pin routing to those providers only.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3123 +msgid "OpenRouter fallbacks reset to OR default (enabled)." +msgstr "" + +#: assistant\commands\admin.py:3125 +msgid "Value must be `true`, `false`, or `clear`." +msgstr "" + +#: assistant\commands\admin.py:3128 +msgid "OpenRouter fallbacks set to `{}`." +msgstr "" + +#: assistant\commands\admin.py:3135 +#, docstring +msgid "List tool categories and their current enabled state." +msgstr "" + +#: assistant\commands\admin.py:3161 +msgid "Tool Categories" +msgstr "" + +#: assistant\commands\admin.py:3166 +msgid "Page {}/{} | {} enabled of {} total" +msgstr "" + +#: assistant\commands\admin.py:3191 +#, docstring +msgid "Enable or disable all tools in one or more categories." +msgstr "" + +#: assistant\commands\admin.py:3208 +msgid "No valid category names provided!" +msgstr "" + +#: assistant\commands\admin.py:3213 +msgid "The following categories do not exist: {}" +msgstr "" + +#: assistant\commands\admin.py:3235 +msgid "{} **Enabled Categories** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3243 +msgid "{} **Disabled Categories** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3266 +#, docstring +msgid "\n" +" Enable or disable multiple functions at once\n\n" +" **Arguments**\n" +" - `enable`: True to enable, False to disable. Omit to toggle current state.\n" +" - `functions`: Comma-separated list of function names, or \"all\" to affect all functions\n\n" +" **Examples**\n" +" - `[p]togglefunctions get_time, get_weather` - Toggle these functions\n" +" - `[p]togglefunctions True all` - Enable all functions\n" +" - `[p]togglefunctions False get_time, get_weather` - Disable specific functions\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3305 +msgid "No valid function names provided!" +msgstr "" + +#: assistant\commands\admin.py:3311 +msgid "The following functions do not exist: {}" +msgstr "" + +#: assistant\commands\admin.py:3337 +msgid "✅ **Enabled** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3344 +msgid "❌ **Disabled** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3440 +#, docstring +msgid "\n" +" Add/Remove items from the blacklist\n\n" +" `channel_role_member` can be a member, role, channel, or category channel\n" +" " +msgstr "Elemente zur schwarzen Liste hinzufügen/entfernen\n\n" +"`channel_role_member` kann ein Mitglied, eine Rolle, ein Kanal oder ein Kategoriekanal sein " + +#: assistant\commands\admin.py:3448 +msgid "{} has been removed from the blacklist" +msgstr "{} wurde von der schwarzen Liste entfernt" + +#: assistant\commands\admin.py:3451 +msgid "{} has been added to the blacklist" +msgstr "{} wurde zur schwarzen Liste hinzugefügt" + +#: assistant\commands\admin.py:3464 +#, docstring +msgid "\n" +" Add/Remove items from the planner list, or view current planners.\n\n" +" Users/roles in the planner list can use the `think_and_plan` tool for complex task breakdown.\n\n" +" If the planner list is empty, everyone can use the planning tool.\n" +" If the planner list has entries, only those users/roles can use it.\n\n" +" `role_or_member` can be a member or role. Omit to view the current list.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3479 +msgid "The planner list is empty. Everyone can use the `think_and_plan` tool." +msgstr "" + +#: assistant\commands\admin.py:3484 +msgid "**Planners:** {}" +msgstr "" + +#: assistant\commands\admin.py:3486 +msgid "The planner list has invalid entries. Consider clearing it." +msgstr "" + +#: assistant\commands\admin.py:3491 +msgid "{} has been removed from the planner list" +msgstr "" + +#: assistant\commands\admin.py:3494 +msgid "{} has been added to the planner list" +msgstr "" + +#: assistant\commands\admin.py:3500 +msgid "**{}:** empty" +msgstr "" + +#: assistant\commands\admin.py:3506 +msgid "**{}:** {}" +msgstr "" + +#: assistant\commands\admin.py:3510 +#, docstring +msgid "Show the current smartmod configuration." +msgstr "" + +#: assistant\commands\admin.py:3517 +msgid "`Enabled: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3518 +msgid "`Report channel:`{}\n" +msgstr "" + +#: assistant\commands\admin.py:3519 +msgid "`OpenAI key: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3519 +msgid "OK" +msgstr "" + +#: assistant\commands\admin.py:3519 +msgid "Missing" +msgstr "" + +#: assistant\commands\admin.py:3520 +msgid "`Review model: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3520 +msgid "(default)" +msgstr "" + +#: assistant\commands\admin.py:3521 +msgid "`Context: `{} before / {} after\n" +msgstr "" + +#: assistant\commands\admin.py:3522 +msgid "`Panel timeout: `{}s\n" +msgstr "" + +#: assistant\commands\admin.py:3523 +msgid "`Auto-action: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3524 +msgid "`Exempt staff: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3525 +msgid "`Staff ping: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3526 +msgid "`Blacklist: `{} items\n" +msgstr "" + +#: assistant\commands\admin.py:3527 +msgid "`Whitelist: `{} items\n" +msgstr "" + +#: assistant\commands\admin.py:3528 +msgid "`Triggers: `{} phrases" +msgstr "" + +#: assistant\commands\admin.py:3530 +msgid "Smartmod (AI Moderation)" +msgstr "" + +#: assistant\commands\admin.py:3535 +#, docstring +msgid "Enable or disable AI moderation. Omit the state to flip it." +msgstr "" + +#: assistant\commands\admin.py:3541 +msgid "\n" +"⚠️ No OpenAI key for the scan. Set one with `{p}assistant smartmod key`." +msgstr "" + +#: assistant\commands\admin.py:3545 +msgid "\n" +"⚠️ No report channel set. Set one with `{p}assistant smartmod channel`." +msgstr "" + +#: assistant\commands\admin.py:3548 +msgid "Smartmod is now **{}**." +msgstr "" + +#: assistant\commands\admin.py:3548 +msgid "enabled" +msgstr "" + +#: assistant\commands\admin.py:3548 +msgid "disabled" +msgstr "" + +#: assistant\commands\admin.py:3553 +#, docstring +msgid "Set the channel where moderation proposals are posted. Omit to clear." +msgstr "" + +#: assistant\commands\admin.py:3556 +msgid "set to {}" +msgstr "" + +#: assistant\commands\admin.py:3556 +msgid "cleared" +msgstr "" + +#: assistant\commands\admin.py:3557 +msgid "Report channel {}." +msgstr "" -#: assistant\commands\admin.py:2041 +#: assistant\commands\admin.py:3562 #, docstring -msgid "Import embeddings to use with the assistant\n\n" -" Args:\n" -" overwrite (bool): overwrite embeddings with existing entry names\n" +msgid "Set the smartmod review model (empty = use the server's default chat model).\n\n" +" Run with no model to open the interactive model picker — endpoint-discovered models when a\n" +" custom endpoint is set, otherwise the built-in OpenAI list.\n" " " -msgstr "Importiere Einbettungen, um sie mit dem Assistenten zu verwenden\n\n" -" Args:\n" -" overwrite (bool): Überschreibe Einbettungen mit vorhandenen Eintragsnamen " +msgstr "" -#: assistant\commands\admin.py:2050 assistant\commands\admin.py:3202 -msgid "You must attach **.json** files to this command or reference a message that has them!" -msgstr "Sie müssen **.json** Dateien an diesen Befehl anhängen oder auf eine Nachricht verweisen, die sie enthält!" +#: assistant\commands\admin.py:3571 +msgid "Review model set to `{}`." +msgstr "" -#: assistant\commands\admin.py:2086 -msgid "Failed to import **{}** because it contains invalid formatting!" -msgstr "Der Import von **{}** ist fehlgeschlagen, da er eine ungültige Formatierung enthält!" +#: assistant\commands\admin.py:3582 +msgid "Could not probe `{}` to discover models. Set one manually with `{}assistant smartmod model `." +msgstr "" -#: assistant\commands\admin.py:2091 -msgid "Imported the following files: `{}`\n" -"{} embeddings imported" -msgstr "Die folgenden Dateien wurden importiert: `{}`.\n" -"Es wurden {} Einbettungen importiert" +#: assistant\commands\admin.py:3602 +msgid "The review model uses the server's default chat model unless set. Valid OpenAI models:\n" +"{}\n" +"Set one with `{}assistant smartmod model `." +msgstr "" -#: assistant\commands\admin.py:2099 +#: assistant\commands\admin.py:3610 #, docstring -msgid "Import embeddings from an .xlsx file\n\n" -" Args:\n" -" overwrite (bool): overwrite embeddings with existing entry names\n" +msgid "Set the moderation review prompt.\n\n" +" Supports the {flagged_categories} placeholder plus the same standard prompt variables\n" +" as the main system prompt (server name, channel name, display name, custom cog\n" +" variables, etc.).\n\n" +" Run with no text to view the current prompt. Use `defaultprompt` to grab the built-in\n" +" default to customize, and `resetprompt` to restore it.\n" " " msgstr "" -#: assistant\commands\admin.py:2108 -msgid "You must attach **.xlsx** files to this command or reference a message that has them!" +#: assistant\commands\admin.py:3622 +msgid "Current moderation prompt (edit and re-set with `{p}assistant smartmod prompt `):" msgstr "" -#: assistant\commands\admin.py:2129 -msgid "{} is invalid! Must contain the following columns: {}" +#: assistant\commands\admin.py:3629 +msgid "Moderation prompt updated." msgstr "" -#: assistant\commands\admin.py:2183 -msgid "No embeddings needed to be updated!" +#: assistant\commands\admin.py:3634 +#, docstring +msgid "Get the built-in default moderation prompt to copy and customize." msgstr "" -#: assistant\commands\admin.py:2188 +#: assistant\commands\admin.py:3636 +msgid "Default moderation prompt - copy, edit, then set with `{p}assistant smartmod prompt `:" +msgstr "" + +#: assistant\commands\admin.py:3644 #, docstring -msgid "\n" -" Export embeddings to an .xlsx file\n\n" -" **Note:** csv exports do not include the embedding values\n" -" " +msgid "Reset the moderation review prompt to the built-in default." msgstr "" -#: assistant\commands\admin.py:2195 assistant\commands\admin.py:2241 -#: assistant\commands\admin.py:2285 -msgid "There are no embeddings to export!" -msgstr "Es gibt keine Einbettungen zum Exportieren!" +#: assistant\commands\admin.py:3647 +msgid "Moderation prompt reset to default." +msgstr "" -#: assistant\commands\admin.py:2235 +#: assistant\commands\admin.py:3652 #, docstring -msgid "Export embeddings to a .csv file\n\n" -" **Note:** csv exports do not include the embedding values\n" +msgid "Set a category's flag threshold (0.0-1.0), e.g. `harassment 0.4`.\n\n" +" Run with no arguments to list every moderation category and its current threshold.\n" " " -msgstr "Einbettungen in eine .csv-Datei exportieren\n\n" -"**Hinweis:** CSV-Exporte enthalten nicht die Einbettungswerte " +msgstr "" -#: assistant\commands\admin.py:2254 assistant\commands\admin.py:2274 -#: assistant\commands\admin.py:2293 assistant\commands\admin.py:2313 -#: assistant\commands\admin.py:3188 -msgid "Here is your embeddings export!" -msgstr "Hier ist Ihr Einbettungsexport!\n" -"Hier ist Ihr Einbettungsexport!" +#: assistant\commands\admin.py:3661 +msgid "Set one with `{p}assistant smartmod threshold <0.0-1.0>`:\n" +"{box}" +msgstr "" -#: assistant\commands\admin.py:2257 assistant\commands\admin.py:2296 -#: assistant\commands\admin.py:3170 -msgid "File too large, attempting to compress..." -msgstr "Datei zu groß, versuche zu komprimieren..." +#: assistant\commands\admin.py:3669 +msgid "Unknown category. Valid categories:\n" +"{}" +msgstr "" -#: assistant\commands\admin.py:2277 assistant\commands\admin.py:2316 -#: assistant\commands\admin.py:3191 -msgid "File is still too large even with compression!" -msgstr "Die Datei ist selbst nach der Komprimierung immer noch zu groß!" +#: assistant\commands\admin.py:3672 +msgid "Value must be between 0.0 and 1.0." +msgstr "" -#: assistant\commands\admin.py:2282 -#, docstring -msgid "Export embeddings to a json file" -msgstr "Exportiere Einbettungen in eine JSON-Datei" +#: assistant\commands\admin.py:3675 +msgid "Threshold for `{}` set to `{}`." +msgstr "" -#: assistant\commands\admin.py:2324 +#: assistant\commands\admin.py:3680 #, docstring -msgid "\n" -" Manage embeddings for training\n\n" -" Embeddings are used to optimize training of the assistant and minimize token usage.\n\n" -" By using this the bot can store vast amounts of contextual information without going over the token limit.\n\n" -" **Note**\n" -" You can enter a search query with this command to bring up the menu and go directly to that embedding selection.\n" -" " -msgstr "Verwalten von Einbettungen für das Training.\n\n" -"Einbettungen werden verwendet, um das Training des Assistenten zu optimieren und die Verwendung von Token zu minimieren.\n\n" -"Durch die Verwendung davon kann der Bot große Mengen an kontextueller Information speichern, ohne die Token-Grenze zu überschreiten.\n\n" -"**Hinweis**\n" -"Sie können mit diesem Befehl eine Suchanfrage eingeben, um das Menü aufzurufen und direkt zu dieser Einbettungsauswahl zu gelangen " +msgid "View the effective per-category flag thresholds." +msgstr "" -#: assistant\commands\admin.py:2374 +#: assistant\commands\admin.py:3687 #, docstring -msgid "\n" -" Add custom function calls for Assistant to use\n\n" -" **READ**\n" -" - [Function Call Docs](https://platform.openai.com/docs/guides/gpt/function-calling)\n" -" - [OpenAI Cookbook](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_call_functions_with_chat_models.ipynb)\n" -" - [JSON Schema Reference](https://json-schema.org/understanding-json-schema/)\n\n" -" The following objects are passed by default as keyword arguments.\n" -" - **user**: the user currently chatting with the bot (discord.Member)\n" -" - **channel**: channel the user is chatting in (TextChannel|Thread|ForumChannel)\n" -" - **guild**: current guild (discord.Guild)\n" -" - **bot**: the bot object (Red)\n" -" - **conf**: the config model for Assistant (GuildSettings)\n" -" - All functions **MUST** include `*args, **kwargs` in the params and return a string\n" -" ```python\n" -" # Can be either sync or async\n" -" async def func(*args, **kwargs) -> str:\n" -" ```\n" -" Only bot owner can manage this, guild owners can see descriptions but not code\n" -" " +msgid "Return (flagged_categories, formatted_table_lines) comparing each score to its threshold." msgstr "" -#: assistant\commands\admin.py:2414 +#: assistant\commands\admin.py:3701 #, docstring -msgid "List custom prompt context variables registered by other cogs." +msgid "Preview a sample message: which trigger phrases match plus each moderation score vs its threshold." msgstr "" -#: assistant\commands\admin.py:2416 -msgid "3rd party docs: {}" +#: assistant\commands\admin.py:3707 assistant\commands\admin.py:3741 +msgid "No OpenAI key available for the scan. Set one with `{p}assistant smartmod key`." msgstr "" -#: assistant\commands\admin.py:2418 -msgid "No custom context variables have been registered yet!\n" -"{}" +#: assistant\commands\admin.py:3716 assistant\commands\admin.py:3750 +msgid "Moderation scan failed — check the key or the bot logs." msgstr "" -#: assistant\commands\admin.py:2432 -msgid "Custom Variables" +#: assistant\commands\admin.py:3719 +msgid "🚩 **Would trigger review**" msgstr "" -#: assistant\commands\admin.py:2437 -msgid "Page {}/{} | {} variables" +#: assistant\commands\admin.py:3719 +msgid "✅ **Would not trigger**" +msgstr "" + +#: assistant\commands\admin.py:3721 +msgid "Matched triggers: {}" +msgstr "" + +#: assistant\commands\admin.py:3723 +msgid "Scan flagged: {}" msgstr "" -#: assistant\commands\admin.py:2450 +#: assistant\commands\admin.py:3730 #, docstring -msgid "\n" -" List all available functions and their enabled/disabled status\n\n" -" This provides a quick overview of all custom functions and 3rd party\n" -" registered functions without having to navigate through the full menu.\n" +msgid "Dry-run the FULL pipeline on sample text: scan / triggers -> review model -> action panel.\n\n" +" The review model runs for real (tools, embeddings, this channel's recent context) with you as\n" +" the simulated offender, but the panel's buttons take no real action. The review runs if a\n" +" category trips its threshold OR a trigger phrase matches (same as production).\n" " " msgstr "" -#: assistant\commands\admin.py:2463 assistant\commands\admin.py:2527 -#: assistant\commands\admin.py:2579 assistant\commands\admin.py:2676 -msgid "No functions have been registered yet!" +#: assistant\commands\admin.py:3758 +msgid "✅ Would not trigger — no category over its threshold and no trigger phrase matched." msgstr "" -#: assistant\commands\admin.py:2490 -msgid "Function List" +#: assistant\commands\admin.py:3760 +msgid "🚩 Tripped: {}" msgstr "" -#: assistant\commands\admin.py:2495 -msgid "Page {}/{} | {} enabled, {} disabled" +#: assistant\commands\admin.py:3765 +msgid "Simulation error: {}" +msgstr "" + +#: assistant\commands\admin.py:3768 +msgid "🧪 Model chose **no action**.\n" +"-# {}" msgstr "" -#: assistant\commands\admin.py:2511 +#: assistant\commands\admin.py:3768 +msgid "no reason given" +msgstr "" + +#: assistant\commands\admin.py:3770 +msgid "🧪 Model didn't reach a decision within the review turn limit." +msgstr "" + +#: assistant\commands\admin.py:3772 +msgid "🧪 Model **proposed** an action — see the dry-run panel above (buttons are no-ops)." +msgstr "" + +#: assistant\commands\admin.py:3788 #, docstring -msgid "Open the mobile-friendly AI tools manager." +msgid "Toggle a channel/category/role/member on the moderation ignore list. Omit to view." +msgstr "" + +#: assistant\commands\admin.py:3791 +msgid "Smartmod blacklist (ignored)" +msgstr "" + +#: assistant\commands\admin.py:3796 +msgid "{} removed from the smartmod blacklist." +msgstr "" + +#: assistant\commands\admin.py:3799 +msgid "{} added to the smartmod blacklist." msgstr "" -#: assistant\commands\admin.py:2520 +#: assistant\commands\admin.py:3816 #, docstring -msgid "List tool categories and their current enabled state." +msgid "Only moderate these channel/category/role/members (used only when the blacklist is empty). Omit to view." msgstr "" -#: assistant\commands\admin.py:2545 -msgid "Tool Categories" +#: assistant\commands\admin.py:3819 +msgid "Smartmod whitelist (only these)" msgstr "" -#: assistant\commands\admin.py:2547 -msgid "Page {}/{} | {} enabled of {} total" +#: assistant\commands\admin.py:3824 +msgid "{} removed from the smartmod whitelist." msgstr "" -#: assistant\commands\admin.py:2572 +#: assistant\commands\admin.py:3827 +msgid "{} added to the smartmod whitelist." +msgstr "" + +#: assistant\commands\admin.py:3832 #, docstring -msgid "Enable or disable all tools in one or more categories." +msgid "Toggle a role to ping (and authorize) when an action is proposed. Omit to view." msgstr "" -#: assistant\commands\admin.py:2589 -msgid "No valid category names provided!" +#: assistant\commands\admin.py:3835 +msgid "Smartmod staff ping roles" msgstr "" -#: assistant\commands\admin.py:2594 -msgid "The following categories do not exist: {}" +#: assistant\commands\admin.py:3840 +msgid "{} removed from the staff ping roles." msgstr "" -#: assistant\commands\admin.py:2616 -msgid "{} **Enabled Categories** ({}):\n" -"{}" +#: assistant\commands\admin.py:3843 +msgid "{} added to the staff ping roles." msgstr "" -#: assistant\commands\admin.py:2624 -msgid "{} **Disabled Categories** ({}):\n" -"{}" +#: assistant\commands\admin.py:3848 +#, docstring +msgid "Set how many messages of context to capture before/after a flagged message." +msgstr "" + +#: assistant\commands\admin.py:3853 +msgid "Context window set to {} before / {} after." msgstr "" -#: assistant\commands\admin.py:2647 +#: assistant\commands\admin.py:3861 #, docstring -msgid "\n" -" Enable or disable multiple functions at once\n\n" -" **Arguments**\n" -" - `enable`: True to enable, False to disable. Omit to toggle current state.\n" -" - `functions`: Comma-separated list of function names, or \"all\" to affect all functions\n\n" -" **Examples**\n" -" - `[p]togglefunctions get_time, get_weather` - Toggle these functions\n" -" - `[p]togglefunctions True all` - Enable all functions\n" -" - `[p]togglefunctions False get_time, get_weather` - Disable specific functions\n" -" " +msgid "Set how long the action panel stays interactive, in seconds (60-86400)." msgstr "" -#: assistant\commands\admin.py:2686 -msgid "No valid function names provided!" +#: assistant\commands\admin.py:3864 +msgid "Panel timeout set to {} seconds." msgstr "" -#: assistant\commands\admin.py:2692 -msgid "The following functions do not exist: {}" +#: assistant\commands\admin.py:3869 +#, docstring +msgid "Toggle whether the proposed action auto-executes when the panel times out." msgstr "" -#: assistant\commands\admin.py:2718 -msgid "✅ **Enabled** ({}):\n" -"{}" +#: assistant\commands\admin.py:3873 assistant\commands\admin.py:3883 +msgid "on" msgstr "" -#: assistant\commands\admin.py:2724 -msgid "❌ **Disabled** ({}):\n" -"{}" +#: assistant\commands\admin.py:3873 assistant\commands\admin.py:3883 +msgid "off" msgstr "" -#: assistant\commands\admin.py:2819 -#, docstring -msgid "\n" -" Add/Remove items from the blacklist\n\n" -" `channel_role_member` can be a member, role, channel, or category channel\n" -" " -msgstr "Elemente zur schwarzen Liste hinzufügen/entfernen\n\n" -"`channel_role_member` kann ein Mitglied, eine Rolle, ein Kanal oder ein Kategoriekanal sein " +#: assistant\commands\admin.py:3874 +msgid "Auto-action on timeout is now **{}**." +msgstr "" -#: assistant\commands\admin.py:2827 -msgid "{} has been removed from the blacklist" -msgstr "{} wurde von der schwarzen Liste entfernt" +#: assistant\commands\admin.py:3879 +#, docstring +msgid "Toggle skipping moderation for members with ban/kick/manage-messages permissions." +msgstr "" -#: assistant\commands\admin.py:2830 -msgid "{} has been added to the blacklist" -msgstr "{} wurde zur schwarzen Liste hinzugefügt" +#: assistant\commands\admin.py:3883 +msgid "Exempt staff is now **{}**." +msgstr "" -#: assistant\commands\admin.py:2843 +#: assistant\commands\admin.py:3888 #, docstring -msgid "\n" -" Add/Remove items from the planner list, or view current planners.\n\n" -" Users/roles in the planner list can use the `think_and_plan` tool for complex task breakdown.\n\n" -" If the planner list is empty, everyone can use the planning tool.\n" -" If the planner list has entries, only those users/roles can use it.\n\n" -" `role_or_member` can be a member or role. Omit to view the current list.\n" +msgid "Add or remove a trigger phrase that sends a message straight to moderation review.\n\n" +" A match fires the review pipeline **in place of** the OpenAI moderation scan — so\n" +" triggers work even with no OpenAI key set. Re-run with the exact same phrase to remove it.\n\n" +" Only `*` is a wildcard (it matches any run of characters); everything else is literal,\n" +" so pasting real regex is safe and can never lock the bot up. With no `*`, the phrase\n" +" matches on word boundaries (`idiot` hits the word \"idiot\" but not \"idiotic\"); add `*`\n" +" to loosen it: `idiot*` (prefix), `*idiot` (suffix), `*idiot*` (substring anywhere).\n" " " msgstr "" -#: assistant\commands\admin.py:2858 -msgid "The planner list is empty. Everyone can use the `think_and_plan` tool." +#: assistant\commands\admin.py:3903 +msgid "Removed smartmod trigger: `{}`" msgstr "" -#: assistant\commands\admin.py:2863 -msgid "**Planners:** {}" +#: assistant\commands\admin.py:3906 +msgid "A trigger needs at least one non-`*` character." msgstr "" -#: assistant\commands\admin.py:2865 -msgid "The planner list has invalid entries. Consider clearing it." +#: assistant\commands\admin.py:3908 +msgid "That trigger is too long (max {} characters)." msgstr "" -#: assistant\commands\admin.py:2870 -msgid "{} has been removed from the planner list" +#: assistant\commands\admin.py:3911 +msgid "Added smartmod trigger `{phrase}` (matches as `{regex}`)." msgstr "" -#: assistant\commands\admin.py:2873 -msgid "{} has been added to the planner list" +#: assistant\commands\admin.py:3919 +#, docstring +msgid "List the smartmod trigger phrases and the safe pattern each one compiles to." msgstr "" -#: assistant\commands\admin.py:2878 +#: assistant\commands\admin.py:3924 +msgid "No smartmod triggers set. Add one with `{p}assistant smartmod trigger `." +msgstr "" + +#: assistant\commands\admin.py:3935 #, docstring -msgid "\n" -" Override settings for specific roles\n\n" -" **NOTE**\n" -" If a user has two roles with override settings, override associated with the higher role will be used.\n" +msgid "Set a dedicated OpenAI key for the moderation scan (opens a secure modal).\n\n" +" Use this when your chat endpoint is a custom/non-OpenAI endpoint (OpenRouter, LM Studio,\n" +" etc.): the free OpenAI moderation scan still runs against api.openai.com with this key,\n" +" while the review LLM keeps using your configured endpoint. Enter `none` to clear it.\n" " " msgstr "" -#: assistant\commands\admin.py:2887 +#: assistant\commands\admin.py:3943 +msgid "Click to set the OpenAI key used for the smartmod moderation scan\n\n" +"To remove the key, enter `none`" +msgstr "" + +#: assistant\commands\admin.py:3950 +msgid "Smartmod OpenAI key has been removed!" +msgstr "" + +#: assistant\commands\admin.py:3955 +msgid "Smartmod OpenAI key has been set!" +msgstr "" + +#: assistant\commands\admin.py:3960 #, docstring msgid "\n" " Assign a role to use a model\n\n" @@ -2030,23 +2871,23 @@ msgid "\n" msgstr "Zuweisung einer Rolle zur Verwendung eines Modells\n\n" "*Geben Sie dieselbe Rolle und dasselbe Modell an, um die Überschreibung zu entfernen* " -#: assistant\commands\admin.py:2899 +#: assistant\commands\admin.py:3974 msgid "Enter a model id supported by your custom endpoint. If it exposes `/v1/models`, you can copy one from there." msgstr "" -#: assistant\commands\admin.py:2916 +#: assistant\commands\admin.py:3991 msgid "Role override for {} removed!" msgstr "Rollenüberschreibung für {} entfernt!" -#: assistant\commands\admin.py:2919 +#: assistant\commands\admin.py:3994 msgid "Role override for {} overwritten!" msgstr "Rollenüberschreibung für {} überschrieben!" -#: assistant\commands\admin.py:2922 +#: assistant\commands\admin.py:3997 msgid "Role override for {} added!" msgstr "Rollenüberschreibung für {} hinzugefügt!" -#: assistant\commands\admin.py:2928 +#: assistant\commands\admin.py:4003 #, docstring msgid "\n" " Assign a max token override to a role\n\n" @@ -2056,19 +2897,19 @@ msgstr "\n" "Einer Rolle einen Max-Token-Override zuweisen\n\n" "*Geben Sie dieselbe Rolle und Tokenanzahl an, um die Überschreibung zu entfernen* " -#: assistant\commands\admin.py:2938 +#: assistant\commands\admin.py:4013 msgid "Max token override for {} removed!" msgstr "Max Token-Überschreibung für {} entfernt!" -#: assistant\commands\admin.py:2941 +#: assistant\commands\admin.py:4016 msgid "Max token override for {} overwritten!" msgstr "Max Token-Überschreibung für {} überschrieben!" -#: assistant\commands\admin.py:2944 +#: assistant\commands\admin.py:4019 msgid "Max token override for {} added!" msgstr "Max Token-Überschreibung für {} hinzugefügt!" -#: assistant\commands\admin.py:2952 +#: assistant\commands\admin.py:4031 #, docstring msgid "\n" " Assign a max response token override to a role\n\n" @@ -2080,19 +2921,19 @@ msgstr "\n" "Setzen Sie diese auf 0, damit Antworttoken dynamisch sind\n\n" "*Geben Sie dieselbe Rolle und Tokenanzahl an, um die Überschreibung zu entfernen* " -#: assistant\commands\admin.py:2964 +#: assistant\commands\admin.py:4043 msgid "Max response token override for {} removed!" msgstr "Max response token Override für {} entfernt!" -#: assistant\commands\admin.py:2967 +#: assistant\commands\admin.py:4046 msgid "Max response token override for {} overwritten!" msgstr "Max response token Überschreibung für {} überschrieben!" -#: assistant\commands\admin.py:2970 +#: assistant\commands\admin.py:4049 msgid "Max response token override for {} added!" msgstr "Max response token-Override für {} hinzugefügt!" -#: assistant\commands\admin.py:2975 +#: assistant\commands\admin.py:4054 #, docstring msgid "\n" " Assign a max message retention override to a role\n\n" @@ -2102,19 +2943,19 @@ msgstr "\n" "Einer Rolle eine Überschreibung für die maximale Nachrichtenaufbewahrung zuweisen.\n\n" "*Geben Sie dieselbe Rolle und denselben Aufbewahrungsbetrag an, um die Überschreibung zu entfernen.* " -#: assistant\commands\admin.py:2987 +#: assistant\commands\admin.py:4066 msgid "Max retention override for {} removed!" msgstr "Max retention Override für {} entfernt!" -#: assistant\commands\admin.py:2990 +#: assistant\commands\admin.py:4069 msgid "Max retention override for {} overwritten!" msgstr "Max retention Überschreibung für {} überschrieben!" -#: assistant\commands\admin.py:2993 +#: assistant\commands\admin.py:4072 msgid "Max retention override for {} added!" msgstr "Max retention Überschreibung für {} hinzugefügt!" -#: assistant\commands\admin.py:2998 +#: assistant\commands\admin.py:4077 #, docstring msgid "\n" " Assign a max retention time override to a role\n\n" @@ -2123,19 +2964,19 @@ msgid "\n" msgstr "Einer Rolle eine Überschreitung der maximalen Aufbewahrungszeit zuweisen\n\n" "*Geben Sie dieselbe Rolle und dieselbe Zeit an, um die Überschreitung zu entfernen* " -#: assistant\commands\admin.py:3010 +#: assistant\commands\admin.py:4089 msgid "Max retention time override for {} removed!" msgstr "Überschreibung der maximalen Verweildauer für {} entfernt!" -#: assistant\commands\admin.py:3013 +#: assistant\commands\admin.py:4092 msgid "Max retention time override for {} overwritten!" msgstr "Maximale Verweildauer für {} überschrieben!" -#: assistant\commands\admin.py:3016 +#: assistant\commands\admin.py:4095 msgid "Max retention time override for {} added!" msgstr "Maximale Verweildauerüberschreibung für {} hinzugefügt!" -#: assistant\commands\admin.py:3021 +#: assistant\commands\admin.py:4100 #, docstring msgid "\n" " Assign a reasoning effort override to a role\n\n" @@ -2144,23 +2985,23 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:3031 +#: assistant\commands\admin.py:4110 msgid "Invalid effort level. Valid values: {}" msgstr "" -#: assistant\commands\admin.py:3038 +#: assistant\commands\admin.py:4117 msgid "Reasoning effort override for {} removed!" msgstr "" -#: assistant\commands\admin.py:3041 +#: assistant\commands\admin.py:4120 msgid "Reasoning effort override for {} overwritten!" msgstr "" -#: assistant\commands\admin.py:3044 +#: assistant\commands\admin.py:4123 msgid "Reasoning effort override for {} added!" msgstr "" -#: assistant\commands\admin.py:3049 +#: assistant\commands\admin.py:4128 #, docstring msgid "\n" " Switch verbosity level for gpt-5 model between low, medium, and high\n\n" @@ -2168,79 +3009,112 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:3057 +#: assistant\commands\admin.py:4136 msgid "Verbosity has been set to **Medium**" msgstr "" -#: assistant\commands\admin.py:3060 +#: assistant\commands\admin.py:4139 msgid "Verbosity has been set to **High**" msgstr "" -#: assistant\commands\admin.py:3063 +#: assistant\commands\admin.py:4142 msgid "Verbosity has been set to **Low**" msgstr "" -#: assistant\commands\admin.py:3075 +#: assistant\commands\admin.py:4154 +#, docstring +msgid "Set the global default chat model for guilds that haven't picked their own (owner).\n\n" +" Pairs with `[p]assistant api globalendpoint`: e.g. set `openrouter/free` so new servers\n" +" route to OpenRouter's free models instead of the built-in `gpt-5.4` default. Guilds that\n" +" chose their own model are unaffected. Omit to view; pass `none` to clear.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:4161 +msgid "(not set - guilds use their own model)" +msgstr "" + +#: assistant\commands\admin.py:4163 +msgid "Global default model: `{}`\n" +"Set with `{}assistant api globalmodel `." +msgstr "" + +#: assistant\commands\admin.py:4169 +msgid "Global default model cleared." +msgstr "" + +#: assistant\commands\admin.py:4173 +msgid "Global default model set to `{}`. Guilds without their own model will use it." +msgstr "" + +#: assistant\commands\admin.py:4180 #, docstring msgid "\n" -" Override the global OpenAI-compatible API base URL\n\n" -" Pass the full API base URL, including the scheme and the `/v1` suffix.\n\n" +" Set the global default endpoint URL (owner)\n\n" +" When set, every guild without its own endpoint override calls this\n" +" URL instead of OpenAI's default. Pass the full base URL including\n" +" the scheme and the `/v1` suffix.\n\n" " **Examples**\n" " - `http://127.0.0.1:1234/v1`\n" " - `http://localhost:5001/v1`\n" -" - `https://example.com/api/v1`\n\n" +" - `https://example.com/api/v1`\n" +" - `https://openrouter.ai/api/v1`\n\n" " **Notes**\n" -" - When set, all servers can use the assistant without needing their own API key\n" -" - Custom endpoints must be OpenAI-compatible\n" -" - This should be the SDK `base_url`, not a specific route like `/chat/completions`\n" -" - Use `[p]assistant endpointapikey` to set a global key for authenticated custom endpoints\n" +" - Endpoints must be OpenAI-compatible\n" +" - This is the SDK `base_url`, not a specific route like `/chat/completions`\n" +" - Use `[p]assistant api globalkey` to set the API key for this endpoint\n" +" - Router endpoints like OpenRouter accept special model aliases\n" +" (e.g. `openrouter/auto`, `openrouter/free`) via `[p]assistant set model`\n" " - Omit the argument to remove the override\n" " " msgstr "" -#: assistant\commands\admin.py:3097 +#: assistant\commands\admin.py:4206 msgid "Endpoint is already set to **{}**" msgstr "" -#: assistant\commands\admin.py:3101 +#: assistant\commands\admin.py:4210 msgid "Endpoint has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:3109 +#: assistant\commands\admin.py:4218 msgid "Endpoint has been changed from **{}** to **{}**" msgstr "" -#: assistant\commands\admin.py:3116 +#: assistant\commands\admin.py:4225 msgid "Endpoint override has been removed!" msgstr "" -#: assistant\commands\admin.py:3122 +#: assistant\commands\admin.py:4232 #, docstring -msgid "Probe the configured custom endpoint and cache its runtime model/capability profile" +msgid "Probe the active endpoint and refresh its cached model/capability profile\n\n" +" Checks the guild endpoint override first; if none is set, probes the\n" +" global endpoint override. Reports an error if no endpoint is configured.\n" +" " msgstr "" -#: assistant\commands\admin.py:3124 -msgid "No endpoint override is configured." +#: assistant\commands\admin.py:4240 +msgid "No endpoint override is configured for this guild or globally." msgstr "" -#: assistant\commands\admin.py:3130 -msgid "Failed to probe the configured endpoint." +#: assistant\commands\admin.py:4246 +msgid "Failed to probe `{}`." msgstr "" -#: assistant\commands\admin.py:3137 +#: assistant\commands\admin.py:4253 #, docstring msgid "Wipe all settings and data for entire cog" msgstr "Löschen aller Einstellungen und Daten für das gesamte Zahnrad" -#: assistant\commands\admin.py:3139 +#: assistant\commands\admin.py:4255 msgid "Not wiping cog" msgstr "Nicht abwischendes Zahnrad" -#: assistant\commands\admin.py:3144 +#: assistant\commands\admin.py:4260 msgid "Cog has been wiped!" msgstr "Die Kogge wurde gelöscht!" -#: assistant\commands\admin.py:3149 +#: assistant\commands\admin.py:4265 #, docstring msgid "\n" " Take a backup of the cog\n\n" @@ -2249,23 +3123,23 @@ msgid "\n" msgstr "Erstellen Sie eine Sicherungskopie des Zahnrads.\n\n" "- Diese Sicherungskopie enthält keine Gesprächsdaten " -#: assistant\commands\admin.py:3167 +#: assistant\commands\admin.py:4283 msgid "Here is your export!" msgstr "Hier ist Ihr Export!\n" "Hier ist Ihr Export!" -#: assistant\commands\admin.py:3196 +#: assistant\commands\admin.py:4312 #, docstring msgid "\n" " Restore the cog from a backup\n" " " msgstr "Wiederherstellen des Zahnrads aus einer Sicherungskopie " -#: assistant\commands\admin.py:3206 +#: assistant\commands\admin.py:4322 msgid "Cog has been restored!" msgstr "Die Kogge wurde wiederhergestellt!" -#: assistant\commands\admin.py:3212 +#: assistant\commands\admin.py:4328 #, docstring msgid "\n" " Wipe saved conversations for the assistant in all servers\n\n" @@ -2274,37 +3148,37 @@ msgid "\n" msgstr "Gespeicherte Unterhaltungen für den Assistenten in allen Servern löschen.\n\n" "Damit werden alle gespeicherten Unterhaltungen für den Assistenten gelöscht " -#: assistant\commands\admin.py:3221 +#: assistant\commands\admin.py:4337 msgid "Conversations have been wiped for all servers!" msgstr "Alle Unterhaltungen wurden für alle Server gelöscht!" -#: assistant\commands\admin.py:3227 +#: assistant\commands\admin.py:4343 #, docstring msgid "Toggle persistent conversations" msgstr "Persistente Unterhaltungen umschalten" -#: assistant\commands\admin.py:3230 +#: assistant\commands\admin.py:4346 msgid "Persistent conversations have been **Disabled**" msgstr "Dauerhafte Unterhaltungen wurden **deaktiviert**" -#: assistant\commands\admin.py:3233 +#: assistant\commands\admin.py:4349 msgid "Persistent conversations have been **Enabled**" msgstr "Dauerhafte Unterhaltungen wurden **aktiviert**" -#: assistant\commands\admin.py:3239 +#: assistant\commands\admin.py:4355 #, docstring msgid "Toggle whether reasoning/think blocks are uploaded as files globally" msgstr "" -#: assistant\commands\admin.py:3242 +#: assistant\commands\admin.py:4358 msgid "Reasoning blocks will now be stripped from replies without uploading think files." msgstr "" -#: assistant\commands\admin.py:3245 +#: assistant\commands\admin.py:4361 msgid "Reasoning blocks will now be uploaded as think files when present." msgstr "" -#: assistant\commands\admin.py:3251 +#: assistant\commands\admin.py:4367 #, docstring msgid "\n" " Wipe saved embeddings for all servers\n\n" @@ -2313,11 +3187,11 @@ msgid "\n" msgstr "Lösche gespeicherte Einbettungen für alle Server.\n\n" "Dadurch werden alle gespeicherten Einbettungs-Trainingsdaten für den Assistenten gelöscht " -#: assistant\commands\admin.py:3261 +#: assistant\commands\admin.py:4377 msgid "All embedding data has been wiped for all servers!" msgstr "Alle Einbettungsdaten wurden für alle Server gelöscht!" -#: assistant\commands\admin.py:3267 +#: assistant\commands\admin.py:4383 #, docstring msgid "\n" " Toggle whether the assistant listens to other bots\n\n" @@ -2327,113 +3201,113 @@ msgstr "\n" "Umschalten, ob der Assistent auf andere Bots hört\n\n" "**NICHT FÜR ÖFFENTLICHE BOTS EMPFOHLEN!** " -#: assistant\commands\admin.py:3274 +#: assistant\commands\admin.py:4390 msgid "Assistant will no longer listen to other bot messages" msgstr "Der Assistent wird keine anderen Bot-Nachrichten mehr beachten" -#: assistant\commands\admin.py:3277 +#: assistant\commands\admin.py:4393 msgid "Assistant will listen to other bot messages" msgstr "Der Assistent wird sich andere Bot-Nachrichten anhören" -#: assistant\commands\admin.py:3285 +#: assistant\commands\admin.py:4401 #, docstring msgid "View and manage all scheduled autonomous tasks in this server." msgstr "" -#: assistant\commands\admin.py:3288 +#: assistant\commands\admin.py:4404 msgid "No scheduled tasks in this server." msgstr "" -#: assistant\commands\admin.py:3307 +#: assistant\commands\admin.py:4423 msgid "Scheduled Tasks ({})" msgstr "" -#: assistant\commands\admin.py:3317 +#: assistant\commands\admin.py:4433 #, docstring msgid "Cancel a scheduled task by its ID (admin override)." msgstr "" -#: assistant\commands\admin.py:3320 +#: assistant\commands\admin.py:4436 msgid "No scheduled task found with ID `{}`." msgstr "" -#: assistant\commands\admin.py:3322 +#: assistant\commands\admin.py:4438 msgid "That task belongs to a different server." msgstr "" -#: assistant\commands\admin.py:3331 +#: assistant\commands\admin.py:4447 msgid "Scheduled task `{}` has been cancelled." msgstr "" -#: assistant\commands\admin.py:3337 +#: assistant\commands\admin.py:4453 #, docstring msgid "Clear all scheduled tasks in this server." msgstr "" -#: assistant\commands\admin.py:3339 +#: assistant\commands\admin.py:4455 msgid "Not clearing tasks." msgstr "" -#: assistant\commands\admin.py:3350 +#: assistant\commands\admin.py:4466 msgid "Cleared {} scheduled tasks." msgstr "" -#: assistant\commands\admin.py:3356 +#: assistant\commands\admin.py:4470 #, docstring msgid "Toggle LLM-based conversation compaction on or off" msgstr "" -#: assistant\commands\admin.py:3360 +#: assistant\commands\admin.py:4474 msgid "Conversation compaction is now **Disabled** (blind degradation will be used)" msgstr "" -#: assistant\commands\admin.py:3363 +#: assistant\commands\admin.py:4477 msgid "Conversation compaction is now **Enabled**" msgstr "" -#: assistant\commands\admin.py:3368 +#: assistant\commands\admin.py:4482 #, docstring msgid "Set the model used for compaction (leave blank to use the chat model)" msgstr "" -#: assistant\commands\admin.py:3372 +#: assistant\commands\admin.py:4487 msgid "Compaction model cleared, the main chat model will be used" msgstr "" -#: assistant\commands\admin.py:3377 +#: assistant\commands\admin.py:4492 msgid "Compaction model set to **{}**" msgstr "" -#: assistant\commands\admin.py:3382 +#: assistant\commands\admin.py:4497 #, docstring msgid "Set the token threshold at which compaction triggers\n\n" " When set, the bot will proactively compact conversations once they\n" " exceed this many tokens, even if the model's context window is larger.\n\n" " Set to **0** to only compact when hitting the model's max token limit.\n\n" " **Examples**\n" -" - `[p]assistant compactionthreshold 16000` - compact at 16k tokens\n" -" - `[p]assistant compactionthreshold 0` - reset to default behavior\n" +" - `[p]assistant compaction threshold 16000` - compact at 16k tokens\n" +" - `[p]assistant compaction threshold 0` - reset to default behavior\n" " " msgstr "" -#: assistant\commands\admin.py:3394 +#: assistant\commands\admin.py:4509 msgid "Token limit must be 0 or higher" msgstr "" -#: assistant\commands\admin.py:3398 +#: assistant\commands\admin.py:4513 msgid "Compaction will now trigger at **{}** tokens" msgstr "" -#: assistant\commands\admin.py:3400 +#: assistant\commands\admin.py:4515 msgid "Compaction threshold reset, will only compact at the model's max token limit" msgstr "" -#: assistant\commands\base.py:46 +#: assistant\commands\base.py:45 #, docstring msgid "Get help using assistant" msgstr "" -#: assistant\commands\base.py:48 +#: assistant\commands\base.py:47 msgid "\n" "# How to Use\n\n" "### Commands\n" @@ -2441,6 +3315,7 @@ msgid "\n" "`[p]convocontext` - detailed token breakdown of what's consuming your context window.\n" "`[p]convocompact` - intelligently summarize older messages to free up context space.\n" "`[p]clearconvo` - reset your conversation for the current channel/thread/forum.\n" +"`[p]unchat` - cancel the active assistant response for the current channel/thread/forum.\n" "`[p]showconvo` - get a json dump of your current conversation (this is mostly for debugging)\n" "`[p]chat` or `[p]ask` - command prefix for chatting with the bot outside of the live chat, or just @ it.\n\n" "### Chat Arguments\n" @@ -2467,42 +3342,38 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:109 +#: assistant\commands\base.py:110 msgid "The API key is not set up!" msgstr "" -#: assistant\commands\base.py:111 +#: assistant\commands\base.py:112 msgid "Image generation is disabled!" msgstr "" -#: assistant\commands\base.py:120 +#: assistant\commands\base.py:121 msgid "Generating image..." msgstr "" -#: assistant\commands\base.py:124 +#: assistant\commands\base.py:125 msgid "-# Size: {}\n" "-# Quality: {}\n" "-# Model: {}" msgstr "" -#: assistant\commands\base.py:126 +#: assistant\commands\base.py:127 msgid "\n" "-# Style: {}" msgstr "" -#: assistant\commands\base.py:145 -msgid "Cost: ${}" -msgstr "" - -#: assistant\commands\base.py:150 +#: assistant\commands\base.py:155 msgid "Revised Prompt" msgstr "" -#: assistant\commands\base.py:150 +#: assistant\commands\base.py:155 msgid "Continued" msgstr "" -#: assistant\commands\base.py:170 +#: assistant\commands\base.py:178 #, docstring msgid "\n" " Chat with [botname]!\n\n" @@ -2519,7 +3390,11 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:197 +#: assistant\commands\base.py:208 +msgid "There are too many pending messages for this conversation. Please wait for the current reply." +msgstr "" + +#: assistant\commands\base.py:214 #, docstring msgid "\n" " Check the token and message count of yourself or another user's conversation for this channel\n\n" @@ -2531,7 +3406,7 @@ msgstr "\n" "Konversationen werden *Pro* Benutzer *pro* Kanal geführt, was bedeutet, dass eine Konversation, die Sie in einem Kanal haben, separat von einer anderen Konversation in einem anderen Kanal im Speicher gehalten wird.\n\n" "Konversationen werden nur im Speicher gespeichert, bis der Bot neu gestartet oder das Cog neu geladen wird " -#: assistant\commands\base.py:252 +#: assistant\commands\base.py:271 msgid "`Messages: `{}/{}\n" "`Context: `{}/{} ({:.1f}%)\n" "`Conversation:`{}\n" @@ -2540,126 +3415,126 @@ msgid "`Messages: `{}/{}\n" "`Model: `{}" msgstr "" -#: assistant\commands\base.py:271 +#: assistant\commands\base.py:290 msgid "\n" "`Tool Calls: `{}" msgstr "" -#: assistant\commands\base.py:273 +#: assistant\commands\base.py:292 msgid "\n" "`Compacted: `{} time(s)" msgstr "" -#: assistant\commands\base.py:275 +#: assistant\commands\base.py:294 msgid "*Collabroative conversations are enabled*" msgstr "" -#: assistant\commands\base.py:281 +#: assistant\commands\base.py:300 msgid "Conversation stats for {}" msgstr "Konversationsstatistiken für {}" -#: assistant\commands\base.py:284 +#: assistant\commands\base.py:303 msgid "Context = conversation + overhead (prompts + function schemas)" msgstr "" -#: assistant\commands\base.py:289 +#: assistant\commands\base.py:308 msgid "System prompt override for this conversation" msgstr "" -#: assistant\commands\base.py:292 +#: assistant\commands\base.py:311 msgid "System prompt override for this channel" msgstr "" -#: assistant\commands\base.py:298 +#: assistant\commands\base.py:317 #, docstring msgid "Show a detailed token breakdown for your conversation context" msgstr "" -#: assistant\commands\base.py:334 +#: assistant\commands\base.py:353 msgid "`Max Context: `{} tokens\n" msgstr "" -#: assistant\commands\base.py:335 +#: assistant\commands\base.py:354 msgid "`Context Fill: `{:.1f}%\n" msgstr "" -#: assistant\commands\base.py:336 +#: assistant\commands\base.py:355 msgid "`Model: `{}\n" msgstr "" -#: assistant\commands\base.py:338 +#: assistant\commands\base.py:357 msgid "**Token Breakdown**\n" msgstr "" -#: assistant\commands\base.py:339 +#: assistant\commands\base.py:358 msgid "`System Prompt: `{}\n" msgstr "" -#: assistant\commands\base.py:340 +#: assistant\commands\base.py:359 msgid "`Initial Prompt: `{}\n" msgstr "" -#: assistant\commands\base.py:341 +#: assistant\commands\base.py:360 msgid "`Channel Prompt: `{}\n" msgstr "" -#: assistant\commands\base.py:342 +#: assistant\commands\base.py:361 msgid "`Function Schemas: `{} ({} functions)\n" msgstr "" -#: assistant\commands\base.py:345 +#: assistant\commands\base.py:364 msgid "`Conversation: `{}\n" msgstr "" -#: assistant\commands\base.py:346 +#: assistant\commands\base.py:365 msgid "`Total: `{}\n" msgstr "" -#: assistant\commands\base.py:348 +#: assistant\commands\base.py:367 msgid "**Message Breakdown**\n" msgstr "" -#: assistant\commands\base.py:349 +#: assistant\commands\base.py:368 msgid "`System/Developer: `{}\n" msgstr "" -#: assistant\commands\base.py:350 +#: assistant\commands\base.py:369 msgid "`User Messages: `{}\n" msgstr "" -#: assistant\commands\base.py:351 +#: assistant\commands\base.py:370 msgid "`Assistant Messages: `{}\n" msgstr "" -#: assistant\commands\base.py:352 +#: assistant\commands\base.py:371 msgid "`Tool Results: `{}\n" msgstr "" -#: assistant\commands\base.py:353 +#: assistant\commands\base.py:372 msgid "`Images: `{}\n" msgstr "" -#: assistant\commands\base.py:354 +#: assistant\commands\base.py:373 msgid "`Compaction Summaries:`{}\n" msgstr "" -#: assistant\commands\base.py:356 +#: assistant\commands\base.py:375 msgid "**Compaction**\n" msgstr "" -#: assistant\commands\base.py:357 +#: assistant\commands\base.py:376 msgid "`Times Compacted: `{}\n" msgstr "" -#: assistant\commands\base.py:367 +#: assistant\commands\base.py:386 msgid "Context Breakdown" msgstr "" -#: assistant\commands\base.py:372 +#: assistant\commands\base.py:391 msgid "Context for {}" msgstr "" -#: assistant\commands\base.py:380 +#: assistant\commands\base.py:399 #, docstring msgid "Compact your conversation using LLM summarization\n\n" " This summarizes older messages instead of deleting them, preserving\n" @@ -2670,35 +3545,35 @@ msgid "Compact your conversation using LLM summarization\n\n" " " msgstr "" -#: assistant\commands\base.py:391 +#: assistant\commands\base.py:411 msgid "No API key has been set!" msgstr "" -#: assistant\commands\base.py:393 +#: assistant\commands\base.py:413 msgid "Conversation compaction is disabled in this server." msgstr "" -#: assistant\commands\base.py:404 +#: assistant\commands\base.py:424 msgid "Only moderators can compact channel conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:409 +#: assistant\commands\base.py:429 msgid "You have no conversation history in this channel." msgstr "" -#: assistant\commands\base.py:414 +#: assistant\commands\base.py:434 msgid "Not enough messages to compact (need more than {})." msgstr "" -#: assistant\commands\base.py:434 +#: assistant\commands\base.py:453 msgid "Conversation compacted! ({} compactions total for this conversation)" msgstr "" -#: assistant\commands\base.py:439 +#: assistant\commands\base.py:458 msgid "Compaction was not needed or failed." msgstr "" -#: assistant\commands\base.py:444 +#: assistant\commands\base.py:463 #, docstring msgid "\n" " Reset your conversation with the bot\n\n" @@ -2708,112 +3583,129 @@ msgstr "\n" "Setzen Sie Ihre Unterhaltung mit dem Bot zurück\n\n" "Dadurch wird der gesamte Nachrichtenverlauf zwischen Ihnen und dem Bot für diesen Kanal gelöscht " -#: assistant\commands\base.py:457 +#: assistant\commands\base.py:476 msgid "Only moderators can clear channel conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:461 +#: assistant\commands\base.py:481 msgid "Your conversation in this channel has been reset!" msgstr "Ihre Konversation in diesem Kanal wurde zurückgesetzt!" -#: assistant\commands\base.py:467 +#: assistant\commands\base.py:486 +#, docstring +msgid "Cancel the active assistant response for this channel" +msgstr "" + +#: assistant\commands\base.py:494 +msgid "Only moderators can cancel channel conversations when collaborative conversations are enabled!" +msgstr "" + +#: assistant\commands\base.py:499 +msgid "There is no active assistant response to cancel in this channel." +msgstr "" + +#: assistant\commands\base.py:500 +msgid "The active assistant response for this channel has been cancelled." +msgstr "" + +#: assistant\commands\base.py:506 #, docstring msgid "\n" " Pop the last message from your conversation\n" " " msgstr "" -#: assistant\commands\base.py:478 +#: assistant\commands\base.py:517 msgid "Only moderators can pop messages from conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:482 assistant\commands\base.py:743 +#: assistant\commands\base.py:521 assistant\commands\base.py:788 msgid "There are no messages in this conversation yet!" msgstr "" -#: assistant\commands\base.py:487 +#: assistant\commands\base.py:526 msgid "Removed the last message from this conversation" msgstr "" -#: assistant\commands\base.py:507 +#: assistant\commands\base.py:546 #, docstring msgid "\n" " Get a summary of whats going on in a channel\n" " " msgstr "" -#: assistant\commands\base.py:513 +#: assistant\commands\base.py:552 msgid "Invalid timeframe! Please use a valid time format like `1h` for an hour" msgstr "" -#: assistant\commands\base.py:516 +#: assistant\commands\base.py:555 msgid "The maximum timeframe is 48 hours!" msgstr "" -#: assistant\commands\base.py:524 +#: assistant\commands\base.py:563 msgid "Only moderators can summarize conversations!" msgstr "" -#: assistant\commands\base.py:531 +#: assistant\commands\base.py:570 msgid "You don't have permission to view the channel!" msgstr "" -#: assistant\commands\base.py:538 +#: assistant\commands\base.py:577 msgid "I don't have permission to view the channel!" msgstr "" -#: assistant\commands\base.py:561 +#: assistant\commands\base.py:600 msgid "No messages found to summarize within that timeframe!" msgstr "" -#: assistant\commands\base.py:563 +#: assistant\commands\base.py:602 msgid "Not enough messages found to summarize within that timeframe!" msgstr "" -#: assistant\commands\base.py:664 +#: assistant\commands\base.py:706 msgid "The request timed out!" msgstr "" -#: assistant\commands\base.py:675 +#: assistant\commands\base.py:717 msgid "Failed to get response" msgstr "" -#: assistant\commands\base.py:678 +#: assistant\commands\base.py:720 msgid "No response was generated!" msgstr "" -#: assistant\commands\base.py:685 +#: assistant\commands\base.py:727 msgid "Timeframe: {}" msgstr "" -#: assistant\commands\base.py:692 assistant\commands\base.py:702 +#: assistant\commands\base.py:734 assistant\commands\base.py:744 msgid "Channel" msgstr "" -#: assistant\commands\base.py:724 +#: assistant\commands\base.py:769 #, docstring msgid "\n" " Copy the conversation to another channel, thread, or forum\n" " " msgstr "" -#: assistant\commands\base.py:735 +#: assistant\commands\base.py:780 msgid "Only moderators can copy conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:746 +#: assistant\commands\base.py:791 msgid "You cannot copy a conversation to a channel you can't see!" msgstr "" -#: assistant\commands\base.py:752 +#: assistant\commands\base.py:797 msgid "This conversation has been overwritten in {}" msgstr "" -#: assistant\commands\base.py:754 +#: assistant\commands\base.py:799 msgid "This conversation has been copied over to {}" msgstr "" -#: assistant\commands\base.py:764 +#: assistant\commands\base.py:809 #, docstring msgid "\n" " Set a system prompt for this conversation!\n\n" @@ -2822,28 +3714,28 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:773 +#: assistant\commands\base.py:818 msgid "Conversation system prompt overriding is **Disabled**." msgstr "" -#: assistant\commands\base.py:783 +#: assistant\commands\base.py:828 msgid "Only moderators can set conversation prompts when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:803 +#: assistant\commands\base.py:848 msgid "This prompt is uses {} tokens which is more than 90% of the maximum tokens allowed per conversation!\n" "Write a prompt using {} tokens or less to leave 10% of your token limit for responses" msgstr "" -#: assistant\commands\base.py:812 +#: assistant\commands\base.py:857 msgid "System prompt has been set for this conversation!" msgstr "" -#: assistant\commands\base.py:814 +#: assistant\commands\base.py:859 msgid "System prompt has been **Removed** for this conversation!" msgstr "" -#: assistant\commands\base.py:826 +#: assistant\commands\base.py:871 #, docstring msgid "\n" " View the current transcript of a conversation\n\n" @@ -2852,51 +3744,51 @@ msgid "\n" msgstr "Zeigen Sie die aktuelle Mitschrift eines Gesprächs an.\n\n" "Dies dient hauptsächlich zu Moderationszwecken " -#: assistant\commands\base.py:838 +#: assistant\commands\base.py:883 msgid "You have no conversation in this channel!" msgstr "Sie haben keine Unterhaltung in diesem Kanal!" -#: assistant\commands\base.py:851 +#: assistant\commands\base.py:896 msgid "Here is your conversation transcript!" msgstr "Hier ist Ihr Gesprächsprotokoll!\n" "Hier ist Ihr Gesprächsprotokoll!" -#: assistant\commands\base.py:857 +#: assistant\commands\base.py:902 #, docstring msgid "\n" " Import a conversation from a file\n" " " msgstr "" -#: assistant\commands\base.py:862 +#: assistant\commands\base.py:907 msgid "Please attach a file to import the conversation from!" msgstr "" -#: assistant\commands\base.py:864 +#: assistant\commands\base.py:909 msgid "Please only attach one file to import the conversation from!" msgstr "" -#: assistant\commands\base.py:867 +#: assistant\commands\base.py:912 msgid "Please upload a valid JSON file." msgstr "" -#: assistant\commands\base.py:872 +#: assistant\commands\base.py:917 msgid "Failed to parse conversation file." msgstr "" -#: assistant\commands\base.py:878 +#: assistant\commands\base.py:923 msgid "The conversation file is not in the correct format. It should be a list of messages." msgstr "" -#: assistant\commands\base.py:888 +#: assistant\commands\base.py:933 msgid "You do not have permission to import conversations." msgstr "" -#: assistant\commands\base.py:893 +#: assistant\commands\base.py:938 msgid "Conversation has been imported successfully!" msgstr "" -#: assistant\commands\base.py:899 +#: assistant\commands\base.py:944 #, docstring msgid "\n" " Fetch related embeddings according to the current topn setting along with their scores\n\n" @@ -2904,31 +3796,31 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:906 +#: assistant\commands\base.py:951 msgid "You do not have any embeddings configured!" msgstr "Sie haben keine Einbettungen konfiguriert!" -#: assistant\commands\base.py:908 +#: assistant\commands\base.py:953 msgid "Top N is set to 0 so no embeddings will be returned" msgstr "Top N ist auf 0 gesetzt, sodass keine Einbettungen zurückgegeben werden" -#: assistant\commands\base.py:914 +#: assistant\commands\base.py:959 msgid "Failed to get embedding for your query" msgstr "Die Einbettung für Ihre Anfrage konnte nicht gefunden werden" -#: assistant\commands\base.py:923 +#: assistant\commands\base.py:968 msgid "No embeddings could be related to this query with the current settings" msgstr "Mit den aktuellen Einstellungen konnten keine Einbettungen mit dieser Abfrage in Verbindung gebracht werden" -#: assistant\commands\base.py:927 +#: assistant\commands\base.py:972 msgid "`Entry Name: `{}\n" msgstr "`Eintrag Name: {}`\n" -#: assistant\commands\base.py:928 +#: assistant\commands\base.py:973 msgid "`Relatedness: `{}\n" msgstr "`Zugehörigkeit: {}`\n" -#: assistant\commands\base.py:929 +#: assistant\commands\base.py:974 msgid "`Dimensions: `{}\n" msgstr "`Abmessungen: {}`\n" From 5a3ce090d20e5e20c90128c2ac272d2e6be9c4ee Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Mon, 1 Jun 2026 11:10:45 -0400 Subject: [PATCH 052/104] New translations messages.pot (Korean) [ci skip] --- assistant/commands/locales/ko-KR.po | 2687 ++++++++++++++++++--------- 1 file changed, 1790 insertions(+), 897 deletions(-) diff --git a/assistant/commands/locales/ko-KR.po b/assistant/commands/locales/ko-KR.po index 352231cd8..26409c7dc 100644 --- a/assistant/commands/locales/ko-KR.po +++ b/assistant/commands/locales/ko-KR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-20 01:28\n" +"POT-Creation-Date: 2026-06-01 09:46-0400\n" +"PO-Revision-Date: 2026-06-01 15:10\n" "Last-Translator: \n" "Language-Team: Korean\n" "MIME-Version: 1.0\n" @@ -17,19 +17,19 @@ msgstr "" "X-Crowdin-File-ID: 53\n" "Language: ko_KR\n" -#: assistant\commands\admin.py:67 +#: assistant\commands\admin.py:89 msgid "Endpoint override must be a full base URL, for example `http://127.0.0.1:1234/v1` or `https://example.com/api/v1`." msgstr "" -#: assistant\commands\admin.py:72 +#: assistant\commands\admin.py:94 msgid "Endpoint override must point at the OpenAI-compatible API base path ending in `/v1`. Do not include routes like `/chat/completions` or `/models`." msgstr "" -#: assistant\commands\admin.py:81 +#: assistant\commands\admin.py:103 msgid "Empty" msgstr "" -#: assistant\commands\admin.py:90 +#: assistant\commands\admin.py:112 #, docstring msgid "\n" " Setup the assistant\n\n" @@ -37,69 +37,166 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:133 +#: assistant\commands\admin.py:122 +#, docstring +msgid "Manage API keys and endpoint URLs" +msgstr "" + +#: assistant\commands\admin.py:127 +#, docstring +msgid "Per-guild endpoint and key overrides (chat + embeddings)" +msgstr "" + +#: assistant\commands\admin.py:132 +#, docstring +msgid "Configure general guild settings" +msgstr "" + +#: assistant\commands\admin.py:137 +#, docstring +msgid "Configure assistant prompts" +msgstr "" + +#: assistant\commands\admin.py:142 +#, docstring +msgid "Configure feature toggles" +msgstr "" + +#: assistant\commands\admin.py:147 +#, docstring +msgid "Configure auto-answer settings" +msgstr "" + +#: assistant\commands\admin.py:152 +#, docstring +msgid "Configure trigger phrase system" +msgstr "" + +#: assistant\commands\admin.py:157 +#, docstring +msgid "Configure content filtering" +msgstr "" + +#: assistant\commands\admin.py:162 +#, docstring +msgid "Configure token and retention limits" +msgstr "" + +#: assistant\commands\admin.py:167 +#, docstring +msgid "Configure model behavior parameters" +msgstr "" + +#: assistant\commands\admin.py:172 +#, docstring +msgid "Configure embeddings and RAG settings" +msgstr "" + +#: assistant\commands\admin.py:177 +#, docstring +msgid "Admin maintenance commands" +msgstr "" + +#: assistant\commands\admin.py:183 +#, docstring +msgid "Configure OpenRouter response & prompt caching." +msgstr "" + +#: assistant\commands\admin.py:188 +#, docstring +msgid "Manage role-based overrides" +msgstr "" + +#: assistant\commands\admin.py:193 +#, docstring +msgid "Manage scheduled autonomous tasks" +msgstr "" + +#: assistant\commands\admin.py:198 +#, docstring +msgid "Configure conversation compaction" +msgstr "" + +#: assistant\commands\admin.py:203 +#, docstring +msgid "AI moderation: scan messages, review flagged ones, and propose staff actions." +msgstr "" + +#: assistant\commands\admin.py:244 msgid "... and {} more" msgstr "" -#: assistant\commands\admin.py:143 +#: assistant\commands\admin.py:255 msgid "Configured chat model" msgstr "" -#: assistant\commands\admin.py:144 +#: assistant\commands\admin.py:256 msgid "{}: **{}**" msgstr "" -#: assistant\commands\admin.py:147 assistant\commands\admin.py:180 +#: assistant\commands\admin.py:259 assistant\commands\admin.py:294 msgid "No endpoint model cache is available yet. Run `{}` to refresh it, or enter a model id manually." msgstr "" -#: assistant\commands\admin.py:154 +#: assistant\commands\admin.py:266 msgid "Runtime chat model: **{}**" msgstr "" -#: assistant\commands\admin.py:159 +#: assistant\commands\admin.py:271 msgid "Discovered chat models:\n" "{}" msgstr "" -#: assistant\commands\admin.py:165 +#: assistant\commands\admin.py:277 msgid "No chat models were discovered from this endpoint yet. You can still enter a model id manually." msgstr "" -#: assistant\commands\admin.py:169 assistant\commands\admin.py:204 +#: assistant\commands\admin.py:281 assistant\commands\admin.py:318 msgid "Use this command again with one of these model ids, or enter another id manually if your endpoint supports it." msgstr "" -#: assistant\commands\admin.py:177 +#: assistant\commands\admin.py:291 msgid "Configured embedding model: **{}**" msgstr "" -#: assistant\commands\admin.py:187 +#: assistant\commands\admin.py:301 msgid "Runtime embedding model: **{}**" msgstr "" -#: assistant\commands\admin.py:192 +#: assistant\commands\admin.py:306 msgid "Discovered embedding models:\n" "{}" msgstr "" -#: assistant\commands\admin.py:198 +#: assistant\commands\admin.py:312 msgid "No embedding models were discovered from this endpoint yet. You can still enter a model id manually." msgstr "" -#: assistant\commands\admin.py:217 +#: assistant\commands\admin.py:332 msgid "embedding" msgstr "" -#: assistant\commands\admin.py:217 +#: assistant\commands\admin.py:332 msgid "chat" msgstr "" -#: assistant\commands\admin.py:220 -msgid "Note: `{}` is not in the endpoint's discovered {} model list. Requests will currently resolve to `{}` unless the endpoint starts advertising or returning that model." +#: assistant\commands\admin.py:351 +msgid "Note: `{}` is not in the endpoint's discovered {} model list. Requests on this endpoint will automatically use `{}` instead." msgstr "" -#: assistant\commands\admin.py:228 +#: assistant\commands\admin.py:354 +msgid "Note: `{}` is not in the endpoint's discovered {} model list. The cog will still try to use it directly, but the endpoint may reject it." +msgstr "" + +#: assistant\commands\admin.py:400 +msgid "Warning: stored embeddings currently use mixed dimensions ({}). Run `{}` to resync them with `{}`." +msgstr "" + +#: assistant\commands\admin.py:412 +msgid "Warning: stored embeddings are `{}` dimensions, but `{}` returns `{}` dimensions. Run `{}` to resync them after switching models." +msgstr "" + +#: assistant\commands\admin.py:443 #, docstring msgid "\n" " View current settings\n\n" @@ -108,537 +205,656 @@ msgid "\n" msgstr "현재 설정 보기\n\n" "현재 채널을 전송하려면 `[p]어시스턴트 보기 false`를 사용하세요 " -#: assistant\commands\admin.py:248 +#: assistant\commands\admin.py:468 msgid "`OpenAI Version: `{}\n" msgstr "`OpenAI 버전: `{}\n" -#: assistant\commands\admin.py:249 +#: assistant\commands\admin.py:469 msgid "`OpenAI API Status: `{}\n" msgstr "" -#: assistant\commands\admin.py:250 +#: assistant\commands\admin.py:470 msgid "`Draw Command: `{}\n" msgstr "" -#: assistant\commands\admin.py:250 assistant\commands\admin.py:295 -#: assistant\commands\admin.py:302 assistant\commands\admin.py:312 -#: assistant\commands\admin.py:396 assistant\commands\admin.py:1346 +#: assistant\commands\admin.py:470 assistant\commands\admin.py:525 +#: assistant\commands\admin.py:532 assistant\commands\admin.py:542 +#: assistant\commands\admin.py:679 assistant\commands\admin.py:1695 msgid "Enabled" msgstr "" -#: assistant\commands\admin.py:250 assistant\commands\admin.py:295 -#: assistant\commands\admin.py:302 assistant\commands\admin.py:312 -#: assistant\commands\admin.py:396 assistant\commands\admin.py:1346 +#: assistant\commands\admin.py:470 assistant\commands\admin.py:525 +#: assistant\commands\admin.py:532 assistant\commands\admin.py:542 +#: assistant\commands\admin.py:604 assistant\commands\admin.py:679 +#: assistant\commands\admin.py:1695 msgid "Disabled" msgstr "" -#: assistant\commands\admin.py:251 +#: assistant\commands\admin.py:471 msgid "`Model: `{}\n" msgstr "`모델: `{}\n" -#: assistant\commands\admin.py:252 +#: assistant\commands\admin.py:472 msgid "`Embed Model: `{}\n" msgstr "" -#: assistant\commands\admin.py:253 +#: assistant\commands\admin.py:473 msgid "`Enabled: `{}\n" msgstr "`활성화됨: `{}\n" -#: assistant\commands\admin.py:254 +#: assistant\commands\admin.py:474 msgid "`Timezone: `{}\n" msgstr "`표준 시간대: `{}\n" -#: assistant\commands\admin.py:255 +#: assistant\commands\admin.py:475 msgid "`Channel: `{}\n" msgstr "`채널: `{}\n" -#: assistant\commands\admin.py:255 assistant\commands\admin.py:405 -#: assistant\commands\admin.py:412 +#: assistant\commands\admin.py:475 assistant\commands\admin.py:688 +#: assistant\commands\admin.py:695 msgid "Not Set" msgstr "설정되지 않음" -#: assistant\commands\admin.py:256 +#: assistant\commands\admin.py:476 msgid "`? Required: `{}\n" msgstr "`? 필수입니다: `{}\n" -#: assistant\commands\admin.py:257 +#: assistant\commands\admin.py:477 msgid "`Question Mode: `{}\n" msgstr "" -#: assistant\commands\admin.py:258 +#: assistant\commands\admin.py:478 msgid "`Mention on Reply: `{}\n" msgstr "" -#: assistant\commands\admin.py:259 +#: assistant\commands\admin.py:479 msgid "`Respond to Mentions: `{}\n" msgstr "" -#: assistant\commands\admin.py:260 +#: assistant\commands\admin.py:480 msgid "`Collaborative Mode: `{}\n" msgstr "" -#: assistant\commands\admin.py:262 +#: assistant\commands\admin.py:481 msgid "`Max Retention: `{}\n" msgstr "`최대 보존 기간: `{}\n" -#: assistant\commands\admin.py:263 +#: assistant\commands\admin.py:482 msgid "`Retention Expire: `{}s\n" msgstr "`보존 만료: `{}s\n" -#: assistant\commands\admin.py:264 +#: assistant\commands\admin.py:483 msgid "`Max Tokens: `{}\n" msgstr "`최대 토큰: `{}\n" -#: assistant\commands\admin.py:265 +#: assistant\commands\admin.py:484 msgid "`Max Response Tokens: `{}\n" msgstr "`최대 응답 토큰: `{}\n" -#: assistant\commands\admin.py:266 +#: assistant\commands\admin.py:485 msgid "`Min Length: `{}\n" msgstr "`최소 길이: `{}\n" -#: assistant\commands\admin.py:267 +#: assistant\commands\admin.py:486 msgid "`Temperature: `{}\n" msgstr "`온도: `{}\n" -#: assistant\commands\admin.py:268 +#: assistant\commands\admin.py:487 msgid "`Frequency Penalty: `{}\n" msgstr "" -#: assistant\commands\admin.py:269 +#: assistant\commands\admin.py:488 msgid "`Presence Penalty: `{}\n" msgstr "" -#: assistant\commands\admin.py:270 +#: assistant\commands\admin.py:489 msgid "`Seed: `{}\n" msgstr "" -#: assistant\commands\admin.py:271 +#: assistant\commands\admin.py:490 msgid "`Vision Resolution: `{}\n" msgstr "" -#: assistant\commands\admin.py:272 +#: assistant\commands\admin.py:491 msgid "`Reasoning Effort: `{}\n" msgstr "" -#: assistant\commands\admin.py:273 +#: assistant\commands\admin.py:492 msgid "`Verbosity: `{}\n" msgstr "" -#: assistant\commands\admin.py:274 +#: assistant\commands\admin.py:493 msgid "`System Prompt: `{} tokens\n" msgstr "" -#: assistant\commands\admin.py:275 +#: assistant\commands\admin.py:494 msgid "`User Prompt: `{} tokens\n" msgstr "" -#: assistant\commands\admin.py:276 +#: assistant\commands\admin.py:495 msgid "`Endpoint Override: `{}\n" msgstr "" -#: assistant\commands\admin.py:280 +#: assistant\commands\admin.py:495 assistant\commands\admin.py:496 +#: assistant\commands\admin.py:3518 +msgid "Not set" +msgstr "" + +#: assistant\commands\admin.py:496 +msgid "`Guild Endpoint: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:500 +msgid "`Effective Model: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:502 +msgid "`Effective Embed: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:505 msgid "Assistant Settings" msgstr "어시스턴트 설정" -#: assistant\commands\admin.py:288 +#: assistant\commands\admin.py:515 assistant\commands\admin.py:978 +#: assistant\commands\admin.py:1062 msgid "Endpoint Runtime" msgstr "" -#: assistant\commands\admin.py:290 +#: assistant\commands\admin.py:520 msgid "Auto Answer" msgstr "" -#: assistant\commands\admin.py:291 +#: assistant\commands\admin.py:521 msgid "Auto-answer will trigger the bot outside of the assistant channel if a question is detected and an embedding is not found.\n" msgstr "" -#: assistant\commands\admin.py:294 +#: assistant\commands\admin.py:524 msgid "`Model: `{}\n" msgstr "" -#: assistant\commands\admin.py:295 assistant\commands\admin.py:302 +#: assistant\commands\admin.py:525 assistant\commands\admin.py:532 msgid "`Status: `{}\n" msgstr "" -#: assistant\commands\admin.py:296 +#: assistant\commands\admin.py:526 msgid "`Threshold: `{}\n" msgstr "" -#: assistant\commands\admin.py:297 assistant\commands\admin.py:304 +#: assistant\commands\admin.py:527 assistant\commands\admin.py:534 msgid "`Ignored: `{}\n" msgstr "" -#: assistant\commands\admin.py:300 +#: assistant\commands\admin.py:530 msgid "Trigger Words" msgstr "" -#: assistant\commands\admin.py:301 +#: assistant\commands\admin.py:531 msgid "Trigger words allow the bot to respond to messages containing specific keywords or regex patterns.\n" msgstr "" -#: assistant\commands\admin.py:303 +#: assistant\commands\admin.py:533 msgid "`Phrases: `{}\n" msgstr "" -#: assistant\commands\admin.py:305 +#: assistant\commands\admin.py:535 assistant\commands\admin.py:3515 msgid "None" msgstr "" -#: assistant\commands\admin.py:307 +#: assistant\commands\admin.py:537 msgid "`Has Prompt:`{}\n" msgstr "" -#: assistant\commands\admin.py:307 +#: assistant\commands\admin.py:537 msgid "Yes" msgstr "" -#: assistant\commands\admin.py:307 +#: assistant\commands\admin.py:537 msgid "No" msgstr "" -#: assistant\commands\admin.py:310 +#: assistant\commands\admin.py:540 msgid "Think Tags" msgstr "" -#: assistant\commands\admin.py:311 +#: assistant\commands\admin.py:541 msgid "Reasoning blocks wrapped in these tags are removed from chat output.\n" msgstr "" -#: assistant\commands\admin.py:312 +#: assistant\commands\admin.py:542 msgid "`Upload as Files:`{}\n" msgstr "" -#: assistant\commands\admin.py:313 +#: assistant\commands\admin.py:543 msgid "Prefix\n" "{}\n" "Suffix\n" "{}" msgstr "" -#: assistant\commands\admin.py:320 +#: assistant\commands\admin.py:550 msgid "System prompt override is **Allowed**, users can set a personal system prompt per convo." msgstr "" -#: assistant\commands\admin.py:322 +#: assistant\commands\admin.py:552 msgid "System prompt override is **Disabled**, users cannot set a personal system prompt per convo." msgstr "" -#: assistant\commands\admin.py:323 +#: assistant\commands\admin.py:553 msgid "\n" "*This will be restricted to mods if collaborative conversations are enabled!*" msgstr "" -#: assistant\commands\admin.py:324 +#: assistant\commands\admin.py:554 msgid "System Prompt Overriding" msgstr "" -#: assistant\commands\admin.py:332 +#: assistant\commands\admin.py:562 msgid "Channel Prompt Overrides" msgstr "" -#: assistant\commands\admin.py:343 +#: assistant\commands\admin.py:578 +msgid "• System prompt - `{}`" +msgstr "" + +#: assistant\commands\admin.py:581 +msgid "• Initial prompt - `{}`" +msgstr "" + +#: assistant\commands\admin.py:586 +msgid "• <#{}> - `{}`" +msgstr "" + +#: assistant\commands\admin.py:589 +msgid "⚠️ Cache Warning" +msgstr "" + +#: assistant\commands\admin.py:590 +msgid "These prompts contain dynamic variable placeholders that break prompt prefix caching on every request. Use `{prefix}floatingcontext` to move them to the floating context block instead.\n" +msgstr "" + +#: assistant\commands\admin.py:602 +msgid "Enabled ({}s TTL)" +msgstr "" + +#: assistant\commands\admin.py:607 +msgid "Off" +msgstr "" + +#: assistant\commands\admin.py:608 +msgid "5 minutes" +msgstr "" + +#: assistant\commands\admin.py:609 +msgid "1 hour" +msgstr "" + +#: assistant\commands\admin.py:612 +msgid "OpenRouter Caching" +msgstr "" + +#: assistant\commands\admin.py:614 +msgid "`Response Cache: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:615 +msgid "`Provider Prompt Cache: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:626 msgid "Auto-Reply Channels" msgstr "" -#: assistant\commands\admin.py:352 +#: assistant\commands\admin.py:635 msgid "Mixed (Please Refresh!)" msgstr "혼합 (새로 고침하세요!)" -#: assistant\commands\admin.py:354 +#: assistant\commands\admin.py:637 msgid "Synced!" msgstr "동기화되었습니다!" -#: assistant\commands\admin.py:356 +#: assistant\commands\admin.py:639 msgid "N/A" msgstr "N/A" -#: assistant\commands\admin.py:359 +#: assistant\commands\admin.py:642 msgid "`Top N Embeddings: `{}\n" msgstr "`상위 N 임베딩: `{}\n" -#: assistant\commands\admin.py:360 +#: assistant\commands\admin.py:643 msgid "`Min Relatedness: `{}\n" msgstr "`Min Relatedness: `{}\n" -#: assistant\commands\admin.py:361 +#: assistant\commands\admin.py:644 msgid "`Encodings: `{}" msgstr "" -#: assistant\commands\admin.py:365 +#: assistant\commands\admin.py:648 msgid "Embeddings ({})" msgstr "임베딩 ({})" -#: assistant\commands\admin.py:373 +#: assistant\commands\admin.py:656 msgid "The following roles/users can use the `think_and_plan` tool: " msgstr "" -#: assistant\commands\admin.py:378 +#: assistant\commands\admin.py:661 msgid "`Function Calling: `{}\n" msgstr "`함수 호출: `{}\n" -#: assistant\commands\admin.py:379 +#: assistant\commands\admin.py:662 msgid "`Maximum Recursion: `{}\n" msgstr "`최대 재귀: `{}\n" -#: assistant\commands\admin.py:380 +#: assistant\commands\admin.py:663 msgid "`Function Tokens: `{}\n" msgstr "`함수 토큰: `{}\n" -#: assistant\commands\admin.py:384 +#: assistant\commands\admin.py:667 msgid "The following cogs also have functions registered with the assistant\n" "{}" msgstr "다음 톱니바퀴에도 어시스턴트에 등록된 기능이 있습니다\n" "{}" -#: assistant\commands\admin.py:389 +#: assistant\commands\admin.py:672 msgid "Custom Functions ({})" msgstr "사용자 지정 함수 ({})" -#: assistant\commands\admin.py:394 +#: assistant\commands\admin.py:677 msgid "Max tokens" msgstr "" -#: assistant\commands\admin.py:396 +#: assistant\commands\admin.py:679 msgid "`Compaction: `{}\n" msgstr "" -#: assistant\commands\admin.py:397 +#: assistant\commands\admin.py:680 msgid "`Compaction Model: `{}\n" msgstr "" -#: assistant\commands\admin.py:397 +#: assistant\commands\admin.py:680 msgid "Same as chat" msgstr "" -#: assistant\commands\admin.py:398 +#: assistant\commands\admin.py:681 msgid "`Threshold: `{}\n" msgstr "" -#: assistant\commands\admin.py:400 +#: assistant\commands\admin.py:683 msgid "Context Compaction" msgstr "" -#: assistant\commands\admin.py:404 +#: assistant\commands\admin.py:687 msgid "API Key" msgstr "" -#: assistant\commands\admin.py:411 +#: assistant\commands\admin.py:694 msgid "Endpoint Override API Key" msgstr "" -#: assistant\commands\admin.py:419 +#: assistant\commands\admin.py:702 msgid "Regex Blacklist" msgstr "정규식 블랙리스트" -#: assistant\commands\admin.py:421 +#: assistant\commands\admin.py:704 msgid "Regex Failure Blocking" msgstr "정규식 실패 차단" -#: assistant\commands\admin.py:422 +#: assistant\commands\admin.py:705 msgid "Block reply if regex replacement fails: **{}**" msgstr "정규식 대체에 실패하면 답글을 차단합니다: **{}**" -#: assistant\commands\admin.py:427 +#: assistant\commands\admin.py:710 msgid "Conversations are stored persistently" msgstr "대화는 영구적으로 저장됩니다" -#: assistant\commands\admin.py:429 +#: assistant\commands\admin.py:712 msgid "conversations are stored in memory until reboot or reload" msgstr "대화는 재부팅하거나 다시 로드할 때까지 메모리에 저장됩니다" -#: assistant\commands\admin.py:431 +#: assistant\commands\admin.py:714 msgid "Persistent Conversations" msgstr "지속적인 대화" -#: assistant\commands\admin.py:445 +#: assistant\commands\admin.py:728 msgid "Blacklist" msgstr "블랙리스트" -#: assistant\commands\admin.py:457 +#: assistant\commands\admin.py:740 msgid "Model Role Overrides" msgstr "모델 역할 재정의" -#: assistant\commands\admin.py:468 +#: assistant\commands\admin.py:751 msgid "Max Token Role Overrides" msgstr "최대 토큰 역할 재정의" -#: assistant\commands\admin.py:479 +#: assistant\commands\admin.py:763 msgid "Max Message Retention Role Overrides" msgstr "최대 메시지 보존 역할 재정의" -#: assistant\commands\admin.py:491 +#: assistant\commands\admin.py:778 msgid "Max Message Retention Time Role Overrides" msgstr "최대 메시지 보존 시간 역할 재정의" -#: assistant\commands\admin.py:505 +#: assistant\commands\admin.py:793 msgid "Max Response Token Role Overrides" msgstr "최대 응답 토큰 역할 재정의" -#: assistant\commands\admin.py:516 +#: assistant\commands\admin.py:808 msgid "Reasoning Effort Role Overrides" msgstr "" -#: assistant\commands\admin.py:520 +#: assistant\commands\admin.py:815 msgid "Your Brave websearch API key is set!" msgstr "" -#: assistant\commands\admin.py:522 +#: assistant\commands\admin.py:817 msgid "Enables the use of the `search_web_brave` function\n" "Get your API key **[Here](https://brave.com/search/api/)**\n" msgstr "" -#: assistant\commands\admin.py:526 +#: assistant\commands\admin.py:821 msgid "Brave Websearch API key" msgstr "" -#: assistant\commands\admin.py:528 +#: assistant\commands\admin.py:823 msgid "Showing settings for {}" msgstr "{}에 대한 설정을 표시합니다" -#: assistant\commands\admin.py:534 +#: assistant\commands\admin.py:829 msgid "SystemPrompt" msgstr "시스템 프롬프트" -#: assistant\commands\admin.py:540 +#: assistant\commands\admin.py:835 msgid "InitialPrompt" msgstr "초기 프롬프트" -#: assistant\commands\admin.py:550 +#: assistant\commands\admin.py:845 msgid "Sent your current settings for this server in DMs!" msgstr "이 서버에 대한 현재 설정을 DM으로 보냈습니다!" -#: assistant\commands\admin.py:552 +#: assistant\commands\admin.py:847 msgid "You need to allow DMs so I can message you!" msgstr "내가 메시지를 보낼 수 있도록 DM을 허용해야 합니다!" -#: assistant\commands\admin.py:559 -#, docstring -msgid "View the token usage stats for this server" -msgstr "이 서버의 토큰 사용 통계를 확인하세요" - -#: assistant\commands\admin.py:562 -msgid "There is no usage data yet!" -msgstr "아직 사용 데이터가 없습니다!" - -#: assistant\commands\admin.py:593 -msgid "`Total: `{} (${} @ ${}/1k tokens)" -msgstr "`합계: `{} (${} @ ${}/1천 토큰)" - -#: assistant\commands\admin.py:600 -msgid "Free/Self-Hosted" -msgstr "무료/자체 호스팅" - -#: assistant\commands\admin.py:604 -msgid "`Input: `{} (${} @ ${}/1k tokens)\n" -"`Output: `{} (${} @ ${}/1k tokens)\n" -"`Total: `{} (${})" -msgstr "`입력: `{} (${} @ ${}/1k 토큰)\n" -"`출력: `{} (${} @ ${}/1k 토큰)\n" -"`합계: `{} (${})" - -#: assistant\commands\admin.py:618 -msgid "**Overall Token Usage and Cost**\n" -"`Input: `{} (${})\n" -"`Output: `{} (${})\n" -"`Total: `{} (${})\n" -"`Tool Calls: `{}\n" -msgstr "" - -#: assistant\commands\admin.py:639 -#, docstring -msgid "Reset the token usage stats for this server" -msgstr "이 서버의 토큰 사용 통계를 재설정하세요" - -#: assistant\commands\admin.py:642 -msgid "Token usage stats have been reset!" -msgstr "토큰 사용 통계가 초기화되었습니다!" - -#: assistant\commands\admin.py:648 +#: assistant\commands\admin.py:854 #, docstring msgid "\n" -" Set this server's API key\n" +" Set this server's API key\n\n" +" Used for all requests from this guild - whether routing to OpenAI\n" +" directly, the guild's endpoint override, or the global endpoint\n" +" override. If not set, the global endpoint key is used as a fallback.\n" " " msgstr "" -#: assistant\commands\admin.py:654 +#: assistant\commands\admin.py:864 msgid "Click to set this server's API key\n\n" "To remove your key, enter `none`" msgstr "" -#: assistant\commands\admin.py:663 +#: assistant\commands\admin.py:873 msgid "API key has been removed!" msgstr "" -#: assistant\commands\admin.py:666 assistant\commands\admin.py:695 -#: assistant\commands\admin.py:723 +#: assistant\commands\admin.py:876 assistant\commands\admin.py:905 +#: assistant\commands\admin.py:938 assistant\commands\admin.py:3952 msgid "No API key was entered!" msgstr "API 키가 입력되지 않았습니다!" -#: assistant\commands\admin.py:669 +#: assistant\commands\admin.py:879 msgid "API key has been set!" msgstr "" -#: assistant\commands\admin.py:679 +#: assistant\commands\admin.py:889 #, docstring msgid "\n" -" Enables use of the `search_web_brave` function\n\n" -" Get your API key **[Here](https://brave.com/search/api/)**\n" +" Set the Brave Search API key (owner) - used by the web-search tool\n\n" +" Get your API key **[here](https://brave.com/search/api/)**.\n" " " msgstr "" -#: assistant\commands\admin.py:685 +#: assistant\commands\admin.py:895 msgid "Click to set your API key\n\n" "To remove your keys, enter `none`" msgstr "" -#: assistant\commands\admin.py:693 +#: assistant\commands\admin.py:903 msgid "Brave API key has been removed!" msgstr "" -#: assistant\commands\admin.py:698 +#: assistant\commands\admin.py:908 msgid "Brave API key has been set!" msgstr "" -#: assistant\commands\admin.py:706 +#: assistant\commands\admin.py:916 #, docstring msgid "\n" -" Set the global API key used for the custom endpoint override\n\n" -" This key is only used when an endpoint override is configured and a guild\n" +" Set the global API key for the default endpoint override (owner)\n\n" +" This key is only used when a global endpoint override is set\n" +" (see `[p]assistant api globalendpoint`) and the requesting guild\n" " has not provided its own API key.\n" " " msgstr "" -#: assistant\commands\admin.py:713 +#: assistant\commands\admin.py:924 msgid "Click to set the API key used for the endpoint override\n\n" "To remove the key, enter `none`" msgstr "" -#: assistant\commands\admin.py:721 +#: assistant\commands\admin.py:933 msgid "Endpoint override API key has been removed!" msgstr "" -#: assistant\commands\admin.py:726 +#: assistant\commands\admin.py:942 msgid "Endpoint override API key has been set!" msgstr "" -#: assistant\commands\admin.py:732 +#: assistant\commands\admin.py:952 +#, docstring +msgid "\n" +" Set this guild's endpoint URL (used for both chat and embeddings)\n\n" +" The endpoint must be a full base URL ending in `/v1`, for example:\n" +" `https://openrouter.ai/api/v1`\n\n" +" Set the API key for this endpoint with `[p]assistant api key`.\n\n" +" After setting, use `[p]assistant set model` (no args) to open an\n" +" interactive model picker. Router endpoints like OpenRouter also\n" +" accept special aliases like `openrouter/auto` or `openrouter/free`.\n\n" +" Run without arguments to view the current guild endpoint.\n" +" Use `none` to remove the guild endpoint override.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:972 +msgid "Guild Endpoint Override" +msgstr "" + +#: assistant\commands\admin.py:973 +msgid "Current endpoint: `{}`" +msgstr "" + +#: assistant\commands\admin.py:983 +msgid "No guild endpoint override is set." +msgstr "" + +#: assistant\commands\admin.py:990 +msgid "Guild endpoint override has been removed!" +msgstr "" + +#: assistant\commands\admin.py:993 +msgid "No guild endpoint override was set." +msgstr "" + +#: assistant\commands\admin.py:1002 +msgid "Guild endpoint override set to `{}`" +msgstr "" + +#: assistant\commands\admin.py:1009 +msgid "Endpoint probed successfully!\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:1024 +msgid "Could not probe the endpoint automatically. You can still use it, but model discovery may be limited." +msgstr "" + +#: assistant\commands\admin.py:1032 +#, docstring +msgid "Clear this guild's endpoint override (URL and cached profile)" +msgstr "" + +#: assistant\commands\admin.py:1035 +msgid "No per-guild endpoint override is set." +msgstr "" + +#: assistant\commands\admin.py:1038 +msgid "Guild endpoint override has been cleared!" +msgstr "" + +#: assistant\commands\admin.py:1044 +#, docstring +msgid "Show this guild's API key and endpoint override status" +msgstr "" + +#: assistant\commands\admin.py:1047 +msgid "Guild API Overrides" +msgstr "" + +#: assistant\commands\admin.py:1051 +msgid "Guild API Key" +msgstr "" + +#: assistant\commands\admin.py:1052 +msgid "Set" +msgstr "" + +#: assistant\commands\admin.py:1052 +msgid "Not set (using global key)" +msgstr "" + +#: assistant\commands\admin.py:1056 +msgid "Endpoint Override" +msgstr "" + +#: assistant\commands\admin.py:1057 +msgid "Not set (using global)" +msgstr "" + +#: assistant\commands\admin.py:1070 #, docstring msgid "Set the timezone used for prompt placeholders" msgstr "프롬프트 자리 표시자에 사용되는 시간대를 설정하세요" -#: assistant\commands\admin.py:738 +#: assistant\commands\admin.py:1080 msgid "Invalid Timezone, did you mean `{}`?" msgstr "시간대가 잘못되었습니다. `{}`를 의미하시나요?" -#: assistant\commands\admin.py:740 +#: assistant\commands\admin.py:1082 msgid "Timezone set to **{}** (`{}`)" msgstr "표준 시간대를 **{}**(`{}`)로 설정합니다" -#: assistant\commands\admin.py:747 +#: assistant\commands\admin.py:1089 #, docstring msgid "\n" -" Set the initial prompt for GPT to use\n\n" +" Set the system prompt for GPT to use\n\n" " Check out [This Guide](https://platform.openai.com/docs/guides/prompt-engineering) for prompting help.\n\n" " **Placeholders**\n" " - **botname**: [botname]\n" @@ -677,72 +893,80 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:792 assistant\commands\admin.py:859 -#: assistant\commands\admin.py:941 assistant\commands\admin.py:998 -#: assistant\commands\admin.py:1275 assistant\commands\admin.py:1406 -#: assistant\commands\admin.py:1448 assistant\commands\base.py:791 +#: assistant\commands\admin.py:1134 assistant\commands\admin.py:1191 +#: assistant\commands\admin.py:1285 assistant\commands\admin.py:1356 +#: assistant\commands\admin.py:1622 assistant\commands\admin.py:1718 +#: assistant\commands\admin.py:1760 assistant\commands\base.py:836 msgid "Failed to read `{}`, bot owner can use `{}` for more information" msgstr "읽기 실패: `{}`, 봇 소유자는 더 많은 정보를 얻기 위해 `{}`를 사용할 수 있습니다" -#: assistant\commands\admin.py:810 assistant\commands\admin.py:882 -#: assistant\commands\admin.py:959 +#: assistant\commands\admin.py:1152 assistant\commands\admin.py:1303 +#: assistant\commands\admin.py:1379 msgid "Your system and initial prompt combined will use {} tokens!\n" "Write a prompt combination using {} tokens or less to leave 10% of your configured max tokens for your response." msgstr "시스템과 초기 프롬프트가 {} 토큰을 사용합니다!\n" "응답에 사용할 토큰의 최대 10%를 남기기 위해 {} 토큰 이하로 프롬프트 조합을 작성하세요." -#: assistant\commands\admin.py:818 -msgid "The initial prompt has been removed!" -msgstr "초기 프롬프트가 제거되었습니다!" +#: assistant\commands\admin.py:1160 +msgid "The system prompt has been removed!" +msgstr "시스템 프롬프트가 제거되었습니다!" -#: assistant\commands\admin.py:821 -msgid "Please include an initial prompt or .txt file!\n" +#: assistant\commands\admin.py:1163 +msgid "Please include a system prompt or .txt file!\n" "Use `{}` to view details for this command" -msgstr "초기 프롬프트 또는 .txt 파일을 포함하세요!\n" +msgstr "시스템 프롬프트 또는 .txt 파일을 포함하세요!\n" "이 명령에 대한 자세한 내용을 보려면 `{}`를 사용하세요" -#: assistant\commands\admin.py:827 -msgid "The initial prompt has been overwritten!" -msgstr "초기 프롬프트가 덮어씌워졌습니다!" +#: assistant\commands\admin.py:1169 +msgid "The system prompt has been overwritten!" +msgstr "시스템 프롬프트가 덮어썼습니다!" -#: assistant\commands\admin.py:830 -msgid "Initial prompt has been set!" -msgstr "초기 프롬프트가 설정되었습니다!" +#: assistant\commands\admin.py:1172 +msgid "System prompt has been set!" +msgstr "시스템 프롬프트가 설정되었습니다!" -#: assistant\commands\admin.py:837 +#: assistant\commands\admin.py:1179 #, docstring -msgid "Show the channel specific system prompt" +msgid "\n" +" Set the global default system prompt used by servers that inherit the default prompt\n\n" +" - Run without arguments to view the current global default prompt\n" +" - Use `none` to reset to the built-in default prompt\n" +" - Servers with a custom system prompt keep using their custom prompt\n" +" " msgstr "" -#: assistant\commands\admin.py:840 -msgid "No channel prompt set for {}" +#: assistant\commands\admin.py:1203 +msgid "Current global default system prompt for servers using the default or an unset system prompt:" msgstr "" -#: assistant\commands\admin.py:852 -#, docstring -msgid "Set a channel specific system prompt" +#: assistant\commands\admin.py:1204 +msgid "Servers with a custom system prompt are unchanged." msgstr "" -#: assistant\commands\admin.py:869 -msgid "Channel prompt has been removed from {}!" +#: assistant\commands\admin.py:1207 +msgid "This is currently using the built-in default prompt." msgstr "" -#: assistant\commands\admin.py:872 -msgid "No channel prompt set for {}!" +#: assistant\commands\admin.py:1209 +msgid "This is currently using a custom default prompt." msgstr "" -#: assistant\commands\admin.py:888 -msgid "Channel prompt has been overwritten for {}!" +#: assistant\commands\admin.py:1215 +msgid "Please include a system prompt or .txt file, or use `none` to reset to the built-in default." msgstr "" -#: assistant\commands\admin.py:890 -msgid "Channel prompt has been set for {}!" +#: assistant\commands\admin.py:1221 +msgid "The global default system prompt has been reset to the built-in default. Servers using the default or an unset system prompt will use it immediately." +msgstr "" + +#: assistant\commands\admin.py:1231 +msgid "The global default system prompt has been updated. Servers using the default or an unset system prompt will use it immediately." msgstr "" -#: assistant\commands\admin.py:896 +#: assistant\commands\admin.py:1240 #, docstring msgid "\n" -" Set the system prompt for GPT to use\n\n" +" Set the initial prompt for GPT to use\n\n" " Check out [This Guide](https://platform.openai.com/docs/guides/prompt-engineering) for prompting help.\n\n" " **Placeholders**\n" " - **botname**: [botname]\n" @@ -781,213 +1005,205 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:967 -msgid "The system prompt has been removed!" -msgstr "시스템 프롬프트가 제거되었습니다!" +#: assistant\commands\admin.py:1311 +msgid "The initial prompt has been removed!" +msgstr "초기 프롬프트가 제거되었습니다!" -#: assistant\commands\admin.py:970 -msgid "Please include a system prompt or .txt file!\n" +#: assistant\commands\admin.py:1314 +msgid "Please include an initial prompt or .txt file!\n" "Use `{}` to view details for this command" -msgstr "시스템 프롬프트 또는 .txt 파일을 포함하세요!\n" +msgstr "초기 프롬프트 또는 .txt 파일을 포함하세요!\n" "이 명령에 대한 자세한 내용을 보려면 `{}`를 사용하세요" -#: assistant\commands\admin.py:976 -msgid "The system prompt has been overwritten!" -msgstr "시스템 프롬프트가 덮어썼습니다!" +#: assistant\commands\admin.py:1320 +msgid "The initial prompt has been overwritten!" +msgstr "초기 프롬프트가 덮어씌워졌습니다!" -#: assistant\commands\admin.py:979 -msgid "System prompt has been set!" -msgstr "시스템 프롬프트가 설정되었습니다!" +#: assistant\commands\admin.py:1323 +msgid "Initial prompt has been set!" +msgstr "초기 프롬프트가 설정되었습니다!" -#: assistant\commands\admin.py:986 +#: assistant\commands\admin.py:1334 #, docstring -msgid "\n" -" Set the global default system prompt used by servers that inherit the default prompt\n\n" -" - Run without arguments to view the current global default prompt\n" -" - Use `none` to reset to the built-in default prompt\n" -" - Servers with a custom system prompt keep using their custom prompt\n" -" " -msgstr "" - -#: assistant\commands\admin.py:1010 -msgid "Current global default system prompt for servers using the default or an unset system prompt:" +msgid "Show the channel specific system prompt" msgstr "" -#: assistant\commands\admin.py:1011 -msgid "Servers with a custom system prompt are unchanged." +#: assistant\commands\admin.py:1337 +msgid "No channel prompt set for {}" msgstr "" -#: assistant\commands\admin.py:1014 -msgid "This is currently using the built-in default prompt." +#: assistant\commands\admin.py:1349 +#, docstring +msgid "Set a channel specific system prompt" msgstr "" -#: assistant\commands\admin.py:1016 -msgid "This is currently using a custom default prompt." +#: assistant\commands\admin.py:1366 +msgid "Channel prompt has been removed from {}!" msgstr "" -#: assistant\commands\admin.py:1022 -msgid "Please include a system prompt or .txt file, or use `none` to reset to the built-in default." +#: assistant\commands\admin.py:1369 +msgid "No channel prompt set for {}!" msgstr "" -#: assistant\commands\admin.py:1028 -msgid "The global default system prompt has been reset to the built-in default. Servers using the default or an unset system prompt will use it immediately." +#: assistant\commands\admin.py:1385 +msgid "Channel prompt has been overwritten for {}!" msgstr "" -#: assistant\commands\admin.py:1038 -msgid "The global default system prompt has been updated. Servers using the default or an unset system prompt will use it immediately." +#: assistant\commands\admin.py:1387 +msgid "Channel prompt has been set for {}!" msgstr "" -#: assistant\commands\admin.py:1051 +#: assistant\commands\admin.py:1397 #, docstring msgid "Set the main auto-response channel for the assistant" msgstr "" -#: assistant\commands\admin.py:1056 +#: assistant\commands\admin.py:1402 msgid "Assistant channel has been removed" msgstr "어시스턴트 채널이 제거되었습니다" -#: assistant\commands\admin.py:1059 +#: assistant\commands\admin.py:1405 msgid "Assistant channel has been overwritten" msgstr "어시스턴트 채널이 덮어썼습니다" -#: assistant\commands\admin.py:1062 +#: assistant\commands\admin.py:1408 msgid "Channel id has been set" msgstr "채널 아이디가 설정되었습니다" -#: assistant\commands\admin.py:1068 +#: assistant\commands\admin.py:1414 #, docstring msgid "Toggle this channel as an auto-response channel" msgstr "" -#: assistant\commands\admin.py:1071 +#: assistant\commands\admin.py:1417 msgid "This channel is already set as the assistant channel!" msgstr "" -#: assistant\commands\admin.py:1074 +#: assistant\commands\admin.py:1420 msgid "I will no longer auto-respond to messages in this channel!" msgstr "" -#: assistant\commands\admin.py:1077 +#: assistant\commands\admin.py:1423 msgid "I will now auto-respond to messages in this channel!" msgstr "" -#: assistant\commands\admin.py:1082 +#: assistant\commands\admin.py:1428 #, docstring msgid "Toggle allowing per-conversation system prompt overriding" msgstr "" -#: assistant\commands\admin.py:1086 +#: assistant\commands\admin.py:1432 msgid "System prompt overriding **Disabled**, users cannot set per-convo system prompts" msgstr "" -#: assistant\commands\admin.py:1089 +#: assistant\commands\admin.py:1435 msgid "System prompt overriding **Enabled**, users can now set per-convo system prompts" msgstr "" -#: assistant\commands\admin.py:1094 +#: assistant\commands\admin.py:1440 #, docstring msgid "Toggle the assistant on or off" msgstr "어시스턴트를 켜거나 끄십시오" -#: assistant\commands\admin.py:1098 +#: assistant\commands\admin.py:1444 msgid "The assistant is now **Disabled**" msgstr "보조원은 지금 **비활성화**되었습니다" -#: assistant\commands\admin.py:1101 +#: assistant\commands\admin.py:1447 msgid "The assistant is now **Enabled**" msgstr "어시스턴트가 지금 **활성화**되었습니다" -#: assistant\commands\admin.py:1106 +#: assistant\commands\admin.py:1452 #, docstring msgid "Toggle the draw command on or off" msgstr "" -#: assistant\commands\admin.py:1110 +#: assistant\commands\admin.py:1456 msgid "The draw command is now **Disabled**" msgstr "" -#: assistant\commands\admin.py:1113 +#: assistant\commands\admin.py:1459 msgid "The draw command is now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1118 +#: assistant\commands\admin.py:1464 #, docstring msgid "Toggle the auto-answer feature on or off" msgstr "" -#: assistant\commands\admin.py:1122 +#: assistant\commands\admin.py:1468 msgid "Auto-answer has been **Disabled**" msgstr "" -#: assistant\commands\admin.py:1125 +#: assistant\commands\admin.py:1471 msgid "Auto-answer has been **Enabled**" msgstr "" -#: assistant\commands\admin.py:1130 +#: assistant\commands\admin.py:1476 #, docstring msgid "Set the auto-answer threshold for the bot" msgstr "" -#: assistant\commands\admin.py:1133 +#: assistant\commands\admin.py:1479 msgid "Auto-answer threshold has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1140 +#: assistant\commands\admin.py:1488 #, docstring msgid "Ignore a channel for auto-answer" msgstr "" -#: assistant\commands\admin.py:1151 +#: assistant\commands\admin.py:1499 msgid "Auto-answer will no longer ignore {}" msgstr "" -#: assistant\commands\admin.py:1154 assistant\commands\admin.py:1321 +#: assistant\commands\admin.py:1502 assistant\commands\admin.py:1670 msgid "Channel not found!" msgstr "" -#: assistant\commands\admin.py:1156 +#: assistant\commands\admin.py:1504 msgid "Auto-answer will now ignore {}" msgstr "" -#: assistant\commands\admin.py:1161 +#: assistant\commands\admin.py:1509 #, docstring msgid "Set the model used for auto-answer" msgstr "" -#: assistant\commands\admin.py:1168 +#: assistant\commands\admin.py:1517 msgid "Configured auto-answer model" msgstr "" -#: assistant\commands\admin.py:1171 assistant\commands\admin.py:1791 -#: assistant\commands\admin.py:1832 assistant\commands\admin.py:1834 -#: assistant\commands\admin.py:2903 +#: assistant\commands\admin.py:1520 assistant\commands\admin.py:2139 +#: assistant\commands\admin.py:2213 assistant\commands\admin.py:2215 +#: assistant\commands\admin.py:3978 msgid "Valid models are:\n" "{}" msgstr "유효한 모델은 다음과 같습니다:\n" "{}" -#: assistant\commands\admin.py:1173 assistant\commands\admin.py:3374 +#: assistant\commands\admin.py:1522 assistant\commands\admin.py:4489 msgid "Invalid model, valid models are: {}" msgstr "" -#: assistant\commands\admin.py:1175 +#: assistant\commands\admin.py:1524 msgid "Auto-answer model has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1186 +#: assistant\commands\admin.py:1533 #, docstring msgid "Toggle the trigger word feature on or off" msgstr "" -#: assistant\commands\admin.py:1190 +#: assistant\commands\admin.py:1537 msgid "Trigger word feature has been **Disabled**" msgstr "" -#: assistant\commands\admin.py:1193 +#: assistant\commands\admin.py:1540 msgid "Trigger word feature has been **Enabled**" msgstr "" -#: assistant\commands\admin.py:1198 +#: assistant\commands\admin.py:1545 #, docstring msgid "\n" " Add or remove a trigger phrase (supports regex)\n\n" @@ -1000,23 +1216,23 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1212 +#: assistant\commands\admin.py:1559 msgid "That regex pattern is invalid!" msgstr "" -#: assistant\commands\admin.py:1217 +#: assistant\commands\admin.py:1564 msgid "⚠️ Warning: `{}` is a very broad pattern that may match most messages!" msgstr "" -#: assistant\commands\admin.py:1222 +#: assistant\commands\admin.py:1569 msgid "Trigger phrase `{}` has been **Removed**" msgstr "" -#: assistant\commands\admin.py:1225 +#: assistant\commands\admin.py:1572 msgid "Trigger phrase `{}` has been **Added**" msgstr "" -#: assistant\commands\admin.py:1230 +#: assistant\commands\admin.py:1577 #, docstring msgid "\n" " Set the prompt to use when a trigger phrase is matched\n\n" @@ -1058,100 +1274,66 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1287 +#: assistant\commands\admin.py:1634 msgid "The trigger prompt has been removed!" msgstr "" -#: assistant\commands\admin.py:1290 +#: assistant\commands\admin.py:1637 msgid "Please include a trigger prompt or .txt file!\n" "Use `{}` to view details for this command" msgstr "" -#: assistant\commands\admin.py:1296 +#: assistant\commands\admin.py:1643 msgid "The trigger prompt has been overwritten!" msgstr "" -#: assistant\commands\admin.py:1299 +#: assistant\commands\admin.py:1646 msgid "Trigger prompt has been set!" msgstr "" -#: assistant\commands\admin.py:1307 +#: assistant\commands\admin.py:1656 #, docstring msgid "Ignore a channel or category for trigger phrases" msgstr "" -#: assistant\commands\admin.py:1318 +#: assistant\commands\admin.py:1667 msgid "Trigger phrases will no longer ignore {}" msgstr "" -#: assistant\commands\admin.py:1323 +#: assistant\commands\admin.py:1672 msgid "Trigger phrases will now ignore {}" msgstr "" -#: assistant\commands\admin.py:1329 +#: assistant\commands\admin.py:1678 #, docstring msgid "View configured trigger phrases" msgstr "" -#: assistant\commands\admin.py:1332 +#: assistant\commands\admin.py:1681 msgid "No trigger phrases configured!" msgstr "" -#: assistant\commands\admin.py:1335 +#: assistant\commands\admin.py:1684 msgid "Trigger Phrases" msgstr "" -#: assistant\commands\admin.py:1336 +#: assistant\commands\admin.py:1685 msgid "The following phrases will trigger a response:\n" msgstr "" -#: assistant\commands\admin.py:1342 +#: assistant\commands\admin.py:1691 msgid "Patterns" msgstr "" -#: assistant\commands\admin.py:1345 +#: assistant\commands\admin.py:1694 msgid "Status" msgstr "" -#: assistant\commands\admin.py:1352 +#: assistant\commands\admin.py:1701 msgid "Ignored Channels" msgstr "" -#: assistant\commands\admin.py:1358 -#, docstring -msgid "Switch vision resolution between high and low for relevant GPT-4-Turbo models" -msgstr "" - -#: assistant\commands\admin.py:1362 -msgid "Vision resolution has been set to **Low**" -msgstr "" - -#: assistant\commands\admin.py:1365 -msgid "Vision resolution has been set to **High**" -msgstr "" - -#: assistant\commands\admin.py:1368 -msgid "Vision resolution has been set to **Auto**" -msgstr "" - -#: assistant\commands\admin.py:1373 -#, docstring -msgid "Switch reasoning effort between none, minimal, low, medium, high, and xhigh\n\n" -" Not all models support every level. Unsupported levels are automatically mapped to the closest supported value.\n" -" - **none**: No reasoning (gpt-5.4 only, skipped for other models)\n" -" - **minimal**: Minimal reasoning (gpt-5 only, mapped to low for o-series)\n" -" - **low**: Low reasoning effort\n" -" - **medium**: Medium reasoning effort\n" -" - **high**: High reasoning effort\n" -" - **xhigh**: Maximum reasoning (gpt-5.4 only, mapped to high for other models)\n" -" " -msgstr "" - -#: assistant\commands\admin.py:1390 -msgid "Reasoning effort has been set to **{}**" -msgstr "" - -#: assistant\commands\admin.py:1395 +#: assistant\commands\admin.py:1707 #, docstring msgid "\n" " Set the prefix used to detect model thinking blocks\n\n" @@ -1160,29 +1342,29 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1417 +#: assistant\commands\admin.py:1729 msgid "Think tag prefix is already set to the default value." msgstr "" -#: assistant\commands\admin.py:1420 +#: assistant\commands\admin.py:1732 msgid "Think tag prefix reset to default:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1426 +#: assistant\commands\admin.py:1738 msgid "Think tag prefix cannot be empty." msgstr "" -#: assistant\commands\admin.py:1429 +#: assistant\commands\admin.py:1741 msgid "Think tag prefix is already set to that value." msgstr "" -#: assistant\commands\admin.py:1432 +#: assistant\commands\admin.py:1744 msgid "Think tag prefix has been set to:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1437 +#: assistant\commands\admin.py:1749 #, docstring msgid "\n" " Set the suffix used to detect model thinking blocks\n\n" @@ -1191,68 +1373,68 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1459 +#: assistant\commands\admin.py:1771 msgid "Think tag suffix is already set to the default value." msgstr "" -#: assistant\commands\admin.py:1462 +#: assistant\commands\admin.py:1774 msgid "Think tag suffix reset to default:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1468 +#: assistant\commands\admin.py:1780 msgid "Think tag suffix cannot be empty." msgstr "" -#: assistant\commands\admin.py:1471 +#: assistant\commands\admin.py:1783 msgid "Think tag suffix is already set to that value." msgstr "" -#: assistant\commands\admin.py:1474 +#: assistant\commands\admin.py:1786 msgid "Think tag suffix has been set to:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1479 +#: assistant\commands\admin.py:1791 #, docstring msgid "Toggle whether questions need to end with **__?__**" msgstr "질문이 **__?__**로 끝나야 하는지 전환하기" -#: assistant\commands\admin.py:1483 +#: assistant\commands\admin.py:1795 msgid "Questions will be answered regardless of if they end with **?**" msgstr "질문이 **?**로 끝나는지 여부와 관계없이 답변이 제공됩니다" -#: assistant\commands\admin.py:1486 +#: assistant\commands\admin.py:1798 msgid "Questions must end in **?** to be answered" msgstr "질문은 **?**로 끝나야 답변할 수 있습니다" -#: assistant\commands\admin.py:1491 +#: assistant\commands\admin.py:1803 #, docstring msgid "Toggle whether the bot responds to mentions in any channel" msgstr "" -#: assistant\commands\admin.py:1495 +#: assistant\commands\admin.py:1807 msgid "The bot will no longer respond to mentions" msgstr "" -#: assistant\commands\admin.py:1498 +#: assistant\commands\admin.py:1810 msgid "The bot will now respond to mentions" msgstr "" -#: assistant\commands\admin.py:1503 +#: assistant\commands\admin.py:1815 #, docstring msgid "Toggle whether to ping the user on replies" msgstr "사용자에게 답변 시 핑 여부를 전환하세요" -#: assistant\commands\admin.py:1507 +#: assistant\commands\admin.py:1819 msgid "Mentions are now **Disabled**" msgstr "이제 멘션은 **비활성화**되었습니다" -#: assistant\commands\admin.py:1510 +#: assistant\commands\admin.py:1822 msgid "Mentions are now **Enabled**" msgstr "이제 멘션은 **활성화**되었습니다" -#: assistant\commands\admin.py:1515 +#: assistant\commands\admin.py:1827 #, docstring msgid "\n" " Toggle collaborative conversations\n\n" @@ -1260,44 +1442,39 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1523 +#: assistant\commands\admin.py:1835 msgid "Collaborative conversations are now **Disabled**" msgstr "" -#: assistant\commands\admin.py:1526 +#: assistant\commands\admin.py:1838 msgid "Collaborative conversations are now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1556 +#: assistant\commands\admin.py:1843 #, docstring msgid "\n" " Set the max messages for a conversation\n\n" " Conversation retention is cached and gets reset when the bot restarts or the cog reloads.\n\n" " Regardless of this number, the initial prompt and internal system message are always included,\n" " this only applies to any conversation between the user and bot after that.\n\n" -" Set to 0 to disable conversation retention\n\n" +" Set to 0 for unlimited conversation retention\n\n" " **Note:** *actual message count may exceed the max retention during an API call*\n" " " -msgstr "\n" -"대화의 최대 메시지 수를 설정하세요.\n\n" -"대화 보존은 봇이 다시 시작되거나 코그가 다시로드될 때 캐시가 재설정됩니다.\n\n" -"이 숫자와 관계없이, 초기 프롬프트와 내부 시스템 메시지는 항상 포함되며, 이후 사용자와 봇 간의 모든 대화에만 적용됩니다.\n\n" -"대화 보존을 비활성화하려면 0으로 설정하세요.\n\n" -"**참고:** *API 호출 중에 실제 메시지 수가 최대 보존을 초과할 수 있습니다* " +msgstr "" -#: assistant\commands\admin.py:1569 assistant\commands\admin.py:2981 +#: assistant\commands\admin.py:1856 assistant\commands\admin.py:4060 msgid "Max retention needs to be at least 0 or higher" msgstr "최대 보존 기간은 최소 0 이상이어야 합니다" -#: assistant\commands\admin.py:1573 -msgid "Conversation retention has been disabled" -msgstr "대화 보존 기능이 비활성화되었습니다" +#: assistant\commands\admin.py:1860 +msgid "Message retention is now **unlimited**" +msgstr "" -#: assistant\commands\admin.py:1575 +#: assistant\commands\admin.py:1862 msgid "Conversations can now retain up to **{}** messages" msgstr "이제 대화에 최대 **{}**개의 메시지를 보관할 수 있습니다" -#: assistant\commands\admin.py:1580 +#: assistant\commands\admin.py:1867 #, docstring msgid "\n" " Set the conversation expiration time\n\n" @@ -1310,19 +1487,59 @@ msgstr "대화 만료 시간 설정\n\n" "이는 사용자와 봇 간의 모든 대화에 적용됩니다.\n\n" "대화를 영구히 저장하려면 0으로 설정하거나 봇을 다시 시작하거나 코그를 다시로드하면 저장됩니다. " -#: assistant\commands\admin.py:1589 assistant\commands\admin.py:3004 +#: assistant\commands\admin.py:1876 assistant\commands\admin.py:4083 msgid "Max retention time needs to be at least 0 or higher" msgstr "최대 보존 시간은 최소 0 이상이어야 합니다" -#: assistant\commands\admin.py:1593 +#: assistant\commands\admin.py:1880 msgid "Conversations will be stored until the bot restarts or the cog is reloaded" msgstr "대화는 봇이 다시 시작되거나 코그가 다시로드될 때까지 저장됩니다" -#: assistant\commands\admin.py:1595 +#: assistant\commands\admin.py:1882 msgid "Conversations will be considered active for **{}** seconds" msgstr "대화는 **{}**초 동안 활성 상태로 간주됩니다" -#: assistant\commands\admin.py:1600 +#: assistant\commands\admin.py:1887 +#, docstring +msgid "\n" +" Set maximum tokens a convo can consume\n\n" +" Set to 0 for dynamic token usage\n\n" +" **Tips**\n" +" - Max tokens are a soft cap, sometimes messages can be a little over\n" +" - If you set max tokens too high the cog will auto-adjust to 100 less than the models natural cap\n" +" - Ideally set max to 500 less than that models maximum, to allow adequate responses\n\n" +" Using more than the model can handle will raise exceptions.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:1902 +msgid "The maximum amount of tokens sent in a payload will be {}.\n" +"*Note that models with token limits lower than this will still be trimmed*" +msgstr "페이로드로 전송되는 토큰의 최대 양은 {}입니다.\n" +"*참고로, 이보다 낮은 토큰 제한을 가진 모델은 여전히 잘릴 수 있습니다.*" + +#: assistant\commands\admin.py:1907 +msgid "The maximum amount of tokens sent in a payload will be dynamic" +msgstr "" + +#: assistant\commands\admin.py:1913 +#, docstring +msgid "\n" +" Set the max response tokens the model can respond with\n\n" +" Set to 0 for response tokens to be dynamic\n" +" " +msgstr "모델이 응답할 수 있는 최대 응답 토큰을 설정하세요.\n\n" +"응답 토큰을 동적으로 설정하려면 0으로 설정하세요. " + +#: assistant\commands\admin.py:1921 +msgid "The maximum amount of tokens in the models responses will be {}." +msgstr "모델의 응답에서 토큰의 최대 개수는 {}입니다." + +#: assistant\commands\admin.py:1923 +msgid "Response tokens will now be dynamic" +msgstr "응답 토큰은 이제 동적으로 될 것입니다" + +#: assistant\commands\admin.py:1929 #, docstring msgid "\n" " Set the temperature for the model (0.0 - 2.0)\n" @@ -1331,15 +1548,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1607 +#: assistant\commands\admin.py:1936 msgid "Temperature must be between **0.0** and **2.0**" msgstr "온도는 **0.0**에서 **2.0** 사이여야 합니다" -#: assistant\commands\admin.py:1612 +#: assistant\commands\admin.py:1941 msgid "Temperature has been set to **{}**" msgstr "온도가 **{}**로 설정되었습니다" -#: assistant\commands\admin.py:1616 +#: assistant\commands\admin.py:1945 #, docstring msgid "\n" " Set the frequency penalty for the model (-2.0 to 2.0)\n" @@ -1348,15 +1565,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1623 +#: assistant\commands\admin.py:1952 msgid "Frequency penalty must be between **-2.0** and **2.0**" msgstr "" -#: assistant\commands\admin.py:1628 +#: assistant\commands\admin.py:1957 msgid "Frequency penalty has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1632 +#: assistant\commands\admin.py:1961 #, docstring msgid "\n" " Set the presence penalty for the model (-2.0 to 2.0)\n" @@ -1365,15 +1582,49 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1639 +#: assistant\commands\admin.py:1968 msgid "Presence penalty must be between **-2.0** and **2.0**" msgstr "" -#: assistant\commands\admin.py:1644 +#: assistant\commands\admin.py:1973 msgid "Presence penalty has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1648 +#: assistant\commands\admin.py:1977 +#, docstring +msgid "Switch vision resolution between high and low for relevant GPT-4-Turbo models" +msgstr "" + +#: assistant\commands\admin.py:1981 +msgid "Vision resolution has been set to **Low**" +msgstr "" + +#: assistant\commands\admin.py:1984 +msgid "Vision resolution has been set to **High**" +msgstr "" + +#: assistant\commands\admin.py:1987 +msgid "Vision resolution has been set to **Auto**" +msgstr "" + +#: assistant\commands\admin.py:1992 +#, docstring +msgid "Switch reasoning effort between none, minimal, low, medium, high, and xhigh\n\n" +" Not all models support every level. Unsupported levels are automatically mapped to the closest supported value.\n" +" - **none**: No reasoning (gpt-5.4 only, skipped for other models)\n" +" - **minimal**: Minimal reasoning (gpt-5 only, mapped to low for o-series)\n" +" - **low**: Low reasoning effort\n" +" - **medium**: Medium reasoning effort\n" +" - **high**: High reasoning effort\n" +" - **xhigh**: Maximum reasoning (gpt-5.4 only, mapped to high for other models)\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2009 +msgid "Reasoning effort has been set to **{}**" +msgstr "" + +#: assistant\commands\admin.py:2014 #, docstring msgid "\n" " Make the model more deterministic by setting a seed for the model.\n" @@ -1382,15 +1633,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1655 +#: assistant\commands\admin.py:2021 msgid "Seed must be a positive integer" msgstr "" -#: assistant\commands\admin.py:1659 +#: assistant\commands\admin.py:2025 msgid "The seed has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1663 +#: assistant\commands\admin.py:2032 #, docstring msgid "\n" " Refresh embedding weights\n\n" @@ -1399,47 +1650,43 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1676 +#: assistant\commands\admin.py:2045 msgid "{} embeddings have been updated" msgstr "{} 임베딩이 업데이트되었습니다" -#: assistant\commands\admin.py:1678 +#: assistant\commands\admin.py:2047 msgid "No embeddings needed to be refreshed" msgstr "임베딩을 새로 고칠 필요가 없습니다" -#: assistant\commands\admin.py:1682 +#: assistant\commands\admin.py:2051 #, docstring msgid "Toggle whether GPT can call functions" msgstr "" -#: assistant\commands\admin.py:1686 +#: assistant\commands\admin.py:2055 msgid "Assistant will not call functions" msgstr "번역할 수 없습니다. 저는 함수를 호출할 수 없습니다. 저는 번역된 텍스트만 제공할 수 있습니다. 어떤 다른 질문이 있으신가요?" -#: assistant\commands\admin.py:1689 +#: assistant\commands\admin.py:2058 msgid "Assistant will now call functions as needed" msgstr "번역을 시작하겠습니다" -#: assistant\commands\admin.py:1694 +#: assistant\commands\admin.py:2063 #, docstring msgid "Set the maximum function calls allowed in a row\n\n" -" This sets how many times the model can call functions in a row\n\n" -" Only the following models can call functions at the moment\n" -" - gpt-4o-mini\n" -" - gpt-4o\n" -" - ect..\n" +" This sets how many times the model can call functions in a row\n" " " msgstr "" -#: assistant\commands\admin.py:1706 +#: assistant\commands\admin.py:2070 msgid "Function calls will not be used since recursion is 0" msgstr "재귀가 0이므로 함수 호출은 사용되지 않습니다" -#: assistant\commands\admin.py:1708 +#: assistant\commands\admin.py:2072 msgid "The model can now call various functions up to {} times before returning a response" msgstr "모델은 응답을 반환하기 전에 최대 {}번까지 다양한 함수를 호출할 수 있습니다" -#: assistant\commands\admin.py:1714 +#: assistant\commands\admin.py:2078 #, docstring msgid "\n" " set min character length for questions\n\n" @@ -1448,87 +1695,64 @@ msgid "\n" msgstr "질문에 대한 최소 문자 길이를 설정하세요.\n\n" "0으로 설정하면 모든 것에 대해 응답합니다. " -#: assistant\commands\admin.py:1720 +#: assistant\commands\admin.py:2084 msgid "Minimum length needs to be at least 0 or higher" msgstr "최소 길이는 0 이상이어야 합니다" -#: assistant\commands\admin.py:1724 +#: assistant\commands\admin.py:2088 msgid "{} will respond regardless of message length" msgstr "{}는 메시지의 길이에 관계없이 응답합니다" -#: assistant\commands\admin.py:1727 +#: assistant\commands\admin.py:2091 msgid "{} will respond to messages with more than **{}** characters" msgstr "{}는 **{}**자 이상의 메시지에 응답할 것입니다" -#: assistant\commands\admin.py:1735 +#: assistant\commands\admin.py:2099 #, docstring msgid "\n" -" Set maximum tokens a convo can consume\n\n" -" Set to 0 for dynamic token usage\n\n" -" **Tips**\n" -" - Max tokens are a soft cap, sometimes messages can be a little over\n" -" - If you set max tokens too high the cog will auto-adjust to 100 less than the models natural cap\n" -" - Ideally set max to 500 less than that models maximum, to allow adequate responses\n\n" -" Using more than the model can handle will raise exceptions.\n" +" Set the chat model to use\n\n" +" Run without arguments to open an interactive picker that lists every\n" +" model your endpoint advertises, grouped by provider. The picker also\n" +" accepts manual entry - useful for router aliases like\n" +" `openrouter/auto` or `openrouter/free`.\n" " " msgstr "" -#: assistant\commands\admin.py:1750 -msgid "The maximum amount of tokens sent in a payload will be {}.\n" -"*Note that models with token limits lower than this will still be trimmed*" -msgstr "페이로드로 전송되는 토큰의 최대 양은 {}입니다.\n" -"*참고로, 이보다 낮은 토큰 제한을 가진 모델은 여전히 잘릴 수 있습니다.*" - -#: assistant\commands\admin.py:1755 -msgid "The maximum amount of tokens sent in a payload will be dynamic" -msgstr "" - -#: assistant\commands\admin.py:1761 -#, docstring -msgid "\n" -" Set the max response tokens the model can respond with\n\n" -" Set to 0 for response tokens to be dynamic\n" -" " -msgstr "모델이 응답할 수 있는 최대 응답 토큰을 설정하세요.\n\n" -"응답 토큰을 동적으로 설정하려면 0으로 설정하세요. " - -#: assistant\commands\admin.py:1769 -msgid "The maximum amount of tokens in the models responses will be {}." -msgstr "모델의 응답에서 토큰의 최대 개수는 {}입니다." - -#: assistant\commands\admin.py:1771 -msgid "Response tokens will now be dynamic" -msgstr "응답 토큰은 이제 동적으로 될 것입니다" - -#: assistant\commands\admin.py:1777 -#, docstring -msgid "\n" -" Set the OpenAI model to use\n" -" " +#: assistant\commands\admin.py:2121 +msgid "Could not probe `{}` to discover available models. Try setting a model id manually, e.g. `{}assistant set model openrouter/auto`." msgstr "" -#: assistant\commands\admin.py:1798 assistant\commands\admin.py:2910 +#: assistant\commands\admin.py:2146 assistant\commands\admin.py:3985 msgid "Error: {}" msgstr "" -#: assistant\commands\admin.py:1802 +#: assistant\commands\admin.py:2150 msgid "The **{}** model will now be used" msgstr "**{}** 모델이 이제 사용될 것입니다" -#: assistant\commands\admin.py:1809 +#: assistant\commands\admin.py:2157 msgid "**Note**: Starting with `o1-2024-12-17`, reasoning models in the API will avoid generating responses with markdown formatting. To signal to the model when you do want markdown formatting in the response, include the string `Formatting re-enabled` on the first line of your system message." msgstr "" -#: assistant\commands\admin.py:1818 +#: assistant\commands\admin.py:2166 #, docstring -msgid "Set the OpenAI Embedding model to use" +msgid "\n" +" Set the embedding model to use\n\n" +" Run without arguments to open an interactive picker that lists\n" +" every embedding model your endpoint advertises, grouped by provider.\n" +" Embeddings use the same endpoint as chat.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2192 +msgid "Could not probe `{}` to discover available embedding models. Try setting an id manually, e.g. `{}assistant embed model text-embedding-3-small`." msgstr "" -#: assistant\commands\admin.py:1836 +#: assistant\commands\admin.py:2217 msgid "The **{}** model will now be used for embeddings" msgstr "" -#: assistant\commands\admin.py:1845 +#: assistant\commands\admin.py:2225 #, docstring msgid "\n" " Wipe saved embeddings for the assistant\n\n" @@ -1537,15 +1761,15 @@ msgid "\n" msgstr "어시스턴트의 저장된 임베딩을 지웁니다.\n\n" "이 작업은 어시스턴트의 모든 저장된 임베딩 훈련 데이터를 삭제합니다. " -#: assistant\commands\admin.py:1851 assistant\commands\admin.py:3257 +#: assistant\commands\admin.py:2231 assistant\commands\admin.py:4373 msgid "Not wiping embedding data" msgstr "임베딩 데이터를 지우지 않음" -#: assistant\commands\admin.py:1855 +#: assistant\commands\admin.py:2235 msgid "All embedding data has been wiped!" msgstr "모든 임베딩 데이터가 삭제되었습니다!" -#: assistant\commands\admin.py:1860 +#: assistant\commands\admin.py:2240 #, docstring msgid "\n" " Wipe saved conversations for the assistant in this server\n\n" @@ -1554,15 +1778,15 @@ msgid "\n" msgstr "이 서버에서 어시스턴트의 저장된 대화 기록을 삭제합니다.\n\n" "이로 인해 어시스턴트의 모든 저장된 대화가 삭제됩니다. " -#: assistant\commands\admin.py:1866 assistant\commands\admin.py:3218 +#: assistant\commands\admin.py:2246 assistant\commands\admin.py:4334 msgid "Not wiping conversations" msgstr "대화를 지우지 않습니다" -#: assistant\commands\admin.py:1870 +#: assistant\commands\admin.py:2250 msgid "Conversations have been wiped in this server!" msgstr "이 서버에서 대화가 삭제되었습니다!" -#: assistant\commands\admin.py:1875 +#: assistant\commands\admin.py:2255 #, docstring msgid "\n" " Set the embedding inclusion amout\n\n" @@ -1570,19 +1794,19 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1881 +#: assistant\commands\admin.py:2261 msgid "Top N must be between 0 and 10" msgstr "상위 N은 0에서 10 사이여야 합니다" -#: assistant\commands\admin.py:1885 +#: assistant\commands\admin.py:2265 msgid "Embeddings will not be pulled during conversations" msgstr "대화 중에는 임베딩이 당겨지지 않습니다" -#: assistant\commands\admin.py:1887 +#: assistant\commands\admin.py:2267 msgid "Up to **{}** embeddings will be pulled for each interaction" msgstr "각 상호작용에 대해 최대 **{}**개의 임베딩이 가져옵니다" -#: assistant\commands\admin.py:1892 +#: assistant\commands\admin.py:2272 #, docstring msgid "\n" " Set the minimum relatedness an embedding must be to include with the prompt\n\n" @@ -1595,32 +1819,32 @@ msgstr "임베딩이 프롬프트와 함께 포함해야 하는 최소 관련성 "질문은 임베딩으로 변환되고 저장된 임베딩과 비교하여 가장 관련성이 높은 것을 가져오는데, 이 비교에서 파생되는 점수가 바로 이 점수입니다.\n\n" "**힌트**: 1에 가까울수록 결과가 더 결정적이고 정확할 수 있지만, 너무 엄격하지 않으면 결과가 나오지 않을 수 있습니다. " -#: assistant\commands\admin.py:1902 +#: assistant\commands\admin.py:2282 msgid "Minimum relatedness must be between 0 and 1" msgstr "최소 연관성은 0에서 1 사이여야 합니다" -#: assistant\commands\admin.py:1905 +#: assistant\commands\admin.py:2285 msgid "Minimum relatedness has been set to **{}**" msgstr "최소 관련성이 **{}**로 설정되었습니다" -#: assistant\commands\admin.py:1910 +#: assistant\commands\admin.py:2290 #, docstring msgid "Remove certain words/phrases in the bot's responses" msgstr "I apologize for any confusion. I will make sure to revise the translation to maintain the core meaning of the source text and avoid adding any unwarranted extra content. Please provide the text you would like me to translate, and I will provide the updated translation" -#: assistant\commands\admin.py:1914 +#: assistant\commands\admin.py:2294 msgid "That regex is invalid" msgstr "그 정규식은 유효하지 않습니다" -#: assistant\commands\admin.py:1918 +#: assistant\commands\admin.py:2298 msgid "`{}` has been **Removed** from the blacklist" msgstr "`{}`가 블랙리스트에서 **삭제됨**되었습니다" -#: assistant\commands\admin.py:1921 +#: assistant\commands\admin.py:2301 msgid "`{}` has been **Added** to the blacklist" msgstr "`{}`가 블랙리스트에 **추가**되었습니다" -#: assistant\commands\admin.py:1926 +#: assistant\commands\admin.py:2306 #, docstring msgid "\n" " Toggle whether failed regex blocks the assistant's reply\n\n" @@ -1631,15 +1855,15 @@ msgstr "대화 도중 실패한 정규식이 대화 도우미의 응답을 차 "일부 정규식은 [파괴적인 되풀이](https://www.rexegg.com/regex-explosive-quantifiers.html)를 일으킬 수 있습니다.\n" "대화 도우미는 이런 경우에 안전하게 처리할 수 있으며 계속 진행하거나 응답을 차단할 수 있습니다. " -#: assistant\commands\admin.py:1935 +#: assistant\commands\admin.py:2315 msgid "If a regex blacklist fails, the bots reply will be blocked" msgstr "정규식 블랙리스트가 실패하면 봇의 응답이 차단됩니다" -#: assistant\commands\admin.py:1938 +#: assistant\commands\admin.py:2318 msgid "If a reges blacklist fails, the bot will still reply" msgstr "레지스 블랙리스트가 실패하더라도 봇은 여전히 응답합니다" -#: assistant\commands\admin.py:1943 +#: assistant\commands\admin.py:2323 #, docstring msgid "\n" " Toggle question mode\n\n" @@ -1647,15 +1871,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1951 +#: assistant\commands\admin.py:2331 msgid "Question mode is now **Disabled**" msgstr "" -#: assistant\commands\admin.py:1954 +#: assistant\commands\admin.py:2334 msgid "Question mode is now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1959 +#: assistant\commands\admin.py:2339 #, docstring msgid "Import embeddings to use with the assistant\n\n" " Args:\n" @@ -1667,356 +1891,974 @@ msgstr "어시스턴트에 사용할 임베딩을 가져옵니다.\n\n" "- overwrite (bool): 기존 항목 이름과 임베딩을 덮어쓸지 여부\n\n" "이는 엑셀 파일도 읽을 수 있습니다. " -#: assistant\commands\admin.py:1972 +#: assistant\commands\admin.py:2352 msgid "You must attach **.csv** files to this command or reference a message that has them!" msgstr "이 명령에는 **.csv** 파일을 첨부하거나 해당 파일이 있는 메시지를 참조해야 합니다!" -#: assistant\commands\admin.py:1985 assistant\commands\admin.py:2062 -#: assistant\commands\admin.py:2122 +#: assistant\commands\admin.py:2365 assistant\commands\admin.py:2442 +#: assistant\commands\admin.py:2505 msgid "Error reading **{}**: {}" msgstr "**{}** 읽기 오류: {}" -#: assistant\commands\admin.py:1990 +#: assistant\commands\admin.py:2370 msgid "**{}** contains invalid formatting, columns must be " msgstr "**{}** 유효한 형식이 아닙니다. 열은 이어져야 합니다 " -#: assistant\commands\admin.py:1998 +#: assistant\commands\admin.py:2378 msgid "There are no valid files to import!" msgstr "유효한 가져올 파일이 없습니다!" -#: assistant\commands\admin.py:2000 assistant\commands\admin.py:2137 +#: assistant\commands\admin.py:2380 assistant\commands\admin.py:2520 msgid "Processing the following files in the background\n" "{}" msgstr "다음 파일을 백그라운드에서 처리 중입니다. {}" -#: assistant\commands\admin.py:2014 assistant\commands\admin.py:2148 +#: assistant\commands\admin.py:2394 assistant\commands\admin.py:2531 msgid "processing" msgstr "처리 중입니다" -#: assistant\commands\admin.py:2016 assistant\commands\admin.py:2150 +#: assistant\commands\admin.py:2396 assistant\commands\admin.py:2533 msgid "overwriting" msgstr "덮어쓰기" -#: assistant\commands\admin.py:2024 assistant\commands\admin.py:2158 +#: assistant\commands\admin.py:2404 assistant\commands\admin.py:2541 msgid "{}\n" "`Currently {}: `**{}** ({}/{})" msgstr "{}\n" "`현재 {}: `**{}** ({}/{})" -#: assistant\commands\admin.py:2030 assistant\commands\admin.py:2165 +#: assistant\commands\admin.py:2410 assistant\commands\admin.py:2551 msgid "Failed to process embedding: `{}`" msgstr "임베딩 처리에 실패했습니다: `{}`" -#: assistant\commands\admin.py:2035 assistant\commands\admin.py:2178 -#: assistant\commands\admin.py:2182 -msgid "{}\n" -"**COMPLETE**" -msgstr "{}" +#: assistant\commands\admin.py:2415 assistant\commands\admin.py:2564 +#: assistant\commands\admin.py:2568 +msgid "{}\n" +"**COMPLETE**" +msgstr "{}" + +#: assistant\commands\admin.py:2416 assistant\commands\admin.py:2565 +msgid "Successfully imported {} embeddings!" +msgstr "{} 임베딩을 성공적으로 가져왔습니다!" + +#: assistant\commands\admin.py:2421 +#, docstring +msgid "Import embeddings to use with the assistant\n\n" +" Args:\n" +" overwrite (bool): overwrite embeddings with existing entry names\n" +" " +msgstr "어시스턴트에 사용할 임베딩을 가져옵니다.\n\n" +"인수:\n" +"- overwrite (bool): 기존 항목 이름과 임베딩을 덮어쓸지 여부 " + +#: assistant\commands\admin.py:2430 assistant\commands\admin.py:4318 +msgid "You must attach **.json** files to this command or reference a message that has them!" +msgstr "이 명령에는 **.json** 파일을 첨부하거나 해당 파일을 참조해야 합니다!" + +#: assistant\commands\admin.py:2469 +msgid "Failed to import **{}** because it contains invalid formatting!" +msgstr "잘못된 형식을 포함하여 **{}**를 가져올 수 없습니다!" + +#: assistant\commands\admin.py:2474 +msgid "Imported the following files: `{}`\n" +"{} embeddings imported" +msgstr "다음 파일을 가져왔습니다: `{}`\n" +"{} 임베딩이 가져와졌습니다" + +#: assistant\commands\admin.py:2482 +#, docstring +msgid "Import embeddings from an .xlsx file\n\n" +" Args:\n" +" overwrite (bool): overwrite embeddings with existing entry names\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2491 +msgid "You must attach **.xlsx** files to this command or reference a message that has them!" +msgstr "" + +#: assistant\commands\admin.py:2512 +msgid "{} is invalid! Must contain the following columns: {}" +msgstr "" + +#: assistant\commands\admin.py:2569 +msgid "No embeddings needed to be updated!" +msgstr "" + +#: assistant\commands\admin.py:2574 +#, docstring +msgid "\n" +" Export embeddings to an .xlsx file\n\n" +" **Note:** csv exports do not include the embedding values\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2581 assistant\commands\admin.py:2627 +#: assistant\commands\admin.py:2671 +msgid "There are no embeddings to export!" +msgstr "내보낼 임베딩이 없습니다!" + +#: assistant\commands\admin.py:2621 +#, docstring +msgid "Export embeddings to a .csv file\n\n" +" **Note:** csv exports do not include the embedding values\n" +" " +msgstr "임베딩을 .csv 파일로 내보내기\n\n" +"**참고:** csv 내보내기에는 임베딩 값이 포함되지 않습니다 " + +#: assistant\commands\admin.py:2640 assistant\commands\admin.py:2660 +#: assistant\commands\admin.py:2679 assistant\commands\admin.py:2699 +#: assistant\commands\admin.py:4304 +msgid "Here is your embeddings export!" +msgstr "여기에 당신의 임베딩 내보내기가 있습니다!" + +#: assistant\commands\admin.py:2643 assistant\commands\admin.py:2682 +#: assistant\commands\admin.py:4286 +msgid "File too large, attempting to compress..." +msgstr "파일이 너무 크므로 압축을 시도합니다..." + +#: assistant\commands\admin.py:2663 assistant\commands\admin.py:2702 +#: assistant\commands\admin.py:4307 +msgid "File is still too large even with compression!" +msgstr "압축을 해도 파일이 여전히 너무 큽니다!" + +#: assistant\commands\admin.py:2668 +#, docstring +msgid "Export embeddings to a json file" +msgstr "임베딩을 json 파일로 내보내세요" + +#: assistant\commands\admin.py:2710 +#, docstring +msgid "\n" +" Manage embeddings for training\n\n" +" Embeddings are used to optimize training of the assistant and minimize token usage.\n\n" +" By using this the bot can store vast amounts of contextual information without going over the token limit.\n\n" +" **Note**\n" +" You can enter a search query with this command to bring up the menu and go directly to that embedding selection.\n" +" " +msgstr "관리 임베딩을 위해\n\n" +"임베딩은 어시스턴트의 트레이닝을 최적화하고 토큰 사용을 최소화하는 데 사용됩니다.\n\n" +"이를 통해 봇은 토큰 한도를 초과하지 않고도 방대한 양의 컨텍스트 정보를 저장할 수 있습니다.\n\n" +"**참고**\n" +"이 명령어로 검색어를 입력하면 메뉴를 불러와 해당 임베딩 선택 항목으로 바로 이동할 수 있습니다. " + +#: assistant\commands\admin.py:2760 +#, docstring +msgid "\n" +" Add custom function calls for Assistant to use\n\n" +" **READ**\n" +" - [Function Call Docs](https://platform.openai.com/docs/guides/gpt/function-calling)\n" +" - [OpenAI Cookbook](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_call_functions_with_chat_models.ipynb)\n" +" - [JSON Schema Reference](https://json-schema.org/understanding-json-schema/)\n\n" +" The following objects are passed by default as keyword arguments.\n" +" - **user**: the user currently chatting with the bot (discord.Member)\n" +" - **channel**: channel the user is chatting in (TextChannel|Thread|ForumChannel)\n" +" - **guild**: current guild (discord.Guild)\n" +" - **bot**: the bot object (Red)\n" +" - **conf**: the config model for Assistant (GuildSettings)\n" +" - All functions **MUST** include `*args, **kwargs` in the params and return a string\n" +" ```python\n" +" # Can be either sync or async\n" +" async def func(*args, **kwargs) -> str:\n" +" ```\n" +" Only bot owner can manage this, guild owners can see descriptions but not code\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2800 +#, docstring +msgid "List custom prompt context variables registered by other cogs." +msgstr "" + +#: assistant\commands\admin.py:2802 +msgid "3rd party docs: {}" +msgstr "" + +#: assistant\commands\admin.py:2804 +msgid "No custom context variables have been registered yet!\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:2818 +msgid "Custom Variables" +msgstr "" + +#: assistant\commands\admin.py:2823 +msgid "Page {}/{} | {} variables" +msgstr "" + +#: assistant\commands\admin.py:2836 +#, docstring +msgid "\n" +" List all available functions and their enabled/disabled status\n\n" +" This provides a quick overview of all custom functions and 3rd party\n" +" registered functions without having to navigate through the full menu.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2849 assistant\commands\admin.py:3142 +#: assistant\commands\admin.py:3198 assistant\commands\admin.py:3295 +msgid "No functions have been registered yet!" +msgstr "" + +#: assistant\commands\admin.py:2876 +msgid "Function List" +msgstr "" + +#: assistant\commands\admin.py:2881 +msgid "Page {}/{} | {} enabled, {} disabled" +msgstr "" + +#: assistant\commands\admin.py:2897 +#, docstring +msgid "Open the mobile-friendly AI tools manager." +msgstr "" + +#: assistant\commands\admin.py:2905 +#, docstring +msgid "Open the floating context block manager.\n\n" +" Toggled variables are appended to a trailing payload-only user\n" +" message after conversation history. Because that message rides\n" +" after the cached prefix, putting dynamic (per-request) values\n" +" there keeps the prompt prefix stable across requests so\n" +" provider-side prompt caching can hit.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2920 +#, docstring +msgid "Show prompt-cache stats from the most recent API call." +msgstr "" + +#: assistant\commands\admin.py:2924 +msgid "No cache stats yet - make a request first." +msgstr "" + +#: assistant\commands\admin.py:2928 +msgid "Unknown" +msgstr "" + +#: assistant\commands\admin.py:2932 +msgid "Last API call: **{cached}**/**{total}** prompt tokens cached ({pct:.0f}%) · **{write}** cache-write tokens · model `{model}`" +msgstr "" + +#: assistant\commands\admin.py:2948 +msgid "\n" +"💡 This model requires at least **{min_tokens}** prompt tokens before the provider will cache. Your prompt was only **{total}** tokens - below the threshold, so no cache write or read occurred. A longer system prompt, more conversation history, or enabling variables in the `[p]floatingcontext` block will push it over." +msgstr "" + +#: assistant\commands\admin.py:2963 +msgid "\n" +"ℹ️ This provider uses automatic prompt caching. A **0** cache-write count does not necessarily mean caching is disabled, because some automatic-cache providers do not charge for or clearly expose cache writes. The more useful signal is whether similar follow-up turns start showing non-zero cached tokens. Also note that the relevant threshold is the repeated stable prefix, not the full prompt length, so a large request can still miss if most of its tokens are in the changing tail of the payload." +msgstr "" + +#: assistant\commands\admin.py:2978 +msgid "\n" +"ℹ️ `gpt-oss` is a reasoning model running over Chat Completions. Cache reuse can be weaker than on non-reasoning chat models because not all reasoning state is preserved between turns." +msgstr "" + +#: assistant\commands\admin.py:2988 +msgid "\n" +"⚠️ **Cache writes occurred but no reads.** This means the provider cached your prompt prefix, but the next request didn't match it - the prefix changed between calls. Common causes include dynamic variables like `{{time}}`, `{{date}}`, or `{{username}}` being substituted into your prompt prefix, per-turn context being injected before the cacheable tail, or tool definitions changing between calls. Use `[p]floatingcontext` to move dynamic context out of the prompt prefix." +msgstr "" + +#: assistant\commands\admin.py:3004 +#, docstring +msgid "Enable OpenRouter response caching (Mode A)." +msgstr "" + +#: assistant\commands\admin.py:3008 +msgid "OpenRouter response caching **enabled** (TTL: {}s)." +msgstr "" + +#: assistant\commands\admin.py:3012 +#, docstring +msgid "Disable OpenRouter response caching (Mode A)." +msgstr "" + +#: assistant\commands\admin.py:3016 +msgid "OpenRouter response caching **disabled**." +msgstr "" + +#: assistant\commands\admin.py:3020 +#, docstring +msgid "Set the OpenRouter response cache TTL in seconds (1–86400)." +msgstr "" + +#: assistant\commands\admin.py:3022 +msgid "TTL must be between 1 and 86400 seconds (24 hours)." +msgstr "" + +#: assistant\commands\admin.py:3026 +msgid "OpenRouter response cache TTL set to **{}** seconds." +msgstr "" + +#: assistant\commands\admin.py:3030 +#, docstring +msgid "Set the OpenRouter provider prompt cache TTL.\n\n" +" Choices: `off`, `5m`, `1h`. Applies to Anthropic / Gemini / Qwen\n" +" models routed via OpenRouter.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3037 +msgid "Mode must be one of: `off`, `5m`, `1h`." +msgstr "" + +#: assistant\commands\admin.py:3041 +msgid "OpenRouter provider prompt cache set to **{}**." +msgstr "" + +#: assistant\commands\admin.py:3050 +#, docstring +msgid "Configure OpenRouter provider routing and model slug preferences." +msgstr "" + +#: assistant\commands\admin.py:3055 +#, docstring +msgid "Show current OpenRouter provider routing settings." +msgstr "" + +#: assistant\commands\admin.py:3059 +msgid "not set" +msgstr "" + +#: assistant\commands\admin.py:3062 +msgid "not set (OR default)" +msgstr "" + +#: assistant\commands\admin.py:3064 +msgid "OpenRouter Provider Settings" +msgstr "" + +#: assistant\commands\admin.py:3065 +msgid "Model suffix" +msgstr "" + +#: assistant\commands\admin.py:3066 +msgid "Allow fallbacks" +msgstr "" + +#: assistant\commands\admin.py:3067 +msgid "Provider order" +msgstr "" + +#: assistant\commands\admin.py:3068 +msgid "Tip: `providers Fireworks` + `fallbacks false` hard-pins to that provider." +msgstr "" + +#: assistant\commands\admin.py:3073 +#, docstring +msgid "Set a guild-wide model slug suffix applied to every OpenRouter request.\n\n" +" Valid values: `:nitro` (throughput priority), `:floor` (price priority),\n" +" `:extended`, `clear` (remove suffix).\n" +" The suffix is appended after model resolution and replaces any per-model suffix.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3083 +msgid "OpenRouter model suffix cleared." +msgstr "" + +#: assistant\commands\admin.py:3086 +msgid "Invalid suffix `{}`. Valid: {}." +msgstr "" + +#: assistant\commands\admin.py:3090 +msgid "OpenRouter model suffix set to `{}`." +msgstr "" + +#: assistant\commands\admin.py:3094 +#, docstring +msgid "Set the ordered list of providers OpenRouter should use (space-separated).\n\n" +" Pass `clear` to reset. Combined with `fallbacks false` this hard-pins routing\n" +" to only the listed providers in order.\n" +" Example: `providers Fireworks Together`\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3104 +msgid "OpenRouter provider list cleared." +msgstr "" + +#: assistant\commands\admin.py:3108 +msgid "OpenRouter will try providers in order: {}." +msgstr "" + +#: assistant\commands\admin.py:3113 +#, docstring +msgid "Set whether OpenRouter may fall back to other providers.\n\n" +" Values: `true`, `false`, `clear` (restore OR default which is true).\n" +" Set to `false` with `providers` to hard-pin routing to those providers only.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3123 +msgid "OpenRouter fallbacks reset to OR default (enabled)." +msgstr "" + +#: assistant\commands\admin.py:3125 +msgid "Value must be `true`, `false`, or `clear`." +msgstr "" + +#: assistant\commands\admin.py:3128 +msgid "OpenRouter fallbacks set to `{}`." +msgstr "" + +#: assistant\commands\admin.py:3135 +#, docstring +msgid "List tool categories and their current enabled state." +msgstr "" + +#: assistant\commands\admin.py:3161 +msgid "Tool Categories" +msgstr "" + +#: assistant\commands\admin.py:3166 +msgid "Page {}/{} | {} enabled of {} total" +msgstr "" + +#: assistant\commands\admin.py:3191 +#, docstring +msgid "Enable or disable all tools in one or more categories." +msgstr "" + +#: assistant\commands\admin.py:3208 +msgid "No valid category names provided!" +msgstr "" + +#: assistant\commands\admin.py:3213 +msgid "The following categories do not exist: {}" +msgstr "" + +#: assistant\commands\admin.py:3235 +msgid "{} **Enabled Categories** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3243 +msgid "{} **Disabled Categories** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3266 +#, docstring +msgid "\n" +" Enable or disable multiple functions at once\n\n" +" **Arguments**\n" +" - `enable`: True to enable, False to disable. Omit to toggle current state.\n" +" - `functions`: Comma-separated list of function names, or \"all\" to affect all functions\n\n" +" **Examples**\n" +" - `[p]togglefunctions get_time, get_weather` - Toggle these functions\n" +" - `[p]togglefunctions True all` - Enable all functions\n" +" - `[p]togglefunctions False get_time, get_weather` - Disable specific functions\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3305 +msgid "No valid function names provided!" +msgstr "" + +#: assistant\commands\admin.py:3311 +msgid "The following functions do not exist: {}" +msgstr "" + +#: assistant\commands\admin.py:3337 +msgid "✅ **Enabled** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3344 +msgid "❌ **Disabled** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3440 +#, docstring +msgid "\n" +" Add/Remove items from the blacklist\n\n" +" `channel_role_member` can be a member, role, channel, or category channel\n" +" " +msgstr "\n" +"블랙리스트에서 항목을 추가/제거하세요.\n\n" +"`channel_role_member`는 멤버, 역할, 채널 또는 카테고리 채널이 될 수 있습니다 " + +#: assistant\commands\admin.py:3448 +msgid "{} has been removed from the blacklist" +msgstr "{} 는 블랙리스트에서 제거되었습니다" + +#: assistant\commands\admin.py:3451 +msgid "{} has been added to the blacklist" +msgstr "{}는 블랙리스트에 추가되었습니다" + +#: assistant\commands\admin.py:3464 +#, docstring +msgid "\n" +" Add/Remove items from the planner list, or view current planners.\n\n" +" Users/roles in the planner list can use the `think_and_plan` tool for complex task breakdown.\n\n" +" If the planner list is empty, everyone can use the planning tool.\n" +" If the planner list has entries, only those users/roles can use it.\n\n" +" `role_or_member` can be a member or role. Omit to view the current list.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3479 +msgid "The planner list is empty. Everyone can use the `think_and_plan` tool." +msgstr "" + +#: assistant\commands\admin.py:3484 +msgid "**Planners:** {}" +msgstr "" + +#: assistant\commands\admin.py:3486 +msgid "The planner list has invalid entries. Consider clearing it." +msgstr "" + +#: assistant\commands\admin.py:3491 +msgid "{} has been removed from the planner list" +msgstr "" + +#: assistant\commands\admin.py:3494 +msgid "{} has been added to the planner list" +msgstr "" + +#: assistant\commands\admin.py:3500 +msgid "**{}:** empty" +msgstr "" + +#: assistant\commands\admin.py:3506 +msgid "**{}:** {}" +msgstr "" + +#: assistant\commands\admin.py:3510 +#, docstring +msgid "Show the current smartmod configuration." +msgstr "" + +#: assistant\commands\admin.py:3517 +msgid "`Enabled: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3518 +msgid "`Report channel:`{}\n" +msgstr "" + +#: assistant\commands\admin.py:3519 +msgid "`OpenAI key: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3519 +msgid "OK" +msgstr "" + +#: assistant\commands\admin.py:3519 +msgid "Missing" +msgstr "" + +#: assistant\commands\admin.py:3520 +msgid "`Review model: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3520 +msgid "(default)" +msgstr "" + +#: assistant\commands\admin.py:3521 +msgid "`Context: `{} before / {} after\n" +msgstr "" + +#: assistant\commands\admin.py:3522 +msgid "`Panel timeout: `{}s\n" +msgstr "" + +#: assistant\commands\admin.py:3523 +msgid "`Auto-action: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3524 +msgid "`Exempt staff: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3525 +msgid "`Staff ping: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3526 +msgid "`Blacklist: `{} items\n" +msgstr "" + +#: assistant\commands\admin.py:3527 +msgid "`Whitelist: `{} items\n" +msgstr "" + +#: assistant\commands\admin.py:3528 +msgid "`Triggers: `{} phrases" +msgstr "" + +#: assistant\commands\admin.py:3530 +msgid "Smartmod (AI Moderation)" +msgstr "" + +#: assistant\commands\admin.py:3535 +#, docstring +msgid "Enable or disable AI moderation. Omit the state to flip it." +msgstr "" + +#: assistant\commands\admin.py:3541 +msgid "\n" +"⚠️ No OpenAI key for the scan. Set one with `{p}assistant smartmod key`." +msgstr "" + +#: assistant\commands\admin.py:3545 +msgid "\n" +"⚠️ No report channel set. Set one with `{p}assistant smartmod channel`." +msgstr "" + +#: assistant\commands\admin.py:3548 +msgid "Smartmod is now **{}**." +msgstr "" + +#: assistant\commands\admin.py:3548 +msgid "enabled" +msgstr "" + +#: assistant\commands\admin.py:3548 +msgid "disabled" +msgstr "" + +#: assistant\commands\admin.py:3553 +#, docstring +msgid "Set the channel where moderation proposals are posted. Omit to clear." +msgstr "" + +#: assistant\commands\admin.py:3556 +msgid "set to {}" +msgstr "" + +#: assistant\commands\admin.py:3556 +msgid "cleared" +msgstr "" -#: assistant\commands\admin.py:2036 assistant\commands\admin.py:2179 -msgid "Successfully imported {} embeddings!" -msgstr "{} 임베딩을 성공적으로 가져왔습니다!" +#: assistant\commands\admin.py:3557 +msgid "Report channel {}." +msgstr "" -#: assistant\commands\admin.py:2041 +#: assistant\commands\admin.py:3562 #, docstring -msgid "Import embeddings to use with the assistant\n\n" -" Args:\n" -" overwrite (bool): overwrite embeddings with existing entry names\n" +msgid "Set the smartmod review model (empty = use the server's default chat model).\n\n" +" Run with no model to open the interactive model picker — endpoint-discovered models when a\n" +" custom endpoint is set, otherwise the built-in OpenAI list.\n" " " -msgstr "어시스턴트에 사용할 임베딩을 가져옵니다.\n\n" -"인수:\n" -"- overwrite (bool): 기존 항목 이름과 임베딩을 덮어쓸지 여부 " +msgstr "" -#: assistant\commands\admin.py:2050 assistant\commands\admin.py:3202 -msgid "You must attach **.json** files to this command or reference a message that has them!" -msgstr "이 명령에는 **.json** 파일을 첨부하거나 해당 파일을 참조해야 합니다!" +#: assistant\commands\admin.py:3571 +msgid "Review model set to `{}`." +msgstr "" -#: assistant\commands\admin.py:2086 -msgid "Failed to import **{}** because it contains invalid formatting!" -msgstr "잘못된 형식을 포함하여 **{}**를 가져올 수 없습니다!" +#: assistant\commands\admin.py:3582 +msgid "Could not probe `{}` to discover models. Set one manually with `{}assistant smartmod model `." +msgstr "" -#: assistant\commands\admin.py:2091 -msgid "Imported the following files: `{}`\n" -"{} embeddings imported" -msgstr "다음 파일을 가져왔습니다: `{}`\n" -"{} 임베딩이 가져와졌습니다" +#: assistant\commands\admin.py:3602 +msgid "The review model uses the server's default chat model unless set. Valid OpenAI models:\n" +"{}\n" +"Set one with `{}assistant smartmod model `." +msgstr "" -#: assistant\commands\admin.py:2099 +#: assistant\commands\admin.py:3610 #, docstring -msgid "Import embeddings from an .xlsx file\n\n" -" Args:\n" -" overwrite (bool): overwrite embeddings with existing entry names\n" +msgid "Set the moderation review prompt.\n\n" +" Supports the {flagged_categories} placeholder plus the same standard prompt variables\n" +" as the main system prompt (server name, channel name, display name, custom cog\n" +" variables, etc.).\n\n" +" Run with no text to view the current prompt. Use `defaultprompt` to grab the built-in\n" +" default to customize, and `resetprompt` to restore it.\n" " " msgstr "" -#: assistant\commands\admin.py:2108 -msgid "You must attach **.xlsx** files to this command or reference a message that has them!" +#: assistant\commands\admin.py:3622 +msgid "Current moderation prompt (edit and re-set with `{p}assistant smartmod prompt `):" msgstr "" -#: assistant\commands\admin.py:2129 -msgid "{} is invalid! Must contain the following columns: {}" +#: assistant\commands\admin.py:3629 +msgid "Moderation prompt updated." msgstr "" -#: assistant\commands\admin.py:2183 -msgid "No embeddings needed to be updated!" +#: assistant\commands\admin.py:3634 +#, docstring +msgid "Get the built-in default moderation prompt to copy and customize." msgstr "" -#: assistant\commands\admin.py:2188 +#: assistant\commands\admin.py:3636 +msgid "Default moderation prompt - copy, edit, then set with `{p}assistant smartmod prompt `:" +msgstr "" + +#: assistant\commands\admin.py:3644 #, docstring -msgid "\n" -" Export embeddings to an .xlsx file\n\n" -" **Note:** csv exports do not include the embedding values\n" -" " +msgid "Reset the moderation review prompt to the built-in default." msgstr "" -#: assistant\commands\admin.py:2195 assistant\commands\admin.py:2241 -#: assistant\commands\admin.py:2285 -msgid "There are no embeddings to export!" -msgstr "내보낼 임베딩이 없습니다!" +#: assistant\commands\admin.py:3647 +msgid "Moderation prompt reset to default." +msgstr "" -#: assistant\commands\admin.py:2235 +#: assistant\commands\admin.py:3652 #, docstring -msgid "Export embeddings to a .csv file\n\n" -" **Note:** csv exports do not include the embedding values\n" +msgid "Set a category's flag threshold (0.0-1.0), e.g. `harassment 0.4`.\n\n" +" Run with no arguments to list every moderation category and its current threshold.\n" " " -msgstr "임베딩을 .csv 파일로 내보내기\n\n" -"**참고:** csv 내보내기에는 임베딩 값이 포함되지 않습니다 " +msgstr "" -#: assistant\commands\admin.py:2254 assistant\commands\admin.py:2274 -#: assistant\commands\admin.py:2293 assistant\commands\admin.py:2313 -#: assistant\commands\admin.py:3188 -msgid "Here is your embeddings export!" -msgstr "여기에 당신의 임베딩 내보내기가 있습니다!" +#: assistant\commands\admin.py:3661 +msgid "Set one with `{p}assistant smartmod threshold <0.0-1.0>`:\n" +"{box}" +msgstr "" -#: assistant\commands\admin.py:2257 assistant\commands\admin.py:2296 -#: assistant\commands\admin.py:3170 -msgid "File too large, attempting to compress..." -msgstr "파일이 너무 크므로 압축을 시도합니다..." +#: assistant\commands\admin.py:3669 +msgid "Unknown category. Valid categories:\n" +"{}" +msgstr "" -#: assistant\commands\admin.py:2277 assistant\commands\admin.py:2316 -#: assistant\commands\admin.py:3191 -msgid "File is still too large even with compression!" -msgstr "압축을 해도 파일이 여전히 너무 큽니다!" +#: assistant\commands\admin.py:3672 +msgid "Value must be between 0.0 and 1.0." +msgstr "" -#: assistant\commands\admin.py:2282 -#, docstring -msgid "Export embeddings to a json file" -msgstr "임베딩을 json 파일로 내보내세요" +#: assistant\commands\admin.py:3675 +msgid "Threshold for `{}` set to `{}`." +msgstr "" -#: assistant\commands\admin.py:2324 +#: assistant\commands\admin.py:3680 #, docstring -msgid "\n" -" Manage embeddings for training\n\n" -" Embeddings are used to optimize training of the assistant and minimize token usage.\n\n" -" By using this the bot can store vast amounts of contextual information without going over the token limit.\n\n" -" **Note**\n" -" You can enter a search query with this command to bring up the menu and go directly to that embedding selection.\n" -" " -msgstr "관리 임베딩을 위해\n\n" -"임베딩은 어시스턴트의 트레이닝을 최적화하고 토큰 사용을 최소화하는 데 사용됩니다.\n\n" -"이를 통해 봇은 토큰 한도를 초과하지 않고도 방대한 양의 컨텍스트 정보를 저장할 수 있습니다.\n\n" -"**참고**\n" -"이 명령어로 검색어를 입력하면 메뉴를 불러와 해당 임베딩 선택 항목으로 바로 이동할 수 있습니다. " +msgid "View the effective per-category flag thresholds." +msgstr "" -#: assistant\commands\admin.py:2374 +#: assistant\commands\admin.py:3687 #, docstring -msgid "\n" -" Add custom function calls for Assistant to use\n\n" -" **READ**\n" -" - [Function Call Docs](https://platform.openai.com/docs/guides/gpt/function-calling)\n" -" - [OpenAI Cookbook](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_call_functions_with_chat_models.ipynb)\n" -" - [JSON Schema Reference](https://json-schema.org/understanding-json-schema/)\n\n" -" The following objects are passed by default as keyword arguments.\n" -" - **user**: the user currently chatting with the bot (discord.Member)\n" -" - **channel**: channel the user is chatting in (TextChannel|Thread|ForumChannel)\n" -" - **guild**: current guild (discord.Guild)\n" -" - **bot**: the bot object (Red)\n" -" - **conf**: the config model for Assistant (GuildSettings)\n" -" - All functions **MUST** include `*args, **kwargs` in the params and return a string\n" -" ```python\n" -" # Can be either sync or async\n" -" async def func(*args, **kwargs) -> str:\n" -" ```\n" -" Only bot owner can manage this, guild owners can see descriptions but not code\n" -" " +msgid "Return (flagged_categories, formatted_table_lines) comparing each score to its threshold." msgstr "" -#: assistant\commands\admin.py:2414 +#: assistant\commands\admin.py:3701 #, docstring -msgid "List custom prompt context variables registered by other cogs." +msgid "Preview a sample message: which trigger phrases match plus each moderation score vs its threshold." msgstr "" -#: assistant\commands\admin.py:2416 -msgid "3rd party docs: {}" +#: assistant\commands\admin.py:3707 assistant\commands\admin.py:3741 +msgid "No OpenAI key available for the scan. Set one with `{p}assistant smartmod key`." msgstr "" -#: assistant\commands\admin.py:2418 -msgid "No custom context variables have been registered yet!\n" -"{}" +#: assistant\commands\admin.py:3716 assistant\commands\admin.py:3750 +msgid "Moderation scan failed — check the key or the bot logs." msgstr "" -#: assistant\commands\admin.py:2432 -msgid "Custom Variables" +#: assistant\commands\admin.py:3719 +msgid "🚩 **Would trigger review**" msgstr "" -#: assistant\commands\admin.py:2437 -msgid "Page {}/{} | {} variables" +#: assistant\commands\admin.py:3719 +msgid "✅ **Would not trigger**" +msgstr "" + +#: assistant\commands\admin.py:3721 +msgid "Matched triggers: {}" msgstr "" -#: assistant\commands\admin.py:2450 +#: assistant\commands\admin.py:3723 +msgid "Scan flagged: {}" +msgstr "" + +#: assistant\commands\admin.py:3730 #, docstring -msgid "\n" -" List all available functions and their enabled/disabled status\n\n" -" This provides a quick overview of all custom functions and 3rd party\n" -" registered functions without having to navigate through the full menu.\n" +msgid "Dry-run the FULL pipeline on sample text: scan / triggers -> review model -> action panel.\n\n" +" The review model runs for real (tools, embeddings, this channel's recent context) with you as\n" +" the simulated offender, but the panel's buttons take no real action. The review runs if a\n" +" category trips its threshold OR a trigger phrase matches (same as production).\n" " " msgstr "" -#: assistant\commands\admin.py:2463 assistant\commands\admin.py:2527 -#: assistant\commands\admin.py:2579 assistant\commands\admin.py:2676 -msgid "No functions have been registered yet!" +#: assistant\commands\admin.py:3758 +msgid "✅ Would not trigger — no category over its threshold and no trigger phrase matched." msgstr "" -#: assistant\commands\admin.py:2490 -msgid "Function List" +#: assistant\commands\admin.py:3760 +msgid "🚩 Tripped: {}" msgstr "" -#: assistant\commands\admin.py:2495 -msgid "Page {}/{} | {} enabled, {} disabled" +#: assistant\commands\admin.py:3765 +msgid "Simulation error: {}" +msgstr "" + +#: assistant\commands\admin.py:3768 +msgid "🧪 Model chose **no action**.\n" +"-# {}" +msgstr "" + +#: assistant\commands\admin.py:3768 +msgid "no reason given" +msgstr "" + +#: assistant\commands\admin.py:3770 +msgid "🧪 Model didn't reach a decision within the review turn limit." +msgstr "" + +#: assistant\commands\admin.py:3772 +msgid "🧪 Model **proposed** an action — see the dry-run panel above (buttons are no-ops)." msgstr "" -#: assistant\commands\admin.py:2511 +#: assistant\commands\admin.py:3788 #, docstring -msgid "Open the mobile-friendly AI tools manager." +msgid "Toggle a channel/category/role/member on the moderation ignore list. Omit to view." +msgstr "" + +#: assistant\commands\admin.py:3791 +msgid "Smartmod blacklist (ignored)" msgstr "" -#: assistant\commands\admin.py:2520 +#: assistant\commands\admin.py:3796 +msgid "{} removed from the smartmod blacklist." +msgstr "" + +#: assistant\commands\admin.py:3799 +msgid "{} added to the smartmod blacklist." +msgstr "" + +#: assistant\commands\admin.py:3816 #, docstring -msgid "List tool categories and their current enabled state." +msgid "Only moderate these channel/category/role/members (used only when the blacklist is empty). Omit to view." msgstr "" -#: assistant\commands\admin.py:2545 -msgid "Tool Categories" +#: assistant\commands\admin.py:3819 +msgid "Smartmod whitelist (only these)" msgstr "" -#: assistant\commands\admin.py:2547 -msgid "Page {}/{} | {} enabled of {} total" +#: assistant\commands\admin.py:3824 +msgid "{} removed from the smartmod whitelist." +msgstr "" + +#: assistant\commands\admin.py:3827 +msgid "{} added to the smartmod whitelist." msgstr "" -#: assistant\commands\admin.py:2572 +#: assistant\commands\admin.py:3832 #, docstring -msgid "Enable or disable all tools in one or more categories." +msgid "Toggle a role to ping (and authorize) when an action is proposed. Omit to view." msgstr "" -#: assistant\commands\admin.py:2589 -msgid "No valid category names provided!" +#: assistant\commands\admin.py:3835 +msgid "Smartmod staff ping roles" msgstr "" -#: assistant\commands\admin.py:2594 -msgid "The following categories do not exist: {}" +#: assistant\commands\admin.py:3840 +msgid "{} removed from the staff ping roles." msgstr "" -#: assistant\commands\admin.py:2616 -msgid "{} **Enabled Categories** ({}):\n" -"{}" +#: assistant\commands\admin.py:3843 +msgid "{} added to the staff ping roles." msgstr "" -#: assistant\commands\admin.py:2624 -msgid "{} **Disabled Categories** ({}):\n" -"{}" +#: assistant\commands\admin.py:3848 +#, docstring +msgid "Set how many messages of context to capture before/after a flagged message." +msgstr "" + +#: assistant\commands\admin.py:3853 +msgid "Context window set to {} before / {} after." msgstr "" -#: assistant\commands\admin.py:2647 +#: assistant\commands\admin.py:3861 #, docstring -msgid "\n" -" Enable or disable multiple functions at once\n\n" -" **Arguments**\n" -" - `enable`: True to enable, False to disable. Omit to toggle current state.\n" -" - `functions`: Comma-separated list of function names, or \"all\" to affect all functions\n\n" -" **Examples**\n" -" - `[p]togglefunctions get_time, get_weather` - Toggle these functions\n" -" - `[p]togglefunctions True all` - Enable all functions\n" -" - `[p]togglefunctions False get_time, get_weather` - Disable specific functions\n" -" " +msgid "Set how long the action panel stays interactive, in seconds (60-86400)." msgstr "" -#: assistant\commands\admin.py:2686 -msgid "No valid function names provided!" +#: assistant\commands\admin.py:3864 +msgid "Panel timeout set to {} seconds." msgstr "" -#: assistant\commands\admin.py:2692 -msgid "The following functions do not exist: {}" +#: assistant\commands\admin.py:3869 +#, docstring +msgid "Toggle whether the proposed action auto-executes when the panel times out." msgstr "" -#: assistant\commands\admin.py:2718 -msgid "✅ **Enabled** ({}):\n" -"{}" +#: assistant\commands\admin.py:3873 assistant\commands\admin.py:3883 +msgid "on" msgstr "" -#: assistant\commands\admin.py:2724 -msgid "❌ **Disabled** ({}):\n" -"{}" +#: assistant\commands\admin.py:3873 assistant\commands\admin.py:3883 +msgid "off" msgstr "" -#: assistant\commands\admin.py:2819 -#, docstring -msgid "\n" -" Add/Remove items from the blacklist\n\n" -" `channel_role_member` can be a member, role, channel, or category channel\n" -" " -msgstr "\n" -"블랙리스트에서 항목을 추가/제거하세요.\n\n" -"`channel_role_member`는 멤버, 역할, 채널 또는 카테고리 채널이 될 수 있습니다 " +#: assistant\commands\admin.py:3874 +msgid "Auto-action on timeout is now **{}**." +msgstr "" -#: assistant\commands\admin.py:2827 -msgid "{} has been removed from the blacklist" -msgstr "{} 는 블랙리스트에서 제거되었습니다" +#: assistant\commands\admin.py:3879 +#, docstring +msgid "Toggle skipping moderation for members with ban/kick/manage-messages permissions." +msgstr "" -#: assistant\commands\admin.py:2830 -msgid "{} has been added to the blacklist" -msgstr "{}는 블랙리스트에 추가되었습니다" +#: assistant\commands\admin.py:3883 +msgid "Exempt staff is now **{}**." +msgstr "" -#: assistant\commands\admin.py:2843 +#: assistant\commands\admin.py:3888 #, docstring -msgid "\n" -" Add/Remove items from the planner list, or view current planners.\n\n" -" Users/roles in the planner list can use the `think_and_plan` tool for complex task breakdown.\n\n" -" If the planner list is empty, everyone can use the planning tool.\n" -" If the planner list has entries, only those users/roles can use it.\n\n" -" `role_or_member` can be a member or role. Omit to view the current list.\n" +msgid "Add or remove a trigger phrase that sends a message straight to moderation review.\n\n" +" A match fires the review pipeline **in place of** the OpenAI moderation scan — so\n" +" triggers work even with no OpenAI key set. Re-run with the exact same phrase to remove it.\n\n" +" Only `*` is a wildcard (it matches any run of characters); everything else is literal,\n" +" so pasting real regex is safe and can never lock the bot up. With no `*`, the phrase\n" +" matches on word boundaries (`idiot` hits the word \"idiot\" but not \"idiotic\"); add `*`\n" +" to loosen it: `idiot*` (prefix), `*idiot` (suffix), `*idiot*` (substring anywhere).\n" " " msgstr "" -#: assistant\commands\admin.py:2858 -msgid "The planner list is empty. Everyone can use the `think_and_plan` tool." +#: assistant\commands\admin.py:3903 +msgid "Removed smartmod trigger: `{}`" msgstr "" -#: assistant\commands\admin.py:2863 -msgid "**Planners:** {}" +#: assistant\commands\admin.py:3906 +msgid "A trigger needs at least one non-`*` character." msgstr "" -#: assistant\commands\admin.py:2865 -msgid "The planner list has invalid entries. Consider clearing it." +#: assistant\commands\admin.py:3908 +msgid "That trigger is too long (max {} characters)." msgstr "" -#: assistant\commands\admin.py:2870 -msgid "{} has been removed from the planner list" +#: assistant\commands\admin.py:3911 +msgid "Added smartmod trigger `{phrase}` (matches as `{regex}`)." msgstr "" -#: assistant\commands\admin.py:2873 -msgid "{} has been added to the planner list" +#: assistant\commands\admin.py:3919 +#, docstring +msgid "List the smartmod trigger phrases and the safe pattern each one compiles to." msgstr "" -#: assistant\commands\admin.py:2878 +#: assistant\commands\admin.py:3924 +msgid "No smartmod triggers set. Add one with `{p}assistant smartmod trigger `." +msgstr "" + +#: assistant\commands\admin.py:3935 #, docstring -msgid "\n" -" Override settings for specific roles\n\n" -" **NOTE**\n" -" If a user has two roles with override settings, override associated with the higher role will be used.\n" +msgid "Set a dedicated OpenAI key for the moderation scan (opens a secure modal).\n\n" +" Use this when your chat endpoint is a custom/non-OpenAI endpoint (OpenRouter, LM Studio,\n" +" etc.): the free OpenAI moderation scan still runs against api.openai.com with this key,\n" +" while the review LLM keeps using your configured endpoint. Enter `none` to clear it.\n" " " msgstr "" -#: assistant\commands\admin.py:2887 +#: assistant\commands\admin.py:3943 +msgid "Click to set the OpenAI key used for the smartmod moderation scan\n\n" +"To remove the key, enter `none`" +msgstr "" + +#: assistant\commands\admin.py:3950 +msgid "Smartmod OpenAI key has been removed!" +msgstr "" + +#: assistant\commands\admin.py:3955 +msgid "Smartmod OpenAI key has been set!" +msgstr "" + +#: assistant\commands\admin.py:3960 #, docstring msgid "\n" " Assign a role to use a model\n\n" @@ -2026,23 +2868,23 @@ msgstr "\n" "모델을 사용하기 위해 역할을 할당하십시오.\n\n" "*동일한 역할과 모델을 지정하여 재정의를 제거하십시오* " -#: assistant\commands\admin.py:2899 +#: assistant\commands\admin.py:3974 msgid "Enter a model id supported by your custom endpoint. If it exposes `/v1/models`, you can copy one from there." msgstr "" -#: assistant\commands\admin.py:2916 +#: assistant\commands\admin.py:3991 msgid "Role override for {} removed!" msgstr "{}의 역할 재정의가 제거되었습니다!" -#: assistant\commands\admin.py:2919 +#: assistant\commands\admin.py:3994 msgid "Role override for {} overwritten!" msgstr "역할 재정의가 {}에 덮어쓰였습니다!" -#: assistant\commands\admin.py:2922 +#: assistant\commands\admin.py:3997 msgid "Role override for {} added!" msgstr "{}에 대한 역할 재정의가 추가되었습니다!" -#: assistant\commands\admin.py:2928 +#: assistant\commands\admin.py:4003 #, docstring msgid "\n" " Assign a max token override to a role\n\n" @@ -2052,19 +2894,19 @@ msgstr "\n" "역할에 최대 토큰 재정의를 할당하세요.\n\n" "*동일한 역할과 토큰 수를 지정하여 재정의를 제거하세요* " -#: assistant\commands\admin.py:2938 +#: assistant\commands\admin.py:4013 msgid "Max token override for {} removed!" msgstr "{}에 대한 최대 토큰 재정의가 제거되었습니다!" -#: assistant\commands\admin.py:2941 +#: assistant\commands\admin.py:4016 msgid "Max token override for {} overwritten!" msgstr "{}에 대한 최대 토큰 재정의가 덮어쓰였습니다!" -#: assistant\commands\admin.py:2944 +#: assistant\commands\admin.py:4019 msgid "Max token override for {} added!" msgstr "{}에 대한 최대 토큰 재정의가 추가되었습니다!" -#: assistant\commands\admin.py:2952 +#: assistant\commands\admin.py:4031 #, docstring msgid "\n" " Assign a max response token override to a role\n\n" @@ -2076,19 +2918,19 @@ msgstr "\n" "응답 토큰을 동적으로 사용하려면 0으로 설정하세요\n\n" "*동일한 역할과 토큰 수를 지정하여 재정의를 제거하세요* " -#: assistant\commands\admin.py:2964 +#: assistant\commands\admin.py:4043 msgid "Max response token override for {} removed!" msgstr "{}에 대한 최대 응답 토큰 재정의가 제거되었습니다!" -#: assistant\commands\admin.py:2967 +#: assistant\commands\admin.py:4046 msgid "Max response token override for {} overwritten!" msgstr "Max response token override for {} has been overwritten!" -#: assistant\commands\admin.py:2970 +#: assistant\commands\admin.py:4049 msgid "Max response token override for {} added!" msgstr "{}에 대한 최대 응답 토큰 재정의가 추가되었습니다!" -#: assistant\commands\admin.py:2975 +#: assistant\commands\admin.py:4054 #, docstring msgid "\n" " Assign a max message retention override to a role\n\n" @@ -2098,19 +2940,19 @@ msgstr "\n" "역할에 최대 메시지 보존 재정의를 할당하세요.\n\n" "*동일한 역할과 보존량을 지정하여 재정의를 제거하세요* " -#: assistant\commands\admin.py:2987 +#: assistant\commands\admin.py:4066 msgid "Max retention override for {} removed!" msgstr "{}에 대한 최대 보존 재정의가 제거되었습니다!" -#: assistant\commands\admin.py:2990 +#: assistant\commands\admin.py:4069 msgid "Max retention override for {} overwritten!" msgstr "최대 보존 기간 {}에 대한 재정의가 덮어쓰였습니다!" -#: assistant\commands\admin.py:2993 +#: assistant\commands\admin.py:4072 msgid "Max retention override for {} added!" msgstr "{}에 대한 최대 보존 재정의가 추가되었습니다!" -#: assistant\commands\admin.py:2998 +#: assistant\commands\admin.py:4077 #, docstring msgid "\n" " Assign a max retention time override to a role\n\n" @@ -2120,19 +2962,19 @@ msgstr "\n" "역할에 최대 보존 시간 재정의를 할당합니다.\n\n" "*동일한 역할과 시간을 지정하여 재정의를 제거합니다.* " -#: assistant\commands\admin.py:3010 +#: assistant\commands\admin.py:4089 msgid "Max retention time override for {} removed!" msgstr "{}에 대한 최대 보존 시간 재정의가 제거되었습니다!" -#: assistant\commands\admin.py:3013 +#: assistant\commands\admin.py:4092 msgid "Max retention time override for {} overwritten!" msgstr "{}에 대한 최대 보존 시간 재정의가 덮어쓰여졌습니다!" -#: assistant\commands\admin.py:3016 +#: assistant\commands\admin.py:4095 msgid "Max retention time override for {} added!" msgstr "{}에 대한 최대 보존 시간 재정의가 추가되었습니다!" -#: assistant\commands\admin.py:3021 +#: assistant\commands\admin.py:4100 #, docstring msgid "\n" " Assign a reasoning effort override to a role\n\n" @@ -2141,23 +2983,23 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:3031 +#: assistant\commands\admin.py:4110 msgid "Invalid effort level. Valid values: {}" msgstr "" -#: assistant\commands\admin.py:3038 +#: assistant\commands\admin.py:4117 msgid "Reasoning effort override for {} removed!" msgstr "" -#: assistant\commands\admin.py:3041 +#: assistant\commands\admin.py:4120 msgid "Reasoning effort override for {} overwritten!" msgstr "" -#: assistant\commands\admin.py:3044 +#: assistant\commands\admin.py:4123 msgid "Reasoning effort override for {} added!" msgstr "" -#: assistant\commands\admin.py:3049 +#: assistant\commands\admin.py:4128 #, docstring msgid "\n" " Switch verbosity level for gpt-5 model between low, medium, and high\n\n" @@ -2165,79 +3007,112 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:3057 +#: assistant\commands\admin.py:4136 msgid "Verbosity has been set to **Medium**" msgstr "" -#: assistant\commands\admin.py:3060 +#: assistant\commands\admin.py:4139 msgid "Verbosity has been set to **High**" msgstr "" -#: assistant\commands\admin.py:3063 +#: assistant\commands\admin.py:4142 msgid "Verbosity has been set to **Low**" msgstr "" -#: assistant\commands\admin.py:3075 +#: assistant\commands\admin.py:4154 +#, docstring +msgid "Set the global default chat model for guilds that haven't picked their own (owner).\n\n" +" Pairs with `[p]assistant api globalendpoint`: e.g. set `openrouter/free` so new servers\n" +" route to OpenRouter's free models instead of the built-in `gpt-5.4` default. Guilds that\n" +" chose their own model are unaffected. Omit to view; pass `none` to clear.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:4161 +msgid "(not set - guilds use their own model)" +msgstr "" + +#: assistant\commands\admin.py:4163 +msgid "Global default model: `{}`\n" +"Set with `{}assistant api globalmodel `." +msgstr "" + +#: assistant\commands\admin.py:4169 +msgid "Global default model cleared." +msgstr "" + +#: assistant\commands\admin.py:4173 +msgid "Global default model set to `{}`. Guilds without their own model will use it." +msgstr "" + +#: assistant\commands\admin.py:4180 #, docstring msgid "\n" -" Override the global OpenAI-compatible API base URL\n\n" -" Pass the full API base URL, including the scheme and the `/v1` suffix.\n\n" +" Set the global default endpoint URL (owner)\n\n" +" When set, every guild without its own endpoint override calls this\n" +" URL instead of OpenAI's default. Pass the full base URL including\n" +" the scheme and the `/v1` suffix.\n\n" " **Examples**\n" " - `http://127.0.0.1:1234/v1`\n" " - `http://localhost:5001/v1`\n" -" - `https://example.com/api/v1`\n\n" +" - `https://example.com/api/v1`\n" +" - `https://openrouter.ai/api/v1`\n\n" " **Notes**\n" -" - When set, all servers can use the assistant without needing their own API key\n" -" - Custom endpoints must be OpenAI-compatible\n" -" - This should be the SDK `base_url`, not a specific route like `/chat/completions`\n" -" - Use `[p]assistant endpointapikey` to set a global key for authenticated custom endpoints\n" +" - Endpoints must be OpenAI-compatible\n" +" - This is the SDK `base_url`, not a specific route like `/chat/completions`\n" +" - Use `[p]assistant api globalkey` to set the API key for this endpoint\n" +" - Router endpoints like OpenRouter accept special model aliases\n" +" (e.g. `openrouter/auto`, `openrouter/free`) via `[p]assistant set model`\n" " - Omit the argument to remove the override\n" " " msgstr "" -#: assistant\commands\admin.py:3097 +#: assistant\commands\admin.py:4206 msgid "Endpoint is already set to **{}**" msgstr "" -#: assistant\commands\admin.py:3101 +#: assistant\commands\admin.py:4210 msgid "Endpoint has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:3109 +#: assistant\commands\admin.py:4218 msgid "Endpoint has been changed from **{}** to **{}**" msgstr "" -#: assistant\commands\admin.py:3116 +#: assistant\commands\admin.py:4225 msgid "Endpoint override has been removed!" msgstr "" -#: assistant\commands\admin.py:3122 +#: assistant\commands\admin.py:4232 #, docstring -msgid "Probe the configured custom endpoint and cache its runtime model/capability profile" +msgid "Probe the active endpoint and refresh its cached model/capability profile\n\n" +" Checks the guild endpoint override first; if none is set, probes the\n" +" global endpoint override. Reports an error if no endpoint is configured.\n" +" " msgstr "" -#: assistant\commands\admin.py:3124 -msgid "No endpoint override is configured." +#: assistant\commands\admin.py:4240 +msgid "No endpoint override is configured for this guild or globally." msgstr "" -#: assistant\commands\admin.py:3130 -msgid "Failed to probe the configured endpoint." +#: assistant\commands\admin.py:4246 +msgid "Failed to probe `{}`." msgstr "" -#: assistant\commands\admin.py:3137 +#: assistant\commands\admin.py:4253 #, docstring msgid "Wipe all settings and data for entire cog" msgstr "전체 코그에 대한 모든 설정 및 데이터를 삭제하세요" -#: assistant\commands\admin.py:3139 +#: assistant\commands\admin.py:4255 msgid "Not wiping cog" msgstr "톱니바퀴를 닦지 않음" -#: assistant\commands\admin.py:3144 +#: assistant\commands\admin.py:4260 msgid "Cog has been wiped!" msgstr "코그가 지워졌습니다!" -#: assistant\commands\admin.py:3149 +#: assistant\commands\admin.py:4265 #, docstring msgid "\n" " Take a backup of the cog\n\n" @@ -2246,22 +3121,22 @@ msgid "\n" msgstr "코그의 백업을 만들어주세요.\n\n" "- 이는 대화 데이터를 백업하지 않습니다 " -#: assistant\commands\admin.py:3167 +#: assistant\commands\admin.py:4283 msgid "Here is your export!" msgstr "여기에 내보내기 파일이 있습니다!" -#: assistant\commands\admin.py:3196 +#: assistant\commands\admin.py:4312 #, docstring msgid "\n" " Restore the cog from a backup\n" " " msgstr "백업에서 코그를 복원하세요 " -#: assistant\commands\admin.py:3206 +#: assistant\commands\admin.py:4322 msgid "Cog has been restored!" msgstr "코그가 복원되었습니다!" -#: assistant\commands\admin.py:3212 +#: assistant\commands\admin.py:4328 #, docstring msgid "\n" " Wipe saved conversations for the assistant in all servers\n\n" @@ -2270,37 +3145,37 @@ msgid "\n" msgstr "모든 서버에서 어시스턴트의 저장된 대화를 삭제합니다. \n\n" "이로 인해 어시스턴트의 모든 저장된 대화가 삭제됩니다. " -#: assistant\commands\admin.py:3221 +#: assistant\commands\admin.py:4337 msgid "Conversations have been wiped for all servers!" msgstr "모든 서버의 대화가 삭제되었습니다!" -#: assistant\commands\admin.py:3227 +#: assistant\commands\admin.py:4343 #, docstring msgid "Toggle persistent conversations" msgstr "영구 대화 전환" -#: assistant\commands\admin.py:3230 +#: assistant\commands\admin.py:4346 msgid "Persistent conversations have been **Disabled**" msgstr "지속적인 대화가 **비활성화**되었습니다" -#: assistant\commands\admin.py:3233 +#: assistant\commands\admin.py:4349 msgid "Persistent conversations have been **Enabled**" msgstr "지속적인 대화가 **활성화**되었습니다" -#: assistant\commands\admin.py:3239 +#: assistant\commands\admin.py:4355 #, docstring msgid "Toggle whether reasoning/think blocks are uploaded as files globally" msgstr "" -#: assistant\commands\admin.py:3242 +#: assistant\commands\admin.py:4358 msgid "Reasoning blocks will now be stripped from replies without uploading think files." msgstr "" -#: assistant\commands\admin.py:3245 +#: assistant\commands\admin.py:4361 msgid "Reasoning blocks will now be uploaded as think files when present." msgstr "" -#: assistant\commands\admin.py:3251 +#: assistant\commands\admin.py:4367 #, docstring msgid "\n" " Wipe saved embeddings for all servers\n\n" @@ -2310,11 +3185,11 @@ msgstr "\n" "모든 서버의 저장된 임베딩을 지웁니다. \n\n" "이 작업은 어시스턴트의 모든 저장된 임베딩 훈련 데이터를 삭제합니다 " -#: assistant\commands\admin.py:3261 +#: assistant\commands\admin.py:4377 msgid "All embedding data has been wiped for all servers!" msgstr "모든 서버의 임베딩 데이터가 삭제되었습니다!" -#: assistant\commands\admin.py:3267 +#: assistant\commands\admin.py:4383 #, docstring msgid "\n" " Toggle whether the assistant listens to other bots\n\n" @@ -2324,113 +3199,113 @@ msgstr "\n" "다른 봇들의 음성을 듣도록 조절하세요.\n\n" "**공개 봇에는 권장하지 않습니다!** " -#: assistant\commands\admin.py:3274 +#: assistant\commands\admin.py:4390 msgid "Assistant will no longer listen to other bot messages" msgstr "어시스턴트는 더 이상 다른 봇 메시지를 듣지 않을 것입니다" -#: assistant\commands\admin.py:3277 +#: assistant\commands\admin.py:4393 msgid "Assistant will listen to other bot messages" msgstr "어시스턴트는 다른 봇 메시지를 듣습니다" -#: assistant\commands\admin.py:3285 +#: assistant\commands\admin.py:4401 #, docstring msgid "View and manage all scheduled autonomous tasks in this server." msgstr "" -#: assistant\commands\admin.py:3288 +#: assistant\commands\admin.py:4404 msgid "No scheduled tasks in this server." msgstr "" -#: assistant\commands\admin.py:3307 +#: assistant\commands\admin.py:4423 msgid "Scheduled Tasks ({})" msgstr "" -#: assistant\commands\admin.py:3317 +#: assistant\commands\admin.py:4433 #, docstring msgid "Cancel a scheduled task by its ID (admin override)." msgstr "" -#: assistant\commands\admin.py:3320 +#: assistant\commands\admin.py:4436 msgid "No scheduled task found with ID `{}`." msgstr "" -#: assistant\commands\admin.py:3322 +#: assistant\commands\admin.py:4438 msgid "That task belongs to a different server." msgstr "" -#: assistant\commands\admin.py:3331 +#: assistant\commands\admin.py:4447 msgid "Scheduled task `{}` has been cancelled." msgstr "" -#: assistant\commands\admin.py:3337 +#: assistant\commands\admin.py:4453 #, docstring msgid "Clear all scheduled tasks in this server." msgstr "" -#: assistant\commands\admin.py:3339 +#: assistant\commands\admin.py:4455 msgid "Not clearing tasks." msgstr "" -#: assistant\commands\admin.py:3350 +#: assistant\commands\admin.py:4466 msgid "Cleared {} scheduled tasks." msgstr "" -#: assistant\commands\admin.py:3356 +#: assistant\commands\admin.py:4470 #, docstring msgid "Toggle LLM-based conversation compaction on or off" msgstr "" -#: assistant\commands\admin.py:3360 +#: assistant\commands\admin.py:4474 msgid "Conversation compaction is now **Disabled** (blind degradation will be used)" msgstr "" -#: assistant\commands\admin.py:3363 +#: assistant\commands\admin.py:4477 msgid "Conversation compaction is now **Enabled**" msgstr "" -#: assistant\commands\admin.py:3368 +#: assistant\commands\admin.py:4482 #, docstring msgid "Set the model used for compaction (leave blank to use the chat model)" msgstr "" -#: assistant\commands\admin.py:3372 +#: assistant\commands\admin.py:4487 msgid "Compaction model cleared, the main chat model will be used" msgstr "" -#: assistant\commands\admin.py:3377 +#: assistant\commands\admin.py:4492 msgid "Compaction model set to **{}**" msgstr "" -#: assistant\commands\admin.py:3382 +#: assistant\commands\admin.py:4497 #, docstring msgid "Set the token threshold at which compaction triggers\n\n" " When set, the bot will proactively compact conversations once they\n" " exceed this many tokens, even if the model's context window is larger.\n\n" " Set to **0** to only compact when hitting the model's max token limit.\n\n" " **Examples**\n" -" - `[p]assistant compactionthreshold 16000` - compact at 16k tokens\n" -" - `[p]assistant compactionthreshold 0` - reset to default behavior\n" +" - `[p]assistant compaction threshold 16000` - compact at 16k tokens\n" +" - `[p]assistant compaction threshold 0` - reset to default behavior\n" " " msgstr "" -#: assistant\commands\admin.py:3394 +#: assistant\commands\admin.py:4509 msgid "Token limit must be 0 or higher" msgstr "" -#: assistant\commands\admin.py:3398 +#: assistant\commands\admin.py:4513 msgid "Compaction will now trigger at **{}** tokens" msgstr "" -#: assistant\commands\admin.py:3400 +#: assistant\commands\admin.py:4515 msgid "Compaction threshold reset, will only compact at the model's max token limit" msgstr "" -#: assistant\commands\base.py:46 +#: assistant\commands\base.py:45 #, docstring msgid "Get help using assistant" msgstr "" -#: assistant\commands\base.py:48 +#: assistant\commands\base.py:47 msgid "\n" "# How to Use\n\n" "### Commands\n" @@ -2438,6 +3313,7 @@ msgid "\n" "`[p]convocontext` - detailed token breakdown of what's consuming your context window.\n" "`[p]convocompact` - intelligently summarize older messages to free up context space.\n" "`[p]clearconvo` - reset your conversation for the current channel/thread/forum.\n" +"`[p]unchat` - cancel the active assistant response for the current channel/thread/forum.\n" "`[p]showconvo` - get a json dump of your current conversation (this is mostly for debugging)\n" "`[p]chat` or `[p]ask` - command prefix for chatting with the bot outside of the live chat, or just @ it.\n\n" "### Chat Arguments\n" @@ -2464,42 +3340,38 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:109 +#: assistant\commands\base.py:110 msgid "The API key is not set up!" msgstr "" -#: assistant\commands\base.py:111 +#: assistant\commands\base.py:112 msgid "Image generation is disabled!" msgstr "" -#: assistant\commands\base.py:120 +#: assistant\commands\base.py:121 msgid "Generating image..." msgstr "" -#: assistant\commands\base.py:124 +#: assistant\commands\base.py:125 msgid "-# Size: {}\n" "-# Quality: {}\n" "-# Model: {}" msgstr "" -#: assistant\commands\base.py:126 +#: assistant\commands\base.py:127 msgid "\n" "-# Style: {}" msgstr "" -#: assistant\commands\base.py:145 -msgid "Cost: ${}" -msgstr "" - -#: assistant\commands\base.py:150 +#: assistant\commands\base.py:155 msgid "Revised Prompt" msgstr "" -#: assistant\commands\base.py:150 +#: assistant\commands\base.py:155 msgid "Continued" msgstr "" -#: assistant\commands\base.py:170 +#: assistant\commands\base.py:178 #, docstring msgid "\n" " Chat with [botname]!\n\n" @@ -2516,7 +3388,11 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:197 +#: assistant\commands\base.py:208 +msgid "There are too many pending messages for this conversation. Please wait for the current reply." +msgstr "" + +#: assistant\commands\base.py:214 #, docstring msgid "\n" " Check the token and message count of yourself or another user's conversation for this channel\n\n" @@ -2527,7 +3403,7 @@ msgstr "이 채널에서 자신 또는 다른 사용자의 대화의 토큰 및 "대화는 사용자 및 채널별로 *개별적으로* 유지되므로 한 채널에서의 대화는 다른 채널에서의 대화와 별도로 메모리에 유지됩니다.\n\n" "대화는 봇이 다시 시작되거나 코그가 다시로드될 때까지만 메모리에 저장됩니다. " -#: assistant\commands\base.py:252 +#: assistant\commands\base.py:271 msgid "`Messages: `{}/{}\n" "`Context: `{}/{} ({:.1f}%)\n" "`Conversation:`{}\n" @@ -2536,126 +3412,126 @@ msgid "`Messages: `{}/{}\n" "`Model: `{}" msgstr "" -#: assistant\commands\base.py:271 +#: assistant\commands\base.py:290 msgid "\n" "`Tool Calls: `{}" msgstr "" -#: assistant\commands\base.py:273 +#: assistant\commands\base.py:292 msgid "\n" "`Compacted: `{} time(s)" msgstr "" -#: assistant\commands\base.py:275 +#: assistant\commands\base.py:294 msgid "*Collabroative conversations are enabled*" msgstr "" -#: assistant\commands\base.py:281 +#: assistant\commands\base.py:300 msgid "Conversation stats for {}" msgstr "{}의 대화 통계입니다" -#: assistant\commands\base.py:284 +#: assistant\commands\base.py:303 msgid "Context = conversation + overhead (prompts + function schemas)" msgstr "" -#: assistant\commands\base.py:289 +#: assistant\commands\base.py:308 msgid "System prompt override for this conversation" msgstr "" -#: assistant\commands\base.py:292 +#: assistant\commands\base.py:311 msgid "System prompt override for this channel" msgstr "" -#: assistant\commands\base.py:298 +#: assistant\commands\base.py:317 #, docstring msgid "Show a detailed token breakdown for your conversation context" msgstr "" -#: assistant\commands\base.py:334 +#: assistant\commands\base.py:353 msgid "`Max Context: `{} tokens\n" msgstr "" -#: assistant\commands\base.py:335 +#: assistant\commands\base.py:354 msgid "`Context Fill: `{:.1f}%\n" msgstr "" -#: assistant\commands\base.py:336 +#: assistant\commands\base.py:355 msgid "`Model: `{}\n" msgstr "" -#: assistant\commands\base.py:338 +#: assistant\commands\base.py:357 msgid "**Token Breakdown**\n" msgstr "" -#: assistant\commands\base.py:339 +#: assistant\commands\base.py:358 msgid "`System Prompt: `{}\n" msgstr "" -#: assistant\commands\base.py:340 +#: assistant\commands\base.py:359 msgid "`Initial Prompt: `{}\n" msgstr "" -#: assistant\commands\base.py:341 +#: assistant\commands\base.py:360 msgid "`Channel Prompt: `{}\n" msgstr "" -#: assistant\commands\base.py:342 +#: assistant\commands\base.py:361 msgid "`Function Schemas: `{} ({} functions)\n" msgstr "" -#: assistant\commands\base.py:345 +#: assistant\commands\base.py:364 msgid "`Conversation: `{}\n" msgstr "" -#: assistant\commands\base.py:346 +#: assistant\commands\base.py:365 msgid "`Total: `{}\n" msgstr "" -#: assistant\commands\base.py:348 +#: assistant\commands\base.py:367 msgid "**Message Breakdown**\n" msgstr "" -#: assistant\commands\base.py:349 +#: assistant\commands\base.py:368 msgid "`System/Developer: `{}\n" msgstr "" -#: assistant\commands\base.py:350 +#: assistant\commands\base.py:369 msgid "`User Messages: `{}\n" msgstr "" -#: assistant\commands\base.py:351 +#: assistant\commands\base.py:370 msgid "`Assistant Messages: `{}\n" msgstr "" -#: assistant\commands\base.py:352 +#: assistant\commands\base.py:371 msgid "`Tool Results: `{}\n" msgstr "" -#: assistant\commands\base.py:353 +#: assistant\commands\base.py:372 msgid "`Images: `{}\n" msgstr "" -#: assistant\commands\base.py:354 +#: assistant\commands\base.py:373 msgid "`Compaction Summaries:`{}\n" msgstr "" -#: assistant\commands\base.py:356 +#: assistant\commands\base.py:375 msgid "**Compaction**\n" msgstr "" -#: assistant\commands\base.py:357 +#: assistant\commands\base.py:376 msgid "`Times Compacted: `{}\n" msgstr "" -#: assistant\commands\base.py:367 +#: assistant\commands\base.py:386 msgid "Context Breakdown" msgstr "" -#: assistant\commands\base.py:372 +#: assistant\commands\base.py:391 msgid "Context for {}" msgstr "" -#: assistant\commands\base.py:380 +#: assistant\commands\base.py:399 #, docstring msgid "Compact your conversation using LLM summarization\n\n" " This summarizes older messages instead of deleting them, preserving\n" @@ -2666,35 +3542,35 @@ msgid "Compact your conversation using LLM summarization\n\n" " " msgstr "" -#: assistant\commands\base.py:391 +#: assistant\commands\base.py:411 msgid "No API key has been set!" msgstr "" -#: assistant\commands\base.py:393 +#: assistant\commands\base.py:413 msgid "Conversation compaction is disabled in this server." msgstr "" -#: assistant\commands\base.py:404 +#: assistant\commands\base.py:424 msgid "Only moderators can compact channel conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:409 +#: assistant\commands\base.py:429 msgid "You have no conversation history in this channel." msgstr "" -#: assistant\commands\base.py:414 +#: assistant\commands\base.py:434 msgid "Not enough messages to compact (need more than {})." msgstr "" -#: assistant\commands\base.py:434 +#: assistant\commands\base.py:453 msgid "Conversation compacted! ({} compactions total for this conversation)" msgstr "" -#: assistant\commands\base.py:439 +#: assistant\commands\base.py:458 msgid "Compaction was not needed or failed." msgstr "" -#: assistant\commands\base.py:444 +#: assistant\commands\base.py:463 #, docstring msgid "\n" " Reset your conversation with the bot\n\n" @@ -2703,112 +3579,129 @@ msgid "\n" msgstr "봇과의 대화를 초기화하시겠습니까?\n\n" "이 작업은 이 채널에서 당신과 봇 사이의 모든 메시지 기록을 지웁니다 " -#: assistant\commands\base.py:457 +#: assistant\commands\base.py:476 msgid "Only moderators can clear channel conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:461 +#: assistant\commands\base.py:481 msgid "Your conversation in this channel has been reset!" msgstr "이 채널에서의 대화가 초기화되었습니다!" -#: assistant\commands\base.py:467 +#: assistant\commands\base.py:486 +#, docstring +msgid "Cancel the active assistant response for this channel" +msgstr "" + +#: assistant\commands\base.py:494 +msgid "Only moderators can cancel channel conversations when collaborative conversations are enabled!" +msgstr "" + +#: assistant\commands\base.py:499 +msgid "There is no active assistant response to cancel in this channel." +msgstr "" + +#: assistant\commands\base.py:500 +msgid "The active assistant response for this channel has been cancelled." +msgstr "" + +#: assistant\commands\base.py:506 #, docstring msgid "\n" " Pop the last message from your conversation\n" " " msgstr "" -#: assistant\commands\base.py:478 +#: assistant\commands\base.py:517 msgid "Only moderators can pop messages from conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:482 assistant\commands\base.py:743 +#: assistant\commands\base.py:521 assistant\commands\base.py:788 msgid "There are no messages in this conversation yet!" msgstr "" -#: assistant\commands\base.py:487 +#: assistant\commands\base.py:526 msgid "Removed the last message from this conversation" msgstr "" -#: assistant\commands\base.py:507 +#: assistant\commands\base.py:546 #, docstring msgid "\n" " Get a summary of whats going on in a channel\n" " " msgstr "" -#: assistant\commands\base.py:513 +#: assistant\commands\base.py:552 msgid "Invalid timeframe! Please use a valid time format like `1h` for an hour" msgstr "" -#: assistant\commands\base.py:516 +#: assistant\commands\base.py:555 msgid "The maximum timeframe is 48 hours!" msgstr "" -#: assistant\commands\base.py:524 +#: assistant\commands\base.py:563 msgid "Only moderators can summarize conversations!" msgstr "" -#: assistant\commands\base.py:531 +#: assistant\commands\base.py:570 msgid "You don't have permission to view the channel!" msgstr "" -#: assistant\commands\base.py:538 +#: assistant\commands\base.py:577 msgid "I don't have permission to view the channel!" msgstr "" -#: assistant\commands\base.py:561 +#: assistant\commands\base.py:600 msgid "No messages found to summarize within that timeframe!" msgstr "" -#: assistant\commands\base.py:563 +#: assistant\commands\base.py:602 msgid "Not enough messages found to summarize within that timeframe!" msgstr "" -#: assistant\commands\base.py:664 +#: assistant\commands\base.py:706 msgid "The request timed out!" msgstr "" -#: assistant\commands\base.py:675 +#: assistant\commands\base.py:717 msgid "Failed to get response" msgstr "" -#: assistant\commands\base.py:678 +#: assistant\commands\base.py:720 msgid "No response was generated!" msgstr "" -#: assistant\commands\base.py:685 +#: assistant\commands\base.py:727 msgid "Timeframe: {}" msgstr "" -#: assistant\commands\base.py:692 assistant\commands\base.py:702 +#: assistant\commands\base.py:734 assistant\commands\base.py:744 msgid "Channel" msgstr "" -#: assistant\commands\base.py:724 +#: assistant\commands\base.py:769 #, docstring msgid "\n" " Copy the conversation to another channel, thread, or forum\n" " " msgstr "" -#: assistant\commands\base.py:735 +#: assistant\commands\base.py:780 msgid "Only moderators can copy conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:746 +#: assistant\commands\base.py:791 msgid "You cannot copy a conversation to a channel you can't see!" msgstr "" -#: assistant\commands\base.py:752 +#: assistant\commands\base.py:797 msgid "This conversation has been overwritten in {}" msgstr "" -#: assistant\commands\base.py:754 +#: assistant\commands\base.py:799 msgid "This conversation has been copied over to {}" msgstr "" -#: assistant\commands\base.py:764 +#: assistant\commands\base.py:809 #, docstring msgid "\n" " Set a system prompt for this conversation!\n\n" @@ -2817,28 +3710,28 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:773 +#: assistant\commands\base.py:818 msgid "Conversation system prompt overriding is **Disabled**." msgstr "" -#: assistant\commands\base.py:783 +#: assistant\commands\base.py:828 msgid "Only moderators can set conversation prompts when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:803 +#: assistant\commands\base.py:848 msgid "This prompt is uses {} tokens which is more than 90% of the maximum tokens allowed per conversation!\n" "Write a prompt using {} tokens or less to leave 10% of your token limit for responses" msgstr "" -#: assistant\commands\base.py:812 +#: assistant\commands\base.py:857 msgid "System prompt has been set for this conversation!" msgstr "" -#: assistant\commands\base.py:814 +#: assistant\commands\base.py:859 msgid "System prompt has been **Removed** for this conversation!" msgstr "" -#: assistant\commands\base.py:826 +#: assistant\commands\base.py:871 #, docstring msgid "\n" " View the current transcript of a conversation\n\n" @@ -2847,50 +3740,50 @@ msgid "\n" msgstr "현재 대화의 대본을 확인하세요.\n\n" "이는 주로 검열 목적으로 제공됩니다. " -#: assistant\commands\base.py:838 +#: assistant\commands\base.py:883 msgid "You have no conversation in this channel!" msgstr "이 채널에는 대화가 없습니다!" -#: assistant\commands\base.py:851 +#: assistant\commands\base.py:896 msgid "Here is your conversation transcript!" msgstr "여기는 대화 내용입니다!" -#: assistant\commands\base.py:857 +#: assistant\commands\base.py:902 #, docstring msgid "\n" " Import a conversation from a file\n" " " msgstr "" -#: assistant\commands\base.py:862 +#: assistant\commands\base.py:907 msgid "Please attach a file to import the conversation from!" msgstr "" -#: assistant\commands\base.py:864 +#: assistant\commands\base.py:909 msgid "Please only attach one file to import the conversation from!" msgstr "" -#: assistant\commands\base.py:867 +#: assistant\commands\base.py:912 msgid "Please upload a valid JSON file." msgstr "" -#: assistant\commands\base.py:872 +#: assistant\commands\base.py:917 msgid "Failed to parse conversation file." msgstr "" -#: assistant\commands\base.py:878 +#: assistant\commands\base.py:923 msgid "The conversation file is not in the correct format. It should be a list of messages." msgstr "" -#: assistant\commands\base.py:888 +#: assistant\commands\base.py:933 msgid "You do not have permission to import conversations." msgstr "" -#: assistant\commands\base.py:893 +#: assistant\commands\base.py:938 msgid "Conversation has been imported successfully!" msgstr "" -#: assistant\commands\base.py:899 +#: assistant\commands\base.py:944 #, docstring msgid "\n" " Fetch related embeddings according to the current topn setting along with their scores\n\n" @@ -2898,31 +3791,31 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:906 +#: assistant\commands\base.py:951 msgid "You do not have any embeddings configured!" msgstr "임베딩이 구성되어 있지 않습니다!" -#: assistant\commands\base.py:908 +#: assistant\commands\base.py:953 msgid "Top N is set to 0 so no embeddings will be returned" msgstr "Top N가 0으로 설정되어 있으므로 임베딩이 반환되지 않습니다" -#: assistant\commands\base.py:914 +#: assistant\commands\base.py:959 msgid "Failed to get embedding for your query" msgstr "쿼리에 대한 임베딩을 가져오지 못했습니다" -#: assistant\commands\base.py:923 +#: assistant\commands\base.py:968 msgid "No embeddings could be related to this query with the current settings" msgstr "현재 설정으로는 이 쿼리와 관련된 임베딩을 찾을 수 없습니다" -#: assistant\commands\base.py:927 +#: assistant\commands\base.py:972 msgid "`Entry Name: `{}\n" msgstr "`항목 이름: `{}\n" -#: assistant\commands\base.py:928 +#: assistant\commands\base.py:973 msgid "`Relatedness: `{}\n" msgstr "`관련성: `{}\n" -#: assistant\commands\base.py:929 +#: assistant\commands\base.py:974 msgid "`Dimensions: `{}\n" msgstr "`크기: `{}\n" From d28f7c7239980f11285dfbf5697632a3074537c0 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Mon, 1 Jun 2026 11:10:47 -0400 Subject: [PATCH 053/104] New translations messages.pot (Portuguese) [ci skip] --- assistant/commands/locales/pt-PT.po | 2696 ++++++++++++++++++--------- 1 file changed, 1794 insertions(+), 902 deletions(-) diff --git a/assistant/commands/locales/pt-PT.po b/assistant/commands/locales/pt-PT.po index d85db579a..83df11aed 100644 --- a/assistant/commands/locales/pt-PT.po +++ b/assistant/commands/locales/pt-PT.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-20 01:28\n" +"POT-Creation-Date: 2026-06-01 09:46-0400\n" +"PO-Revision-Date: 2026-06-01 15:10\n" "Last-Translator: \n" "Language-Team: Portuguese\n" "MIME-Version: 1.0\n" @@ -17,19 +17,19 @@ msgstr "" "X-Crowdin-File-ID: 53\n" "Language: pt_PT\n" -#: assistant\commands\admin.py:67 +#: assistant\commands\admin.py:89 msgid "Endpoint override must be a full base URL, for example `http://127.0.0.1:1234/v1` or `https://example.com/api/v1`." msgstr "" -#: assistant\commands\admin.py:72 +#: assistant\commands\admin.py:94 msgid "Endpoint override must point at the OpenAI-compatible API base path ending in `/v1`. Do not include routes like `/chat/completions` or `/models`." msgstr "" -#: assistant\commands\admin.py:81 +#: assistant\commands\admin.py:103 msgid "Empty" msgstr "" -#: assistant\commands\admin.py:90 +#: assistant\commands\admin.py:112 #, docstring msgid "\n" " Setup the assistant\n\n" @@ -40,69 +40,166 @@ msgstr "\n" " Necessita de uma **[chave api](https://platform.openai.com/account/api-keys)** da OpenAI para utilizar o ChatGPT e os seus outros modelos.\n\n" " Esta engrenagem suporta a definição de um endpoint override para modelos [self-hosted]() " -#: assistant\commands\admin.py:133 +#: assistant\commands\admin.py:122 +#, docstring +msgid "Manage API keys and endpoint URLs" +msgstr "" + +#: assistant\commands\admin.py:127 +#, docstring +msgid "Per-guild endpoint and key overrides (chat + embeddings)" +msgstr "" + +#: assistant\commands\admin.py:132 +#, docstring +msgid "Configure general guild settings" +msgstr "" + +#: assistant\commands\admin.py:137 +#, docstring +msgid "Configure assistant prompts" +msgstr "" + +#: assistant\commands\admin.py:142 +#, docstring +msgid "Configure feature toggles" +msgstr "" + +#: assistant\commands\admin.py:147 +#, docstring +msgid "Configure auto-answer settings" +msgstr "" + +#: assistant\commands\admin.py:152 +#, docstring +msgid "Configure trigger phrase system" +msgstr "" + +#: assistant\commands\admin.py:157 +#, docstring +msgid "Configure content filtering" +msgstr "" + +#: assistant\commands\admin.py:162 +#, docstring +msgid "Configure token and retention limits" +msgstr "" + +#: assistant\commands\admin.py:167 +#, docstring +msgid "Configure model behavior parameters" +msgstr "" + +#: assistant\commands\admin.py:172 +#, docstring +msgid "Configure embeddings and RAG settings" +msgstr "" + +#: assistant\commands\admin.py:177 +#, docstring +msgid "Admin maintenance commands" +msgstr "" + +#: assistant\commands\admin.py:183 +#, docstring +msgid "Configure OpenRouter response & prompt caching." +msgstr "" + +#: assistant\commands\admin.py:188 +#, docstring +msgid "Manage role-based overrides" +msgstr "" + +#: assistant\commands\admin.py:193 +#, docstring +msgid "Manage scheduled autonomous tasks" +msgstr "" + +#: assistant\commands\admin.py:198 +#, docstring +msgid "Configure conversation compaction" +msgstr "" + +#: assistant\commands\admin.py:203 +#, docstring +msgid "AI moderation: scan messages, review flagged ones, and propose staff actions." +msgstr "" + +#: assistant\commands\admin.py:244 msgid "... and {} more" msgstr "" -#: assistant\commands\admin.py:143 +#: assistant\commands\admin.py:255 msgid "Configured chat model" msgstr "" -#: assistant\commands\admin.py:144 +#: assistant\commands\admin.py:256 msgid "{}: **{}**" msgstr "" -#: assistant\commands\admin.py:147 assistant\commands\admin.py:180 +#: assistant\commands\admin.py:259 assistant\commands\admin.py:294 msgid "No endpoint model cache is available yet. Run `{}` to refresh it, or enter a model id manually." msgstr "" -#: assistant\commands\admin.py:154 +#: assistant\commands\admin.py:266 msgid "Runtime chat model: **{}**" msgstr "" -#: assistant\commands\admin.py:159 +#: assistant\commands\admin.py:271 msgid "Discovered chat models:\n" "{}" msgstr "" -#: assistant\commands\admin.py:165 +#: assistant\commands\admin.py:277 msgid "No chat models were discovered from this endpoint yet. You can still enter a model id manually." msgstr "" -#: assistant\commands\admin.py:169 assistant\commands\admin.py:204 +#: assistant\commands\admin.py:281 assistant\commands\admin.py:318 msgid "Use this command again with one of these model ids, or enter another id manually if your endpoint supports it." msgstr "" -#: assistant\commands\admin.py:177 +#: assistant\commands\admin.py:291 msgid "Configured embedding model: **{}**" msgstr "" -#: assistant\commands\admin.py:187 +#: assistant\commands\admin.py:301 msgid "Runtime embedding model: **{}**" msgstr "" -#: assistant\commands\admin.py:192 +#: assistant\commands\admin.py:306 msgid "Discovered embedding models:\n" "{}" msgstr "" -#: assistant\commands\admin.py:198 +#: assistant\commands\admin.py:312 msgid "No embedding models were discovered from this endpoint yet. You can still enter a model id manually." msgstr "" -#: assistant\commands\admin.py:217 +#: assistant\commands\admin.py:332 msgid "embedding" msgstr "" -#: assistant\commands\admin.py:217 +#: assistant\commands\admin.py:332 msgid "chat" msgstr "" -#: assistant\commands\admin.py:220 -msgid "Note: `{}` is not in the endpoint's discovered {} model list. Requests will currently resolve to `{}` unless the endpoint starts advertising or returning that model." +#: assistant\commands\admin.py:351 +msgid "Note: `{}` is not in the endpoint's discovered {} model list. Requests on this endpoint will automatically use `{}` instead." msgstr "" -#: assistant\commands\admin.py:228 +#: assistant\commands\admin.py:354 +msgid "Note: `{}` is not in the endpoint's discovered {} model list. The cog will still try to use it directly, but the endpoint may reject it." +msgstr "" + +#: assistant\commands\admin.py:400 +msgid "Warning: stored embeddings currently use mixed dimensions ({}). Run `{}` to resync them with `{}`." +msgstr "" + +#: assistant\commands\admin.py:412 +msgid "Warning: stored embeddings are `{}` dimensions, but `{}` returns `{}` dimensions. Run `{}` to resync them after switching models." +msgstr "" + +#: assistant\commands\admin.py:443 #, docstring msgid "\n" " View current settings\n\n" @@ -112,537 +209,656 @@ msgstr "\n" "Ver configurações atuais\n\n" "Para enviar no canal atual, use `[p]assistant view false` " -#: assistant\commands\admin.py:248 +#: assistant\commands\admin.py:468 msgid "`OpenAI Version: `{}\n" msgstr "`Versão OpenAI: `{}\\n\n" -#: assistant\commands\admin.py:249 +#: assistant\commands\admin.py:469 msgid "`OpenAI API Status: `{}\n" msgstr "" -#: assistant\commands\admin.py:250 +#: assistant\commands\admin.py:470 msgid "`Draw Command: `{}\n" msgstr "" -#: assistant\commands\admin.py:250 assistant\commands\admin.py:295 -#: assistant\commands\admin.py:302 assistant\commands\admin.py:312 -#: assistant\commands\admin.py:396 assistant\commands\admin.py:1346 +#: assistant\commands\admin.py:470 assistant\commands\admin.py:525 +#: assistant\commands\admin.py:532 assistant\commands\admin.py:542 +#: assistant\commands\admin.py:679 assistant\commands\admin.py:1695 msgid "Enabled" msgstr "" -#: assistant\commands\admin.py:250 assistant\commands\admin.py:295 -#: assistant\commands\admin.py:302 assistant\commands\admin.py:312 -#: assistant\commands\admin.py:396 assistant\commands\admin.py:1346 +#: assistant\commands\admin.py:470 assistant\commands\admin.py:525 +#: assistant\commands\admin.py:532 assistant\commands\admin.py:542 +#: assistant\commands\admin.py:604 assistant\commands\admin.py:679 +#: assistant\commands\admin.py:1695 msgid "Disabled" msgstr "" -#: assistant\commands\admin.py:251 +#: assistant\commands\admin.py:471 msgid "`Model: `{}\n" msgstr "`Modelo: `{}\n" -#: assistant\commands\admin.py:252 +#: assistant\commands\admin.py:472 msgid "`Embed Model: `{}\n" msgstr "" -#: assistant\commands\admin.py:253 +#: assistant\commands\admin.py:473 msgid "`Enabled: `{}\n" msgstr "`Ativado: `{}\n" -#: assistant\commands\admin.py:254 +#: assistant\commands\admin.py:474 msgid "`Timezone: `{}\n" msgstr "`Fuso horário: `{}\n" -#: assistant\commands\admin.py:255 +#: assistant\commands\admin.py:475 msgid "`Channel: `{}\n" msgstr "`Canal: `{}\n" -#: assistant\commands\admin.py:255 assistant\commands\admin.py:405 -#: assistant\commands\admin.py:412 +#: assistant\commands\admin.py:475 assistant\commands\admin.py:688 +#: assistant\commands\admin.py:695 msgid "Not Set" msgstr "Não definido" -#: assistant\commands\admin.py:256 +#: assistant\commands\admin.py:476 msgid "`? Required: `{}\n" msgstr "`? Obrigatório: `{}\n" -#: assistant\commands\admin.py:257 +#: assistant\commands\admin.py:477 msgid "`Question Mode: `{}\n" msgstr "" -#: assistant\commands\admin.py:258 +#: assistant\commands\admin.py:478 msgid "`Mention on Reply: `{}\n" msgstr "" -#: assistant\commands\admin.py:259 +#: assistant\commands\admin.py:479 msgid "`Respond to Mentions: `{}\n" msgstr "" -#: assistant\commands\admin.py:260 +#: assistant\commands\admin.py:480 msgid "`Collaborative Mode: `{}\n" msgstr "" -#: assistant\commands\admin.py:262 +#: assistant\commands\admin.py:481 msgid "`Max Retention: `{}\n" msgstr "`Retenção máxima: `{}\n" -#: assistant\commands\admin.py:263 +#: assistant\commands\admin.py:482 msgid "`Retention Expire: `{}s\n" msgstr "`Expiração da retenção: `{}s\n" -#: assistant\commands\admin.py:264 +#: assistant\commands\admin.py:483 msgid "`Max Tokens: `{}\n" msgstr "`Max Tokens: `{}\n" -#: assistant\commands\admin.py:265 +#: assistant\commands\admin.py:484 msgid "`Max Response Tokens: `{}\n" msgstr "`Tokens máximos de resposta: `{}\n" -#: assistant\commands\admin.py:266 +#: assistant\commands\admin.py:485 msgid "`Min Length: `{}\n" msgstr "`Comprimento mínimo: `{}\\n\n" -#: assistant\commands\admin.py:267 +#: assistant\commands\admin.py:486 msgid "`Temperature: `{}\n" msgstr "`Temperatura: `{}\n" -#: assistant\commands\admin.py:268 +#: assistant\commands\admin.py:487 msgid "`Frequency Penalty: `{}\n" msgstr "" -#: assistant\commands\admin.py:269 +#: assistant\commands\admin.py:488 msgid "`Presence Penalty: `{}\n" msgstr "" -#: assistant\commands\admin.py:270 +#: assistant\commands\admin.py:489 msgid "`Seed: `{}\n" msgstr "" -#: assistant\commands\admin.py:271 +#: assistant\commands\admin.py:490 msgid "`Vision Resolution: `{}\n" msgstr "" -#: assistant\commands\admin.py:272 +#: assistant\commands\admin.py:491 msgid "`Reasoning Effort: `{}\n" msgstr "" -#: assistant\commands\admin.py:273 +#: assistant\commands\admin.py:492 msgid "`Verbosity: `{}\n" msgstr "" -#: assistant\commands\admin.py:274 +#: assistant\commands\admin.py:493 msgid "`System Prompt: `{} tokens\n" msgstr "" -#: assistant\commands\admin.py:275 +#: assistant\commands\admin.py:494 msgid "`User Prompt: `{} tokens\n" msgstr "" -#: assistant\commands\admin.py:276 +#: assistant\commands\admin.py:495 msgid "`Endpoint Override: `{}\n" msgstr "" -#: assistant\commands\admin.py:280 +#: assistant\commands\admin.py:495 assistant\commands\admin.py:496 +#: assistant\commands\admin.py:3518 +msgid "Not set" +msgstr "" + +#: assistant\commands\admin.py:496 +msgid "`Guild Endpoint: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:500 +msgid "`Effective Model: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:502 +msgid "`Effective Embed: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:505 msgid "Assistant Settings" msgstr "Definições do Assistente" -#: assistant\commands\admin.py:288 +#: assistant\commands\admin.py:515 assistant\commands\admin.py:978 +#: assistant\commands\admin.py:1062 msgid "Endpoint Runtime" msgstr "" -#: assistant\commands\admin.py:290 +#: assistant\commands\admin.py:520 msgid "Auto Answer" msgstr "" -#: assistant\commands\admin.py:291 +#: assistant\commands\admin.py:521 msgid "Auto-answer will trigger the bot outside of the assistant channel if a question is detected and an embedding is not found.\n" msgstr "" -#: assistant\commands\admin.py:294 +#: assistant\commands\admin.py:524 msgid "`Model: `{}\n" msgstr "" -#: assistant\commands\admin.py:295 assistant\commands\admin.py:302 +#: assistant\commands\admin.py:525 assistant\commands\admin.py:532 msgid "`Status: `{}\n" msgstr "" -#: assistant\commands\admin.py:296 +#: assistant\commands\admin.py:526 msgid "`Threshold: `{}\n" msgstr "" -#: assistant\commands\admin.py:297 assistant\commands\admin.py:304 +#: assistant\commands\admin.py:527 assistant\commands\admin.py:534 msgid "`Ignored: `{}\n" msgstr "" -#: assistant\commands\admin.py:300 +#: assistant\commands\admin.py:530 msgid "Trigger Words" msgstr "" -#: assistant\commands\admin.py:301 +#: assistant\commands\admin.py:531 msgid "Trigger words allow the bot to respond to messages containing specific keywords or regex patterns.\n" msgstr "" -#: assistant\commands\admin.py:303 +#: assistant\commands\admin.py:533 msgid "`Phrases: `{}\n" msgstr "" -#: assistant\commands\admin.py:305 +#: assistant\commands\admin.py:535 assistant\commands\admin.py:3515 msgid "None" msgstr "" -#: assistant\commands\admin.py:307 +#: assistant\commands\admin.py:537 msgid "`Has Prompt:`{}\n" msgstr "" -#: assistant\commands\admin.py:307 +#: assistant\commands\admin.py:537 msgid "Yes" msgstr "" -#: assistant\commands\admin.py:307 +#: assistant\commands\admin.py:537 msgid "No" msgstr "" -#: assistant\commands\admin.py:310 +#: assistant\commands\admin.py:540 msgid "Think Tags" msgstr "" -#: assistant\commands\admin.py:311 +#: assistant\commands\admin.py:541 msgid "Reasoning blocks wrapped in these tags are removed from chat output.\n" msgstr "" -#: assistant\commands\admin.py:312 +#: assistant\commands\admin.py:542 msgid "`Upload as Files:`{}\n" msgstr "" -#: assistant\commands\admin.py:313 +#: assistant\commands\admin.py:543 msgid "Prefix\n" "{}\n" "Suffix\n" "{}" msgstr "" -#: assistant\commands\admin.py:320 +#: assistant\commands\admin.py:550 msgid "System prompt override is **Allowed**, users can set a personal system prompt per convo." msgstr "" -#: assistant\commands\admin.py:322 +#: assistant\commands\admin.py:552 msgid "System prompt override is **Disabled**, users cannot set a personal system prompt per convo." msgstr "" -#: assistant\commands\admin.py:323 +#: assistant\commands\admin.py:553 msgid "\n" "*This will be restricted to mods if collaborative conversations are enabled!*" msgstr "" -#: assistant\commands\admin.py:324 +#: assistant\commands\admin.py:554 msgid "System Prompt Overriding" msgstr "" -#: assistant\commands\admin.py:332 +#: assistant\commands\admin.py:562 msgid "Channel Prompt Overrides" msgstr "" -#: assistant\commands\admin.py:343 +#: assistant\commands\admin.py:578 +msgid "• System prompt - `{}`" +msgstr "" + +#: assistant\commands\admin.py:581 +msgid "• Initial prompt - `{}`" +msgstr "" + +#: assistant\commands\admin.py:586 +msgid "• <#{}> - `{}`" +msgstr "" + +#: assistant\commands\admin.py:589 +msgid "⚠️ Cache Warning" +msgstr "" + +#: assistant\commands\admin.py:590 +msgid "These prompts contain dynamic variable placeholders that break prompt prefix caching on every request. Use `{prefix}floatingcontext` to move them to the floating context block instead.\n" +msgstr "" + +#: assistant\commands\admin.py:602 +msgid "Enabled ({}s TTL)" +msgstr "" + +#: assistant\commands\admin.py:607 +msgid "Off" +msgstr "" + +#: assistant\commands\admin.py:608 +msgid "5 minutes" +msgstr "" + +#: assistant\commands\admin.py:609 +msgid "1 hour" +msgstr "" + +#: assistant\commands\admin.py:612 +msgid "OpenRouter Caching" +msgstr "" + +#: assistant\commands\admin.py:614 +msgid "`Response Cache: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:615 +msgid "`Provider Prompt Cache: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:626 msgid "Auto-Reply Channels" msgstr "" -#: assistant\commands\admin.py:352 +#: assistant\commands\admin.py:635 msgid "Mixed (Please Refresh!)" msgstr "Misto (Por favor, atualize!)" -#: assistant\commands\admin.py:354 +#: assistant\commands\admin.py:637 msgid "Synced!" msgstr "Sincronizado!" -#: assistant\commands\admin.py:356 +#: assistant\commands\admin.py:639 msgid "N/A" msgstr "N/A" -#: assistant\commands\admin.py:359 +#: assistant\commands\admin.py:642 msgid "`Top N Embeddings: `{}\n" msgstr "`Principais N Embeddings: `{}\n" -#: assistant\commands\admin.py:360 +#: assistant\commands\admin.py:643 msgid "`Min Relatedness: `{}\n" msgstr "`Parentesco mínimo: `{}\n" -#: assistant\commands\admin.py:361 +#: assistant\commands\admin.py:644 msgid "`Encodings: `{}" msgstr "" -#: assistant\commands\admin.py:365 +#: assistant\commands\admin.py:648 msgid "Embeddings ({})" msgstr "Embeddings ({})" -#: assistant\commands\admin.py:373 +#: assistant\commands\admin.py:656 msgid "The following roles/users can use the `think_and_plan` tool: " msgstr "" -#: assistant\commands\admin.py:378 +#: assistant\commands\admin.py:661 msgid "`Function Calling: `{}\n" msgstr "`Chamada de função: `{}\n" -#: assistant\commands\admin.py:379 +#: assistant\commands\admin.py:662 msgid "`Maximum Recursion: `{}\n" msgstr "`Recursão máxima: `{}\n" -#: assistant\commands\admin.py:380 +#: assistant\commands\admin.py:663 msgid "`Function Tokens: `{}\n" msgstr "`Tokens de função: `{}\n" -#: assistant\commands\admin.py:384 +#: assistant\commands\admin.py:667 msgid "The following cogs also have functions registered with the assistant\n" "{}" msgstr "As seguintes rodas dentadas também têm funções registadas no assistente\n" "{}" -#: assistant\commands\admin.py:389 +#: assistant\commands\admin.py:672 msgid "Custom Functions ({})" msgstr "Funções personalizadas ({})" -#: assistant\commands\admin.py:394 +#: assistant\commands\admin.py:677 msgid "Max tokens" msgstr "" -#: assistant\commands\admin.py:396 +#: assistant\commands\admin.py:679 msgid "`Compaction: `{}\n" msgstr "" -#: assistant\commands\admin.py:397 +#: assistant\commands\admin.py:680 msgid "`Compaction Model: `{}\n" msgstr "" -#: assistant\commands\admin.py:397 +#: assistant\commands\admin.py:680 msgid "Same as chat" msgstr "" -#: assistant\commands\admin.py:398 +#: assistant\commands\admin.py:681 msgid "`Threshold: `{}\n" msgstr "" -#: assistant\commands\admin.py:400 +#: assistant\commands\admin.py:683 msgid "Context Compaction" msgstr "" -#: assistant\commands\admin.py:404 +#: assistant\commands\admin.py:687 msgid "API Key" msgstr "" -#: assistant\commands\admin.py:411 +#: assistant\commands\admin.py:694 msgid "Endpoint Override API Key" msgstr "" -#: assistant\commands\admin.py:419 +#: assistant\commands\admin.py:702 msgid "Regex Blacklist" msgstr "Lista Negra de Regex" -#: assistant\commands\admin.py:421 +#: assistant\commands\admin.py:704 msgid "Regex Failure Blocking" msgstr "Bloqueio de falhas Regex" -#: assistant\commands\admin.py:422 +#: assistant\commands\admin.py:705 msgid "Block reply if regex replacement fails: **{}**" msgstr "Bloquear resposta se a substituição do regex falhar: **{}**" -#: assistant\commands\admin.py:427 +#: assistant\commands\admin.py:710 msgid "Conversations are stored persistently" msgstr "As conversas são armazenadas de forma persistente" -#: assistant\commands\admin.py:429 +#: assistant\commands\admin.py:712 msgid "conversations are stored in memory until reboot or reload" msgstr "as conversas são armazenadas na memória até serem reiniciadas ou recarregadas" -#: assistant\commands\admin.py:431 +#: assistant\commands\admin.py:714 msgid "Persistent Conversations" msgstr "Conversas persistentes" -#: assistant\commands\admin.py:445 +#: assistant\commands\admin.py:728 msgid "Blacklist" msgstr "Lista negra" -#: assistant\commands\admin.py:457 +#: assistant\commands\admin.py:740 msgid "Model Role Overrides" msgstr "Substituições da função de modelo" -#: assistant\commands\admin.py:468 +#: assistant\commands\admin.py:751 msgid "Max Token Role Overrides" msgstr "Substituições máximas de funções de fichas" -#: assistant\commands\admin.py:479 +#: assistant\commands\admin.py:763 msgid "Max Message Retention Role Overrides" msgstr "Substituições de função de retenção máxima de mensagens" -#: assistant\commands\admin.py:491 +#: assistant\commands\admin.py:778 msgid "Max Message Retention Time Role Overrides" msgstr "Substituições de Funções para Tempo Máximo de Retenção de Mensagens" -#: assistant\commands\admin.py:505 +#: assistant\commands\admin.py:793 msgid "Max Response Token Role Overrides" msgstr "Máximo de Substituições de Função de Token de Resposta" -#: assistant\commands\admin.py:516 +#: assistant\commands\admin.py:808 msgid "Reasoning Effort Role Overrides" msgstr "" -#: assistant\commands\admin.py:520 +#: assistant\commands\admin.py:815 msgid "Your Brave websearch API key is set!" msgstr "" -#: assistant\commands\admin.py:522 +#: assistant\commands\admin.py:817 msgid "Enables the use of the `search_web_brave` function\n" "Get your API key **[Here](https://brave.com/search/api/)**\n" msgstr "" -#: assistant\commands\admin.py:526 +#: assistant\commands\admin.py:821 msgid "Brave Websearch API key" msgstr "" -#: assistant\commands\admin.py:528 +#: assistant\commands\admin.py:823 msgid "Showing settings for {}" msgstr "Mostrando configurações para {}" -#: assistant\commands\admin.py:534 +#: assistant\commands\admin.py:829 msgid "SystemPrompt" msgstr "SistemaPrompt" -#: assistant\commands\admin.py:540 +#: assistant\commands\admin.py:835 msgid "InitialPrompt" msgstr "Olá! Como posso ajudar você hoje" -#: assistant\commands\admin.py:550 +#: assistant\commands\admin.py:845 msgid "Sent your current settings for this server in DMs!" msgstr "Enviei as suas configurações atuais para este servidor em mensagens diretas!" -#: assistant\commands\admin.py:552 +#: assistant\commands\admin.py:847 msgid "You need to allow DMs so I can message you!" msgstr "Tens de permitir DMs para que eu possa enviar-te mensagens!" -#: assistant\commands\admin.py:559 -#, docstring -msgid "View the token usage stats for this server" -msgstr "Ver as estatísticas de utilização de tokens para este servidor" - -#: assistant\commands\admin.py:562 -msgid "There is no usage data yet!" -msgstr "Ainda não existem dados de utilização!" - -#: assistant\commands\admin.py:593 -msgid "`Total: `{} (${} @ ${}/1k tokens)" -msgstr "`Total: `{} (${} @ ${}/1k tokens)" - -#: assistant\commands\admin.py:600 -msgid "Free/Self-Hosted" -msgstr "Gratuito/Auto-hospedado" - -#: assistant\commands\admin.py:604 -msgid "`Input: `{} (${} @ ${}/1k tokens)\n" -"`Output: `{} (${} @ ${}/1k tokens)\n" -"`Total: `{} (${})" -msgstr "`Entrada: `{} (${} @ ${}/1k tokens)\n" -"`Saída: `{} (${} @ ${}/1k tokens)\n" -"`Total: `{} (${})" - -#: assistant\commands\admin.py:618 -msgid "**Overall Token Usage and Cost**\n" -"`Input: `{} (${})\n" -"`Output: `{} (${})\n" -"`Total: `{} (${})\n" -"`Tool Calls: `{}\n" -msgstr "" - -#: assistant\commands\admin.py:639 -#, docstring -msgid "Reset the token usage stats for this server" -msgstr "Repor as estatísticas de utilização de tokens para este servidor" - -#: assistant\commands\admin.py:642 -msgid "Token usage stats have been reset!" -msgstr "As estatísticas de utilização de tokens foram repostas!" - -#: assistant\commands\admin.py:648 +#: assistant\commands\admin.py:854 #, docstring msgid "\n" -" Set this server's API key\n" +" Set this server's API key\n\n" +" Used for all requests from this guild - whether routing to OpenAI\n" +" directly, the guild's endpoint override, or the global endpoint\n" +" override. If not set, the global endpoint key is used as a fallback.\n" " " msgstr "" -#: assistant\commands\admin.py:654 +#: assistant\commands\admin.py:864 msgid "Click to set this server's API key\n\n" "To remove your key, enter `none`" msgstr "" -#: assistant\commands\admin.py:663 +#: assistant\commands\admin.py:873 msgid "API key has been removed!" msgstr "" -#: assistant\commands\admin.py:666 assistant\commands\admin.py:695 -#: assistant\commands\admin.py:723 +#: assistant\commands\admin.py:876 assistant\commands\admin.py:905 +#: assistant\commands\admin.py:938 assistant\commands\admin.py:3952 msgid "No API key was entered!" msgstr "Não foi introduzida nenhuma chave API!" -#: assistant\commands\admin.py:669 +#: assistant\commands\admin.py:879 msgid "API key has been set!" msgstr "" -#: assistant\commands\admin.py:679 +#: assistant\commands\admin.py:889 #, docstring msgid "\n" -" Enables use of the `search_web_brave` function\n\n" -" Get your API key **[Here](https://brave.com/search/api/)**\n" +" Set the Brave Search API key (owner) - used by the web-search tool\n\n" +" Get your API key **[here](https://brave.com/search/api/)**.\n" " " msgstr "" -#: assistant\commands\admin.py:685 +#: assistant\commands\admin.py:895 msgid "Click to set your API key\n\n" "To remove your keys, enter `none`" msgstr "" -#: assistant\commands\admin.py:693 +#: assistant\commands\admin.py:903 msgid "Brave API key has been removed!" msgstr "" -#: assistant\commands\admin.py:698 +#: assistant\commands\admin.py:908 msgid "Brave API key has been set!" msgstr "" -#: assistant\commands\admin.py:706 +#: assistant\commands\admin.py:916 #, docstring msgid "\n" -" Set the global API key used for the custom endpoint override\n\n" -" This key is only used when an endpoint override is configured and a guild\n" +" Set the global API key for the default endpoint override (owner)\n\n" +" This key is only used when a global endpoint override is set\n" +" (see `[p]assistant api globalendpoint`) and the requesting guild\n" " has not provided its own API key.\n" " " msgstr "" -#: assistant\commands\admin.py:713 +#: assistant\commands\admin.py:924 msgid "Click to set the API key used for the endpoint override\n\n" "To remove the key, enter `none`" msgstr "" -#: assistant\commands\admin.py:721 +#: assistant\commands\admin.py:933 msgid "Endpoint override API key has been removed!" msgstr "" -#: assistant\commands\admin.py:726 +#: assistant\commands\admin.py:942 msgid "Endpoint override API key has been set!" msgstr "" -#: assistant\commands\admin.py:732 +#: assistant\commands\admin.py:952 +#, docstring +msgid "\n" +" Set this guild's endpoint URL (used for both chat and embeddings)\n\n" +" The endpoint must be a full base URL ending in `/v1`, for example:\n" +" `https://openrouter.ai/api/v1`\n\n" +" Set the API key for this endpoint with `[p]assistant api key`.\n\n" +" After setting, use `[p]assistant set model` (no args) to open an\n" +" interactive model picker. Router endpoints like OpenRouter also\n" +" accept special aliases like `openrouter/auto` or `openrouter/free`.\n\n" +" Run without arguments to view the current guild endpoint.\n" +" Use `none` to remove the guild endpoint override.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:972 +msgid "Guild Endpoint Override" +msgstr "" + +#: assistant\commands\admin.py:973 +msgid "Current endpoint: `{}`" +msgstr "" + +#: assistant\commands\admin.py:983 +msgid "No guild endpoint override is set." +msgstr "" + +#: assistant\commands\admin.py:990 +msgid "Guild endpoint override has been removed!" +msgstr "" + +#: assistant\commands\admin.py:993 +msgid "No guild endpoint override was set." +msgstr "" + +#: assistant\commands\admin.py:1002 +msgid "Guild endpoint override set to `{}`" +msgstr "" + +#: assistant\commands\admin.py:1009 +msgid "Endpoint probed successfully!\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:1024 +msgid "Could not probe the endpoint automatically. You can still use it, but model discovery may be limited." +msgstr "" + +#: assistant\commands\admin.py:1032 +#, docstring +msgid "Clear this guild's endpoint override (URL and cached profile)" +msgstr "" + +#: assistant\commands\admin.py:1035 +msgid "No per-guild endpoint override is set." +msgstr "" + +#: assistant\commands\admin.py:1038 +msgid "Guild endpoint override has been cleared!" +msgstr "" + +#: assistant\commands\admin.py:1044 +#, docstring +msgid "Show this guild's API key and endpoint override status" +msgstr "" + +#: assistant\commands\admin.py:1047 +msgid "Guild API Overrides" +msgstr "" + +#: assistant\commands\admin.py:1051 +msgid "Guild API Key" +msgstr "" + +#: assistant\commands\admin.py:1052 +msgid "Set" +msgstr "" + +#: assistant\commands\admin.py:1052 +msgid "Not set (using global key)" +msgstr "" + +#: assistant\commands\admin.py:1056 +msgid "Endpoint Override" +msgstr "" + +#: assistant\commands\admin.py:1057 +msgid "Not set (using global)" +msgstr "" + +#: assistant\commands\admin.py:1070 #, docstring msgid "Set the timezone used for prompt placeholders" msgstr "Definir o fuso horário usado para os marcadores de posição do prompt" -#: assistant\commands\admin.py:738 +#: assistant\commands\admin.py:1080 msgid "Invalid Timezone, did you mean `{}`?" msgstr "Fuso horário inválido, queria dizer `{}`?" -#: assistant\commands\admin.py:740 +#: assistant\commands\admin.py:1082 msgid "Timezone set to **{}** (`{}`)" msgstr "Fuso horário definido para **{}** (`{}`)" -#: assistant\commands\admin.py:747 +#: assistant\commands\admin.py:1089 #, docstring msgid "\n" -" Set the initial prompt for GPT to use\n\n" +" Set the system prompt for GPT to use\n\n" " Check out [This Guide](https://platform.openai.com/docs/guides/prompt-engineering) for prompting help.\n\n" " **Placeholders**\n" " - **botname**: [botname]\n" @@ -681,72 +897,80 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:792 assistant\commands\admin.py:859 -#: assistant\commands\admin.py:941 assistant\commands\admin.py:998 -#: assistant\commands\admin.py:1275 assistant\commands\admin.py:1406 -#: assistant\commands\admin.py:1448 assistant\commands\base.py:791 +#: assistant\commands\admin.py:1134 assistant\commands\admin.py:1191 +#: assistant\commands\admin.py:1285 assistant\commands\admin.py:1356 +#: assistant\commands\admin.py:1622 assistant\commands\admin.py:1718 +#: assistant\commands\admin.py:1760 assistant\commands\base.py:836 msgid "Failed to read `{}`, bot owner can use `{}` for more information" msgstr "Falha na leitura de `{}`, o proprietário do bot pode usar `{}` para obter mais informações" -#: assistant\commands\admin.py:810 assistant\commands\admin.py:882 -#: assistant\commands\admin.py:959 +#: assistant\commands\admin.py:1152 assistant\commands\admin.py:1303 +#: assistant\commands\admin.py:1379 msgid "Your system and initial prompt combined will use {} tokens!\n" "Write a prompt combination using {} tokens or less to leave 10% of your configured max tokens for your response." msgstr "O seu sistema e a pergunta inicial combinados utilizarão {} tokens!\n" "Escreva uma combinação de comandos que utilize {} tokens ou menos para deixar 10% do máximo de tokens configurados para a sua resposta." -#: assistant\commands\admin.py:818 -msgid "The initial prompt has been removed!" -msgstr "O aviso inicial foi removido!" +#: assistant\commands\admin.py:1160 +msgid "The system prompt has been removed!" +msgstr "O prompt do sistema foi removido!" -#: assistant\commands\admin.py:821 -msgid "Please include an initial prompt or .txt file!\n" +#: assistant\commands\admin.py:1163 +msgid "Please include a system prompt or .txt file!\n" "Use `{}` to view details for this command" -msgstr "Inclua um prompt inicial ou um arquivo .txt!\n" -"Utilize `{}` para ver os detalhes deste comando" +msgstr "Por favor, inclua um prompt do sistema ou um arquivo .txt!\n" +"Use `{}` para visualizar os detalhes deste comando" -#: assistant\commands\admin.py:827 -msgid "The initial prompt has been overwritten!" -msgstr "A mensagem inicial foi substituída!" +#: assistant\commands\admin.py:1169 +msgid "The system prompt has been overwritten!" +msgstr "A mensagem do sistema foi substituída!" -#: assistant\commands\admin.py:830 -msgid "Initial prompt has been set!" -msgstr "O prompt inicial foi definido!" +#: assistant\commands\admin.py:1172 +msgid "System prompt has been set!" +msgstr "O prompt do sistema foi definido!" -#: assistant\commands\admin.py:837 +#: assistant\commands\admin.py:1179 #, docstring -msgid "Show the channel specific system prompt" +msgid "\n" +" Set the global default system prompt used by servers that inherit the default prompt\n\n" +" - Run without arguments to view the current global default prompt\n" +" - Use `none` to reset to the built-in default prompt\n" +" - Servers with a custom system prompt keep using their custom prompt\n" +" " msgstr "" -#: assistant\commands\admin.py:840 -msgid "No channel prompt set for {}" +#: assistant\commands\admin.py:1203 +msgid "Current global default system prompt for servers using the default or an unset system prompt:" msgstr "" -#: assistant\commands\admin.py:852 -#, docstring -msgid "Set a channel specific system prompt" +#: assistant\commands\admin.py:1204 +msgid "Servers with a custom system prompt are unchanged." msgstr "" -#: assistant\commands\admin.py:869 -msgid "Channel prompt has been removed from {}!" +#: assistant\commands\admin.py:1207 +msgid "This is currently using the built-in default prompt." msgstr "" -#: assistant\commands\admin.py:872 -msgid "No channel prompt set for {}!" +#: assistant\commands\admin.py:1209 +msgid "This is currently using a custom default prompt." msgstr "" -#: assistant\commands\admin.py:888 -msgid "Channel prompt has been overwritten for {}!" +#: assistant\commands\admin.py:1215 +msgid "Please include a system prompt or .txt file, or use `none` to reset to the built-in default." msgstr "" -#: assistant\commands\admin.py:890 -msgid "Channel prompt has been set for {}!" +#: assistant\commands\admin.py:1221 +msgid "The global default system prompt has been reset to the built-in default. Servers using the default or an unset system prompt will use it immediately." +msgstr "" + +#: assistant\commands\admin.py:1231 +msgid "The global default system prompt has been updated. Servers using the default or an unset system prompt will use it immediately." msgstr "" -#: assistant\commands\admin.py:896 +#: assistant\commands\admin.py:1240 #, docstring msgid "\n" -" Set the system prompt for GPT to use\n\n" +" Set the initial prompt for GPT to use\n\n" " Check out [This Guide](https://platform.openai.com/docs/guides/prompt-engineering) for prompting help.\n\n" " **Placeholders**\n" " - **botname**: [botname]\n" @@ -785,213 +1009,205 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:967 -msgid "The system prompt has been removed!" -msgstr "O prompt do sistema foi removido!" +#: assistant\commands\admin.py:1311 +msgid "The initial prompt has been removed!" +msgstr "O aviso inicial foi removido!" -#: assistant\commands\admin.py:970 -msgid "Please include a system prompt or .txt file!\n" +#: assistant\commands\admin.py:1314 +msgid "Please include an initial prompt or .txt file!\n" "Use `{}` to view details for this command" -msgstr "Por favor, inclua um prompt do sistema ou um arquivo .txt!\n" -"Use `{}` para visualizar os detalhes deste comando" +msgstr "Inclua um prompt inicial ou um arquivo .txt!\n" +"Utilize `{}` para ver os detalhes deste comando" -#: assistant\commands\admin.py:976 -msgid "The system prompt has been overwritten!" -msgstr "A mensagem do sistema foi substituída!" +#: assistant\commands\admin.py:1320 +msgid "The initial prompt has been overwritten!" +msgstr "A mensagem inicial foi substituída!" -#: assistant\commands\admin.py:979 -msgid "System prompt has been set!" -msgstr "O prompt do sistema foi definido!" +#: assistant\commands\admin.py:1323 +msgid "Initial prompt has been set!" +msgstr "O prompt inicial foi definido!" -#: assistant\commands\admin.py:986 +#: assistant\commands\admin.py:1334 #, docstring -msgid "\n" -" Set the global default system prompt used by servers that inherit the default prompt\n\n" -" - Run without arguments to view the current global default prompt\n" -" - Use `none` to reset to the built-in default prompt\n" -" - Servers with a custom system prompt keep using their custom prompt\n" -" " -msgstr "" - -#: assistant\commands\admin.py:1010 -msgid "Current global default system prompt for servers using the default or an unset system prompt:" +msgid "Show the channel specific system prompt" msgstr "" -#: assistant\commands\admin.py:1011 -msgid "Servers with a custom system prompt are unchanged." +#: assistant\commands\admin.py:1337 +msgid "No channel prompt set for {}" msgstr "" -#: assistant\commands\admin.py:1014 -msgid "This is currently using the built-in default prompt." +#: assistant\commands\admin.py:1349 +#, docstring +msgid "Set a channel specific system prompt" msgstr "" -#: assistant\commands\admin.py:1016 -msgid "This is currently using a custom default prompt." +#: assistant\commands\admin.py:1366 +msgid "Channel prompt has been removed from {}!" msgstr "" -#: assistant\commands\admin.py:1022 -msgid "Please include a system prompt or .txt file, or use `none` to reset to the built-in default." +#: assistant\commands\admin.py:1369 +msgid "No channel prompt set for {}!" msgstr "" -#: assistant\commands\admin.py:1028 -msgid "The global default system prompt has been reset to the built-in default. Servers using the default or an unset system prompt will use it immediately." +#: assistant\commands\admin.py:1385 +msgid "Channel prompt has been overwritten for {}!" msgstr "" -#: assistant\commands\admin.py:1038 -msgid "The global default system prompt has been updated. Servers using the default or an unset system prompt will use it immediately." +#: assistant\commands\admin.py:1387 +msgid "Channel prompt has been set for {}!" msgstr "" -#: assistant\commands\admin.py:1051 +#: assistant\commands\admin.py:1397 #, docstring msgid "Set the main auto-response channel for the assistant" msgstr "" -#: assistant\commands\admin.py:1056 +#: assistant\commands\admin.py:1402 msgid "Assistant channel has been removed" msgstr "O canal do assistente foi removido" -#: assistant\commands\admin.py:1059 +#: assistant\commands\admin.py:1405 msgid "Assistant channel has been overwritten" msgstr "O canal do assistente foi substituído" -#: assistant\commands\admin.py:1062 +#: assistant\commands\admin.py:1408 msgid "Channel id has been set" msgstr "O id do canal foi definido" -#: assistant\commands\admin.py:1068 +#: assistant\commands\admin.py:1414 #, docstring msgid "Toggle this channel as an auto-response channel" msgstr "" -#: assistant\commands\admin.py:1071 +#: assistant\commands\admin.py:1417 msgid "This channel is already set as the assistant channel!" msgstr "" -#: assistant\commands\admin.py:1074 +#: assistant\commands\admin.py:1420 msgid "I will no longer auto-respond to messages in this channel!" msgstr "" -#: assistant\commands\admin.py:1077 +#: assistant\commands\admin.py:1423 msgid "I will now auto-respond to messages in this channel!" msgstr "" -#: assistant\commands\admin.py:1082 +#: assistant\commands\admin.py:1428 #, docstring msgid "Toggle allowing per-conversation system prompt overriding" msgstr "" -#: assistant\commands\admin.py:1086 +#: assistant\commands\admin.py:1432 msgid "System prompt overriding **Disabled**, users cannot set per-convo system prompts" msgstr "" -#: assistant\commands\admin.py:1089 +#: assistant\commands\admin.py:1435 msgid "System prompt overriding **Enabled**, users can now set per-convo system prompts" msgstr "" -#: assistant\commands\admin.py:1094 +#: assistant\commands\admin.py:1440 #, docstring msgid "Toggle the assistant on or off" msgstr "Ativar ou desativar o assistente" -#: assistant\commands\admin.py:1098 +#: assistant\commands\admin.py:1444 msgid "The assistant is now **Disabled**" msgstr "O assistente está agora **Desativado**" -#: assistant\commands\admin.py:1101 +#: assistant\commands\admin.py:1447 msgid "The assistant is now **Enabled**" msgstr "O assistente está agora **Ativado**" -#: assistant\commands\admin.py:1106 +#: assistant\commands\admin.py:1452 #, docstring msgid "Toggle the draw command on or off" msgstr "" -#: assistant\commands\admin.py:1110 +#: assistant\commands\admin.py:1456 msgid "The draw command is now **Disabled**" msgstr "" -#: assistant\commands\admin.py:1113 +#: assistant\commands\admin.py:1459 msgid "The draw command is now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1118 +#: assistant\commands\admin.py:1464 #, docstring msgid "Toggle the auto-answer feature on or off" msgstr "" -#: assistant\commands\admin.py:1122 +#: assistant\commands\admin.py:1468 msgid "Auto-answer has been **Disabled**" msgstr "" -#: assistant\commands\admin.py:1125 +#: assistant\commands\admin.py:1471 msgid "Auto-answer has been **Enabled**" msgstr "" -#: assistant\commands\admin.py:1130 +#: assistant\commands\admin.py:1476 #, docstring msgid "Set the auto-answer threshold for the bot" msgstr "" -#: assistant\commands\admin.py:1133 +#: assistant\commands\admin.py:1479 msgid "Auto-answer threshold has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1140 +#: assistant\commands\admin.py:1488 #, docstring msgid "Ignore a channel for auto-answer" msgstr "" -#: assistant\commands\admin.py:1151 +#: assistant\commands\admin.py:1499 msgid "Auto-answer will no longer ignore {}" msgstr "" -#: assistant\commands\admin.py:1154 assistant\commands\admin.py:1321 +#: assistant\commands\admin.py:1502 assistant\commands\admin.py:1670 msgid "Channel not found!" msgstr "" -#: assistant\commands\admin.py:1156 +#: assistant\commands\admin.py:1504 msgid "Auto-answer will now ignore {}" msgstr "" -#: assistant\commands\admin.py:1161 +#: assistant\commands\admin.py:1509 #, docstring msgid "Set the model used for auto-answer" msgstr "" -#: assistant\commands\admin.py:1168 +#: assistant\commands\admin.py:1517 msgid "Configured auto-answer model" msgstr "" -#: assistant\commands\admin.py:1171 assistant\commands\admin.py:1791 -#: assistant\commands\admin.py:1832 assistant\commands\admin.py:1834 -#: assistant\commands\admin.py:2903 +#: assistant\commands\admin.py:1520 assistant\commands\admin.py:2139 +#: assistant\commands\admin.py:2213 assistant\commands\admin.py:2215 +#: assistant\commands\admin.py:3978 msgid "Valid models are:\n" "{}" msgstr "Os modelos válidos são:\n" "{}" -#: assistant\commands\admin.py:1173 assistant\commands\admin.py:3374 +#: assistant\commands\admin.py:1522 assistant\commands\admin.py:4489 msgid "Invalid model, valid models are: {}" msgstr "" -#: assistant\commands\admin.py:1175 +#: assistant\commands\admin.py:1524 msgid "Auto-answer model has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1186 +#: assistant\commands\admin.py:1533 #, docstring msgid "Toggle the trigger word feature on or off" msgstr "" -#: assistant\commands\admin.py:1190 +#: assistant\commands\admin.py:1537 msgid "Trigger word feature has been **Disabled**" msgstr "" -#: assistant\commands\admin.py:1193 +#: assistant\commands\admin.py:1540 msgid "Trigger word feature has been **Enabled**" msgstr "" -#: assistant\commands\admin.py:1198 +#: assistant\commands\admin.py:1545 #, docstring msgid "\n" " Add or remove a trigger phrase (supports regex)\n\n" @@ -1004,23 +1220,23 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1212 +#: assistant\commands\admin.py:1559 msgid "That regex pattern is invalid!" msgstr "" -#: assistant\commands\admin.py:1217 +#: assistant\commands\admin.py:1564 msgid "⚠️ Warning: `{}` is a very broad pattern that may match most messages!" msgstr "" -#: assistant\commands\admin.py:1222 +#: assistant\commands\admin.py:1569 msgid "Trigger phrase `{}` has been **Removed**" msgstr "" -#: assistant\commands\admin.py:1225 +#: assistant\commands\admin.py:1572 msgid "Trigger phrase `{}` has been **Added**" msgstr "" -#: assistant\commands\admin.py:1230 +#: assistant\commands\admin.py:1577 #, docstring msgid "\n" " Set the prompt to use when a trigger phrase is matched\n\n" @@ -1062,100 +1278,66 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1287 +#: assistant\commands\admin.py:1634 msgid "The trigger prompt has been removed!" msgstr "" -#: assistant\commands\admin.py:1290 +#: assistant\commands\admin.py:1637 msgid "Please include a trigger prompt or .txt file!\n" "Use `{}` to view details for this command" msgstr "" -#: assistant\commands\admin.py:1296 +#: assistant\commands\admin.py:1643 msgid "The trigger prompt has been overwritten!" msgstr "" -#: assistant\commands\admin.py:1299 +#: assistant\commands\admin.py:1646 msgid "Trigger prompt has been set!" msgstr "" -#: assistant\commands\admin.py:1307 +#: assistant\commands\admin.py:1656 #, docstring msgid "Ignore a channel or category for trigger phrases" msgstr "" -#: assistant\commands\admin.py:1318 +#: assistant\commands\admin.py:1667 msgid "Trigger phrases will no longer ignore {}" msgstr "" -#: assistant\commands\admin.py:1323 +#: assistant\commands\admin.py:1672 msgid "Trigger phrases will now ignore {}" msgstr "" -#: assistant\commands\admin.py:1329 +#: assistant\commands\admin.py:1678 #, docstring msgid "View configured trigger phrases" msgstr "" -#: assistant\commands\admin.py:1332 +#: assistant\commands\admin.py:1681 msgid "No trigger phrases configured!" msgstr "" -#: assistant\commands\admin.py:1335 +#: assistant\commands\admin.py:1684 msgid "Trigger Phrases" msgstr "" -#: assistant\commands\admin.py:1336 +#: assistant\commands\admin.py:1685 msgid "The following phrases will trigger a response:\n" msgstr "" -#: assistant\commands\admin.py:1342 +#: assistant\commands\admin.py:1691 msgid "Patterns" msgstr "" -#: assistant\commands\admin.py:1345 +#: assistant\commands\admin.py:1694 msgid "Status" msgstr "" -#: assistant\commands\admin.py:1352 +#: assistant\commands\admin.py:1701 msgid "Ignored Channels" msgstr "" -#: assistant\commands\admin.py:1358 -#, docstring -msgid "Switch vision resolution between high and low for relevant GPT-4-Turbo models" -msgstr "" - -#: assistant\commands\admin.py:1362 -msgid "Vision resolution has been set to **Low**" -msgstr "" - -#: assistant\commands\admin.py:1365 -msgid "Vision resolution has been set to **High**" -msgstr "" - -#: assistant\commands\admin.py:1368 -msgid "Vision resolution has been set to **Auto**" -msgstr "" - -#: assistant\commands\admin.py:1373 -#, docstring -msgid "Switch reasoning effort between none, minimal, low, medium, high, and xhigh\n\n" -" Not all models support every level. Unsupported levels are automatically mapped to the closest supported value.\n" -" - **none**: No reasoning (gpt-5.4 only, skipped for other models)\n" -" - **minimal**: Minimal reasoning (gpt-5 only, mapped to low for o-series)\n" -" - **low**: Low reasoning effort\n" -" - **medium**: Medium reasoning effort\n" -" - **high**: High reasoning effort\n" -" - **xhigh**: Maximum reasoning (gpt-5.4 only, mapped to high for other models)\n" -" " -msgstr "" - -#: assistant\commands\admin.py:1390 -msgid "Reasoning effort has been set to **{}**" -msgstr "" - -#: assistant\commands\admin.py:1395 +#: assistant\commands\admin.py:1707 #, docstring msgid "\n" " Set the prefix used to detect model thinking blocks\n\n" @@ -1164,29 +1346,29 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1417 +#: assistant\commands\admin.py:1729 msgid "Think tag prefix is already set to the default value." msgstr "" -#: assistant\commands\admin.py:1420 +#: assistant\commands\admin.py:1732 msgid "Think tag prefix reset to default:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1426 +#: assistant\commands\admin.py:1738 msgid "Think tag prefix cannot be empty." msgstr "" -#: assistant\commands\admin.py:1429 +#: assistant\commands\admin.py:1741 msgid "Think tag prefix is already set to that value." msgstr "" -#: assistant\commands\admin.py:1432 +#: assistant\commands\admin.py:1744 msgid "Think tag prefix has been set to:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1437 +#: assistant\commands\admin.py:1749 #, docstring msgid "\n" " Set the suffix used to detect model thinking blocks\n\n" @@ -1195,68 +1377,68 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1459 +#: assistant\commands\admin.py:1771 msgid "Think tag suffix is already set to the default value." msgstr "" -#: assistant\commands\admin.py:1462 +#: assistant\commands\admin.py:1774 msgid "Think tag suffix reset to default:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1468 +#: assistant\commands\admin.py:1780 msgid "Think tag suffix cannot be empty." msgstr "" -#: assistant\commands\admin.py:1471 +#: assistant\commands\admin.py:1783 msgid "Think tag suffix is already set to that value." msgstr "" -#: assistant\commands\admin.py:1474 +#: assistant\commands\admin.py:1786 msgid "Think tag suffix has been set to:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1479 +#: assistant\commands\admin.py:1791 #, docstring msgid "Toggle whether questions need to end with **__?__**" msgstr "Alterar se as perguntas precisam terminar com **__?__**" -#: assistant\commands\admin.py:1483 +#: assistant\commands\admin.py:1795 msgid "Questions will be answered regardless of if they end with **?**" msgstr "As perguntas serão respondidas independentemente de terminarem com **?**" -#: assistant\commands\admin.py:1486 +#: assistant\commands\admin.py:1798 msgid "Questions must end in **?** to be answered" msgstr "As perguntas devem terminar em **?** para serem respondidas" -#: assistant\commands\admin.py:1491 +#: assistant\commands\admin.py:1803 #, docstring msgid "Toggle whether the bot responds to mentions in any channel" msgstr "" -#: assistant\commands\admin.py:1495 +#: assistant\commands\admin.py:1807 msgid "The bot will no longer respond to mentions" msgstr "" -#: assistant\commands\admin.py:1498 +#: assistant\commands\admin.py:1810 msgid "The bot will now respond to mentions" msgstr "" -#: assistant\commands\admin.py:1503 +#: assistant\commands\admin.py:1815 #, docstring msgid "Toggle whether to ping the user on replies" msgstr "Alternar se o utilizador deve receber ping nas respostas" -#: assistant\commands\admin.py:1507 +#: assistant\commands\admin.py:1819 msgid "Mentions are now **Disabled**" msgstr "As menções estão agora **Desativadas**" -#: assistant\commands\admin.py:1510 +#: assistant\commands\admin.py:1822 msgid "Mentions are now **Enabled**" msgstr "As menções estão agora **ativadas**" -#: assistant\commands\admin.py:1515 +#: assistant\commands\admin.py:1827 #, docstring msgid "\n" " Toggle collaborative conversations\n\n" @@ -1264,45 +1446,39 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1523 +#: assistant\commands\admin.py:1835 msgid "Collaborative conversations are now **Disabled**" msgstr "" -#: assistant\commands\admin.py:1526 +#: assistant\commands\admin.py:1838 msgid "Collaborative conversations are now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1556 +#: assistant\commands\admin.py:1843 #, docstring msgid "\n" " Set the max messages for a conversation\n\n" " Conversation retention is cached and gets reset when the bot restarts or the cog reloads.\n\n" " Regardless of this number, the initial prompt and internal system message are always included,\n" " this only applies to any conversation between the user and bot after that.\n\n" -" Set to 0 to disable conversation retention\n\n" +" Set to 0 for unlimited conversation retention\n\n" " **Note:** *actual message count may exceed the max retention during an API call*\n" " " -msgstr "\n" -"Definir o número máximo de mensagens para uma conversa\n\n" -"A retenção da conversa é armazenada em cache e é redefinida quando o bot reinicia ou o cog é recarregado.\n\n" -"Independentemente desse número, a mensagem inicial e a mensagem interna do sistema são sempre incluídas,\n" -"isso se aplica apenas a qualquer conversa entre o usuário e o bot depois disso.\n\n" -"Defina como 0 para desativar a retenção da conversa\n\n" -"**Nota:** *a contagem real de mensagens pode exceder a retenção máxima durante uma chamada à API* " - -#: assistant\commands\admin.py:1569 assistant\commands\admin.py:2981 +msgstr "" + +#: assistant\commands\admin.py:1856 assistant\commands\admin.py:4060 msgid "Max retention needs to be at least 0 or higher" msgstr "A retenção máxima precisa ser pelo menos 0 ou maior" -#: assistant\commands\admin.py:1573 -msgid "Conversation retention has been disabled" -msgstr "A retenção de conversas foi desativada" +#: assistant\commands\admin.py:1860 +msgid "Message retention is now **unlimited**" +msgstr "" -#: assistant\commands\admin.py:1575 +#: assistant\commands\admin.py:1862 msgid "Conversations can now retain up to **{}** messages" msgstr "As conversas agora podem reter até **{}** mensagens" -#: assistant\commands\admin.py:1580 +#: assistant\commands\admin.py:1867 #, docstring msgid "\n" " Set the conversation expiration time\n\n" @@ -1315,19 +1491,60 @@ msgstr "Definir o tempo de expiração da conversação\n\n" "isto só se aplica a qualquer conversa entre o utilizador e o bot depois disso.\n\n" "Definir como 0 para guardar as conversas indefinidamente ou até o bot reiniciar ou o cog ser recarregado " -#: assistant\commands\admin.py:1589 assistant\commands\admin.py:3004 +#: assistant\commands\admin.py:1876 assistant\commands\admin.py:4083 msgid "Max retention time needs to be at least 0 or higher" msgstr "O tempo máximo de retenção precisa ser pelo menos 0 ou maior" -#: assistant\commands\admin.py:1593 +#: assistant\commands\admin.py:1880 msgid "Conversations will be stored until the bot restarts or the cog is reloaded" msgstr "As conversas serão armazenadas até que o bot seja reiniciado ou o cog seja recarregado" -#: assistant\commands\admin.py:1595 +#: assistant\commands\admin.py:1882 msgid "Conversations will be considered active for **{}** seconds" msgstr "As conversas serão consideradas ativas por **{}** segundos" -#: assistant\commands\admin.py:1600 +#: assistant\commands\admin.py:1887 +#, docstring +msgid "\n" +" Set maximum tokens a convo can consume\n\n" +" Set to 0 for dynamic token usage\n\n" +" **Tips**\n" +" - Max tokens are a soft cap, sometimes messages can be a little over\n" +" - If you set max tokens too high the cog will auto-adjust to 100 less than the models natural cap\n" +" - Ideally set max to 500 less than that models maximum, to allow adequate responses\n\n" +" Using more than the model can handle will raise exceptions.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:1902 +msgid "The maximum amount of tokens sent in a payload will be {}.\n" +"*Note that models with token limits lower than this will still be trimmed*" +msgstr "A quantidade máxima de tokens enviados em um payload será {}.\n" +"*Observe que os modelos com limites de tokens inferiores a este ainda serão cortados*" + +#: assistant\commands\admin.py:1907 +msgid "The maximum amount of tokens sent in a payload will be dynamic" +msgstr "" + +#: assistant\commands\admin.py:1913 +#, docstring +msgid "\n" +" Set the max response tokens the model can respond with\n\n" +" Set to 0 for response tokens to be dynamic\n" +" " +msgstr "\n" +" Definir o número máximo de tokens de resposta com que o modelo pode responder\n\n" +" Definir como 0 para que os tokens de resposta sejam dinâmicos " + +#: assistant\commands\admin.py:1921 +msgid "The maximum amount of tokens in the models responses will be {}." +msgstr "A quantidade máxima de tokens nas respostas dos modelos será {}." + +#: assistant\commands\admin.py:1923 +msgid "Response tokens will now be dynamic" +msgstr "Os tokens de resposta agora serão dinâmicos" + +#: assistant\commands\admin.py:1929 #, docstring msgid "\n" " Set the temperature for the model (0.0 - 2.0)\n" @@ -1336,15 +1553,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1607 +#: assistant\commands\admin.py:1936 msgid "Temperature must be between **0.0** and **2.0**" msgstr "A temperatura deve estar compreendida entre **0,0** e **2,0**" -#: assistant\commands\admin.py:1612 +#: assistant\commands\admin.py:1941 msgid "Temperature has been set to **{}**" msgstr "A temperatura foi definida para **{}**" -#: assistant\commands\admin.py:1616 +#: assistant\commands\admin.py:1945 #, docstring msgid "\n" " Set the frequency penalty for the model (-2.0 to 2.0)\n" @@ -1353,15 +1570,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1623 +#: assistant\commands\admin.py:1952 msgid "Frequency penalty must be between **-2.0** and **2.0**" msgstr "" -#: assistant\commands\admin.py:1628 +#: assistant\commands\admin.py:1957 msgid "Frequency penalty has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1632 +#: assistant\commands\admin.py:1961 #, docstring msgid "\n" " Set the presence penalty for the model (-2.0 to 2.0)\n" @@ -1370,15 +1587,49 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1639 +#: assistant\commands\admin.py:1968 msgid "Presence penalty must be between **-2.0** and **2.0**" msgstr "" -#: assistant\commands\admin.py:1644 +#: assistant\commands\admin.py:1973 msgid "Presence penalty has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1648 +#: assistant\commands\admin.py:1977 +#, docstring +msgid "Switch vision resolution between high and low for relevant GPT-4-Turbo models" +msgstr "" + +#: assistant\commands\admin.py:1981 +msgid "Vision resolution has been set to **Low**" +msgstr "" + +#: assistant\commands\admin.py:1984 +msgid "Vision resolution has been set to **High**" +msgstr "" + +#: assistant\commands\admin.py:1987 +msgid "Vision resolution has been set to **Auto**" +msgstr "" + +#: assistant\commands\admin.py:1992 +#, docstring +msgid "Switch reasoning effort between none, minimal, low, medium, high, and xhigh\n\n" +" Not all models support every level. Unsupported levels are automatically mapped to the closest supported value.\n" +" - **none**: No reasoning (gpt-5.4 only, skipped for other models)\n" +" - **minimal**: Minimal reasoning (gpt-5 only, mapped to low for o-series)\n" +" - **low**: Low reasoning effort\n" +" - **medium**: Medium reasoning effort\n" +" - **high**: High reasoning effort\n" +" - **xhigh**: Maximum reasoning (gpt-5.4 only, mapped to high for other models)\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2009 +msgid "Reasoning effort has been set to **{}**" +msgstr "" + +#: assistant\commands\admin.py:2014 #, docstring msgid "\n" " Make the model more deterministic by setting a seed for the model.\n" @@ -1387,15 +1638,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1655 +#: assistant\commands\admin.py:2021 msgid "Seed must be a positive integer" msgstr "" -#: assistant\commands\admin.py:1659 +#: assistant\commands\admin.py:2025 msgid "The seed has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1663 +#: assistant\commands\admin.py:2032 #, docstring msgid "\n" " Refresh embedding weights\n\n" @@ -1404,47 +1655,43 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1676 +#: assistant\commands\admin.py:2045 msgid "{} embeddings have been updated" msgstr "As incrustações {} foram atualizadas" -#: assistant\commands\admin.py:1678 +#: assistant\commands\admin.py:2047 msgid "No embeddings needed to be refreshed" msgstr "Não é necessário atualizar as incorporações" -#: assistant\commands\admin.py:1682 +#: assistant\commands\admin.py:2051 #, docstring msgid "Toggle whether GPT can call functions" msgstr "" -#: assistant\commands\admin.py:1686 +#: assistant\commands\admin.py:2055 msgid "Assistant will not call functions" msgstr "O Assistente não irá chamar funções" -#: assistant\commands\admin.py:1689 +#: assistant\commands\admin.py:2058 msgid "Assistant will now call functions as needed" msgstr "O assistente agora irá chamar as funções conforme necessário" -#: assistant\commands\admin.py:1694 +#: assistant\commands\admin.py:2063 #, docstring msgid "Set the maximum function calls allowed in a row\n\n" -" This sets how many times the model can call functions in a row\n\n" -" Only the following models can call functions at the moment\n" -" - gpt-4o-mini\n" -" - gpt-4o\n" -" - ect..\n" +" This sets how many times the model can call functions in a row\n" " " msgstr "" -#: assistant\commands\admin.py:1706 +#: assistant\commands\admin.py:2070 msgid "Function calls will not be used since recursion is 0" msgstr "As chamadas de função não serão usadas, uma vez que a recursão é 0" -#: assistant\commands\admin.py:1708 +#: assistant\commands\admin.py:2072 msgid "The model can now call various functions up to {} times before returning a response" msgstr "O modelo agora pode chamar várias funções até {} vezes antes de retornar uma resposta" -#: assistant\commands\admin.py:1714 +#: assistant\commands\admin.py:2078 #, docstring msgid "\n" " set min character length for questions\n\n" @@ -1453,88 +1700,64 @@ msgid "\n" msgstr "definir o comprimento mínimo de caracteres para as perguntas\n\n" "Definir como 0 para responder a qualquer coisa " -#: assistant\commands\admin.py:1720 +#: assistant\commands\admin.py:2084 msgid "Minimum length needs to be at least 0 or higher" msgstr "O comprimento mínimo precisa ser pelo menos 0 ou maior" -#: assistant\commands\admin.py:1724 +#: assistant\commands\admin.py:2088 msgid "{} will respond regardless of message length" msgstr "{} responderá independentemente do comprimento da mensagem" -#: assistant\commands\admin.py:1727 +#: assistant\commands\admin.py:2091 msgid "{} will respond to messages with more than **{}** characters" msgstr "{} responderá a mensagens com mais de **{}** caracteres" -#: assistant\commands\admin.py:1735 +#: assistant\commands\admin.py:2099 #, docstring msgid "\n" -" Set maximum tokens a convo can consume\n\n" -" Set to 0 for dynamic token usage\n\n" -" **Tips**\n" -" - Max tokens are a soft cap, sometimes messages can be a little over\n" -" - If you set max tokens too high the cog will auto-adjust to 100 less than the models natural cap\n" -" - Ideally set max to 500 less than that models maximum, to allow adequate responses\n\n" -" Using more than the model can handle will raise exceptions.\n" +" Set the chat model to use\n\n" +" Run without arguments to open an interactive picker that lists every\n" +" model your endpoint advertises, grouped by provider. The picker also\n" +" accepts manual entry - useful for router aliases like\n" +" `openrouter/auto` or `openrouter/free`.\n" " " msgstr "" -#: assistant\commands\admin.py:1750 -msgid "The maximum amount of tokens sent in a payload will be {}.\n" -"*Note that models with token limits lower than this will still be trimmed*" -msgstr "A quantidade máxima de tokens enviados em um payload será {}.\n" -"*Observe que os modelos com limites de tokens inferiores a este ainda serão cortados*" - -#: assistant\commands\admin.py:1755 -msgid "The maximum amount of tokens sent in a payload will be dynamic" -msgstr "" - -#: assistant\commands\admin.py:1761 -#, docstring -msgid "\n" -" Set the max response tokens the model can respond with\n\n" -" Set to 0 for response tokens to be dynamic\n" -" " -msgstr "\n" -" Definir o número máximo de tokens de resposta com que o modelo pode responder\n\n" -" Definir como 0 para que os tokens de resposta sejam dinâmicos " - -#: assistant\commands\admin.py:1769 -msgid "The maximum amount of tokens in the models responses will be {}." -msgstr "A quantidade máxima de tokens nas respostas dos modelos será {}." - -#: assistant\commands\admin.py:1771 -msgid "Response tokens will now be dynamic" -msgstr "Os tokens de resposta agora serão dinâmicos" - -#: assistant\commands\admin.py:1777 -#, docstring -msgid "\n" -" Set the OpenAI model to use\n" -" " +#: assistant\commands\admin.py:2121 +msgid "Could not probe `{}` to discover available models. Try setting a model id manually, e.g. `{}assistant set model openrouter/auto`." msgstr "" -#: assistant\commands\admin.py:1798 assistant\commands\admin.py:2910 +#: assistant\commands\admin.py:2146 assistant\commands\admin.py:3985 msgid "Error: {}" msgstr "" -#: assistant\commands\admin.py:1802 +#: assistant\commands\admin.py:2150 msgid "The **{}** model will now be used" msgstr "O modelo **{}** será agora utilizado" -#: assistant\commands\admin.py:1809 +#: assistant\commands\admin.py:2157 msgid "**Note**: Starting with `o1-2024-12-17`, reasoning models in the API will avoid generating responses with markdown formatting. To signal to the model when you do want markdown formatting in the response, include the string `Formatting re-enabled` on the first line of your system message." msgstr "" -#: assistant\commands\admin.py:1818 +#: assistant\commands\admin.py:2166 #, docstring -msgid "Set the OpenAI Embedding model to use" +msgid "\n" +" Set the embedding model to use\n\n" +" Run without arguments to open an interactive picker that lists\n" +" every embedding model your endpoint advertises, grouped by provider.\n" +" Embeddings use the same endpoint as chat.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2192 +msgid "Could not probe `{}` to discover available embedding models. Try setting an id manually, e.g. `{}assistant embed model text-embedding-3-small`." msgstr "" -#: assistant\commands\admin.py:1836 +#: assistant\commands\admin.py:2217 msgid "The **{}** model will now be used for embeddings" msgstr "" -#: assistant\commands\admin.py:1845 +#: assistant\commands\admin.py:2225 #, docstring msgid "\n" " Wipe saved embeddings for the assistant\n\n" @@ -1543,15 +1766,15 @@ msgid "\n" msgstr "Limpar os embeddings guardados para o assistente.\n\n" "Esta ação elimina todos e quaisquer dados de treino de incorporação guardados para o assistente " -#: assistant\commands\admin.py:1851 assistant\commands\admin.py:3257 +#: assistant\commands\admin.py:2231 assistant\commands\admin.py:4373 msgid "Not wiping embedding data" msgstr "Não apagando os dados de incorporação" -#: assistant\commands\admin.py:1855 +#: assistant\commands\admin.py:2235 msgid "All embedding data has been wiped!" msgstr "Todos os dados de incorporação foram apagados!" -#: assistant\commands\admin.py:1860 +#: assistant\commands\admin.py:2240 #, docstring msgid "\n" " Wipe saved conversations for the assistant in this server\n\n" @@ -1560,15 +1783,15 @@ msgid "\n" msgstr "Limpar as conversas guardadas para o assistente neste servidor.\n\n" "Esta ação elimina todas e quaisquer conversas guardadas para o assistente " -#: assistant\commands\admin.py:1866 assistant\commands\admin.py:3218 +#: assistant\commands\admin.py:2246 assistant\commands\admin.py:4334 msgid "Not wiping conversations" msgstr "Não apagando as conversas" -#: assistant\commands\admin.py:1870 +#: assistant\commands\admin.py:2250 msgid "Conversations have been wiped in this server!" msgstr "As conversas foram apagadas neste servidor!" -#: assistant\commands\admin.py:1875 +#: assistant\commands\admin.py:2255 #, docstring msgid "\n" " Set the embedding inclusion amout\n\n" @@ -1576,19 +1799,19 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1881 +#: assistant\commands\admin.py:2261 msgid "Top N must be between 0 and 10" msgstr "Top N deve estar entre 0 e 10" -#: assistant\commands\admin.py:1885 +#: assistant\commands\admin.py:2265 msgid "Embeddings will not be pulled during conversations" msgstr "As incorporações não serão retiradas durante as conversações" -#: assistant\commands\admin.py:1887 +#: assistant\commands\admin.py:2267 msgid "Up to **{}** embeddings will be pulled for each interaction" msgstr "Serão extraídos até **{}** embeddings para cada interação" -#: assistant\commands\admin.py:1892 +#: assistant\commands\admin.py:2272 #, docstring msgid "\n" " Set the minimum relatedness an embedding must be to include with the prompt\n\n" @@ -1601,32 +1824,32 @@ msgstr "Definir a relação mínima que uma incorporação deve ter para ser inc "As perguntas são convertidas em incorporações e comparadas com as incorporações armazenadas para selecionar as mais relevantes; esta é a pontuação derivada dessa comparação.\n\n" "**Dica**: Quanto mais próximo de 1 estiver, mais determinísticos e precisos serão os resultados, mas não seja *muito* rigoroso ou não haverá resultados " -#: assistant\commands\admin.py:1902 +#: assistant\commands\admin.py:2282 msgid "Minimum relatedness must be between 0 and 1" msgstr "O grau mínimo de relacionamento deve estar entre 0 e 1" -#: assistant\commands\admin.py:1905 +#: assistant\commands\admin.py:2285 msgid "Minimum relatedness has been set to **{}**" msgstr "O parentesco mínimo foi definido para **{}**" -#: assistant\commands\admin.py:1910 +#: assistant\commands\admin.py:2290 #, docstring msgid "Remove certain words/phrases in the bot's responses" msgstr "Remover certas palavras/frases nas respostas do bot" -#: assistant\commands\admin.py:1914 +#: assistant\commands\admin.py:2294 msgid "That regex is invalid" msgstr "Esse regex é inválido" -#: assistant\commands\admin.py:1918 +#: assistant\commands\admin.py:2298 msgid "`{}` has been **Removed** from the blacklist" msgstr "`{}` foi **Removido** da lista negra" -#: assistant\commands\admin.py:1921 +#: assistant\commands\admin.py:2301 msgid "`{}` has been **Added** to the blacklist" msgstr "`{}` foi **Adicionado** à lista negra" -#: assistant\commands\admin.py:1926 +#: assistant\commands\admin.py:2306 #, docstring msgid "\n" " Toggle whether failed regex blocks the assistant's reply\n\n" @@ -1637,15 +1860,15 @@ msgstr "Altere se o regex falhado bloqueia a resposta do assistente.\n\n" "Alguns regexes podem causar [catastrophic backtracking](https://www.rexegg.com/regex-explosive-quantifiers.html).\n" "O bot pode lidar com segurança se isso acontecer e irá continuar ou bloquear a resposta " -#: assistant\commands\admin.py:1935 +#: assistant\commands\admin.py:2315 msgid "If a regex blacklist fails, the bots reply will be blocked" msgstr "Se uma lista negra de regex falhar, a resposta dos bots será bloqueada" -#: assistant\commands\admin.py:1938 +#: assistant\commands\admin.py:2318 msgid "If a reges blacklist fails, the bot will still reply" msgstr "Se uma lista negra de reges falhar, o bot ainda irá responder" -#: assistant\commands\admin.py:1943 +#: assistant\commands\admin.py:2323 #, docstring msgid "\n" " Toggle question mode\n\n" @@ -1653,15 +1876,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1951 +#: assistant\commands\admin.py:2331 msgid "Question mode is now **Disabled**" msgstr "" -#: assistant\commands\admin.py:1954 +#: assistant\commands\admin.py:2334 msgid "Question mode is now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1959 +#: assistant\commands\admin.py:2339 #, docstring msgid "Import embeddings to use with the assistant\n\n" " Args:\n" @@ -1673,357 +1896,975 @@ msgstr "Importar embeddings para usar com o assistente\n\n" " overwrite (bool): substituir embeddings com nomes de entrada existentes\n\n" " Isso também irá ler arquivos do Excel " -#: assistant\commands\admin.py:1972 +#: assistant\commands\admin.py:2352 msgid "You must attach **.csv** files to this command or reference a message that has them!" msgstr "É necessário anexar ficheiros **.csv** a este comando ou fazer referência a uma mensagem que os tenha!" -#: assistant\commands\admin.py:1985 assistant\commands\admin.py:2062 -#: assistant\commands\admin.py:2122 +#: assistant\commands\admin.py:2365 assistant\commands\admin.py:2442 +#: assistant\commands\admin.py:2505 msgid "Error reading **{}**: {}" msgstr "Erro ao ler **{}**: {}" -#: assistant\commands\admin.py:1990 +#: assistant\commands\admin.py:2370 msgid "**{}** contains invalid formatting, columns must be " msgstr "**{}** contém formatação inválida, as colunas devem ser " -#: assistant\commands\admin.py:1998 +#: assistant\commands\admin.py:2378 msgid "There are no valid files to import!" msgstr "Não existem ficheiros válidos para importar!" -#: assistant\commands\admin.py:2000 assistant\commands\admin.py:2137 +#: assistant\commands\admin.py:2380 assistant\commands\admin.py:2520 msgid "Processing the following files in the background\n" "{}" msgstr "Processando os seguintes arquivos em segundo plano\n" "{}" -#: assistant\commands\admin.py:2014 assistant\commands\admin.py:2148 +#: assistant\commands\admin.py:2394 assistant\commands\admin.py:2531 msgid "processing" msgstr "processamento" -#: assistant\commands\admin.py:2016 assistant\commands\admin.py:2150 +#: assistant\commands\admin.py:2396 assistant\commands\admin.py:2533 msgid "overwriting" msgstr "sobregravação" -#: assistant\commands\admin.py:2024 assistant\commands\admin.py:2158 +#: assistant\commands\admin.py:2404 assistant\commands\admin.py:2541 msgid "{}\n" "`Currently {}: `**{}** ({}/{})" msgstr "{}\n" "`Atualmente {}: `**{}** ({}/{})" -#: assistant\commands\admin.py:2030 assistant\commands\admin.py:2165 +#: assistant\commands\admin.py:2410 assistant\commands\admin.py:2551 msgid "Failed to process embedding: `{}`" msgstr "Falha ao processar a incorporação: `{}`" -#: assistant\commands\admin.py:2035 assistant\commands\admin.py:2178 -#: assistant\commands\admin.py:2182 -msgid "{}\n" -"**COMPLETE**" -msgstr "{}\n" -"**COMPLETO**" +#: assistant\commands\admin.py:2415 assistant\commands\admin.py:2564 +#: assistant\commands\admin.py:2568 +msgid "{}\n" +"**COMPLETE**" +msgstr "{}\n" +"**COMPLETO**" + +#: assistant\commands\admin.py:2416 assistant\commands\admin.py:2565 +msgid "Successfully imported {} embeddings!" +msgstr "Importou com sucesso {} embeddings!" + +#: assistant\commands\admin.py:2421 +#, docstring +msgid "Import embeddings to use with the assistant\n\n" +" Args:\n" +" overwrite (bool): overwrite embeddings with existing entry names\n" +" " +msgstr "Importar embeddings para usar com o assistente\n\n" +" Args:\n" +" overwrite (bool): substituir embeddings com nomes de entrada existentes " + +#: assistant\commands\admin.py:2430 assistant\commands\admin.py:4318 +msgid "You must attach **.json** files to this command or reference a message that has them!" +msgstr "É necessário anexar ficheiros **.json** a este comando ou fazer referência a uma mensagem que os tenha!" + +#: assistant\commands\admin.py:2469 +msgid "Failed to import **{}** because it contains invalid formatting!" +msgstr "Falha ao importar **{}** porque contém uma formatação inválida!" + +#: assistant\commands\admin.py:2474 +msgid "Imported the following files: `{}`\n" +"{} embeddings imported" +msgstr "Importou os seguintes ficheiros: `{}`\n" +"{} incorporações importadas" + +#: assistant\commands\admin.py:2482 +#, docstring +msgid "Import embeddings from an .xlsx file\n\n" +" Args:\n" +" overwrite (bool): overwrite embeddings with existing entry names\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2491 +msgid "You must attach **.xlsx** files to this command or reference a message that has them!" +msgstr "" + +#: assistant\commands\admin.py:2512 +msgid "{} is invalid! Must contain the following columns: {}" +msgstr "" + +#: assistant\commands\admin.py:2569 +msgid "No embeddings needed to be updated!" +msgstr "" + +#: assistant\commands\admin.py:2574 +#, docstring +msgid "\n" +" Export embeddings to an .xlsx file\n\n" +" **Note:** csv exports do not include the embedding values\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2581 assistant\commands\admin.py:2627 +#: assistant\commands\admin.py:2671 +msgid "There are no embeddings to export!" +msgstr "Não existem incorporações para exportar!" + +#: assistant\commands\admin.py:2621 +#, docstring +msgid "Export embeddings to a .csv file\n\n" +" **Note:** csv exports do not include the embedding values\n" +" " +msgstr "Exportar embeddings para um ficheiro .csv\n\n" +" **Nota:** as exportações csv não incluem os valores de incorporação " + +#: assistant\commands\admin.py:2640 assistant\commands\admin.py:2660 +#: assistant\commands\admin.py:2679 assistant\commands\admin.py:2699 +#: assistant\commands\admin.py:4304 +msgid "Here is your embeddings export!" +msgstr "Aqui está a exportação das suas incorporações!" + +#: assistant\commands\admin.py:2643 assistant\commands\admin.py:2682 +#: assistant\commands\admin.py:4286 +msgid "File too large, attempting to compress..." +msgstr "Ficheiro demasiado grande, a tentar comprimir..." + +#: assistant\commands\admin.py:2663 assistant\commands\admin.py:2702 +#: assistant\commands\admin.py:4307 +msgid "File is still too large even with compression!" +msgstr "O arquivo ainda está muito grande mesmo com a compressão!" + +#: assistant\commands\admin.py:2668 +#, docstring +msgid "Export embeddings to a json file" +msgstr "Exportar embeddings para um ficheiro json" + +#: assistant\commands\admin.py:2710 +#, docstring +msgid "\n" +" Manage embeddings for training\n\n" +" Embeddings are used to optimize training of the assistant and minimize token usage.\n\n" +" By using this the bot can store vast amounts of contextual information without going over the token limit.\n\n" +" **Note**\n" +" You can enter a search query with this command to bring up the menu and go directly to that embedding selection.\n" +" " +msgstr "Gerir incorporações para treinamento.\n\n" +"As incorporações são usadas para otimizar o treinamento do assistente e minimizar o uso de tokens.\n\n" +"Ao usar isso, o bot pode armazenar grandes quantidades de informações contextuais sem ultrapassar o limite de tokens.\n\n" +"**Nota**\n" +"Você pode inserir uma consulta de pesquisa com este comando para abrir o menu e ir diretamente para a seleção de incorporação correspondente " + +#: assistant\commands\admin.py:2760 +#, docstring +msgid "\n" +" Add custom function calls for Assistant to use\n\n" +" **READ**\n" +" - [Function Call Docs](https://platform.openai.com/docs/guides/gpt/function-calling)\n" +" - [OpenAI Cookbook](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_call_functions_with_chat_models.ipynb)\n" +" - [JSON Schema Reference](https://json-schema.org/understanding-json-schema/)\n\n" +" The following objects are passed by default as keyword arguments.\n" +" - **user**: the user currently chatting with the bot (discord.Member)\n" +" - **channel**: channel the user is chatting in (TextChannel|Thread|ForumChannel)\n" +" - **guild**: current guild (discord.Guild)\n" +" - **bot**: the bot object (Red)\n" +" - **conf**: the config model for Assistant (GuildSettings)\n" +" - All functions **MUST** include `*args, **kwargs` in the params and return a string\n" +" ```python\n" +" # Can be either sync or async\n" +" async def func(*args, **kwargs) -> str:\n" +" ```\n" +" Only bot owner can manage this, guild owners can see descriptions but not code\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2800 +#, docstring +msgid "List custom prompt context variables registered by other cogs." +msgstr "" + +#: assistant\commands\admin.py:2802 +msgid "3rd party docs: {}" +msgstr "" + +#: assistant\commands\admin.py:2804 +msgid "No custom context variables have been registered yet!\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:2818 +msgid "Custom Variables" +msgstr "" + +#: assistant\commands\admin.py:2823 +msgid "Page {}/{} | {} variables" +msgstr "" + +#: assistant\commands\admin.py:2836 +#, docstring +msgid "\n" +" List all available functions and their enabled/disabled status\n\n" +" This provides a quick overview of all custom functions and 3rd party\n" +" registered functions without having to navigate through the full menu.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2849 assistant\commands\admin.py:3142 +#: assistant\commands\admin.py:3198 assistant\commands\admin.py:3295 +msgid "No functions have been registered yet!" +msgstr "" + +#: assistant\commands\admin.py:2876 +msgid "Function List" +msgstr "" + +#: assistant\commands\admin.py:2881 +msgid "Page {}/{} | {} enabled, {} disabled" +msgstr "" + +#: assistant\commands\admin.py:2897 +#, docstring +msgid "Open the mobile-friendly AI tools manager." +msgstr "" + +#: assistant\commands\admin.py:2905 +#, docstring +msgid "Open the floating context block manager.\n\n" +" Toggled variables are appended to a trailing payload-only user\n" +" message after conversation history. Because that message rides\n" +" after the cached prefix, putting dynamic (per-request) values\n" +" there keeps the prompt prefix stable across requests so\n" +" provider-side prompt caching can hit.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2920 +#, docstring +msgid "Show prompt-cache stats from the most recent API call." +msgstr "" + +#: assistant\commands\admin.py:2924 +msgid "No cache stats yet - make a request first." +msgstr "" + +#: assistant\commands\admin.py:2928 +msgid "Unknown" +msgstr "" + +#: assistant\commands\admin.py:2932 +msgid "Last API call: **{cached}**/**{total}** prompt tokens cached ({pct:.0f}%) · **{write}** cache-write tokens · model `{model}`" +msgstr "" + +#: assistant\commands\admin.py:2948 +msgid "\n" +"💡 This model requires at least **{min_tokens}** prompt tokens before the provider will cache. Your prompt was only **{total}** tokens - below the threshold, so no cache write or read occurred. A longer system prompt, more conversation history, or enabling variables in the `[p]floatingcontext` block will push it over." +msgstr "" + +#: assistant\commands\admin.py:2963 +msgid "\n" +"ℹ️ This provider uses automatic prompt caching. A **0** cache-write count does not necessarily mean caching is disabled, because some automatic-cache providers do not charge for or clearly expose cache writes. The more useful signal is whether similar follow-up turns start showing non-zero cached tokens. Also note that the relevant threshold is the repeated stable prefix, not the full prompt length, so a large request can still miss if most of its tokens are in the changing tail of the payload." +msgstr "" + +#: assistant\commands\admin.py:2978 +msgid "\n" +"ℹ️ `gpt-oss` is a reasoning model running over Chat Completions. Cache reuse can be weaker than on non-reasoning chat models because not all reasoning state is preserved between turns." +msgstr "" + +#: assistant\commands\admin.py:2988 +msgid "\n" +"⚠️ **Cache writes occurred but no reads.** This means the provider cached your prompt prefix, but the next request didn't match it - the prefix changed between calls. Common causes include dynamic variables like `{{time}}`, `{{date}}`, or `{{username}}` being substituted into your prompt prefix, per-turn context being injected before the cacheable tail, or tool definitions changing between calls. Use `[p]floatingcontext` to move dynamic context out of the prompt prefix." +msgstr "" + +#: assistant\commands\admin.py:3004 +#, docstring +msgid "Enable OpenRouter response caching (Mode A)." +msgstr "" + +#: assistant\commands\admin.py:3008 +msgid "OpenRouter response caching **enabled** (TTL: {}s)." +msgstr "" + +#: assistant\commands\admin.py:3012 +#, docstring +msgid "Disable OpenRouter response caching (Mode A)." +msgstr "" + +#: assistant\commands\admin.py:3016 +msgid "OpenRouter response caching **disabled**." +msgstr "" + +#: assistant\commands\admin.py:3020 +#, docstring +msgid "Set the OpenRouter response cache TTL in seconds (1–86400)." +msgstr "" + +#: assistant\commands\admin.py:3022 +msgid "TTL must be between 1 and 86400 seconds (24 hours)." +msgstr "" + +#: assistant\commands\admin.py:3026 +msgid "OpenRouter response cache TTL set to **{}** seconds." +msgstr "" + +#: assistant\commands\admin.py:3030 +#, docstring +msgid "Set the OpenRouter provider prompt cache TTL.\n\n" +" Choices: `off`, `5m`, `1h`. Applies to Anthropic / Gemini / Qwen\n" +" models routed via OpenRouter.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3037 +msgid "Mode must be one of: `off`, `5m`, `1h`." +msgstr "" + +#: assistant\commands\admin.py:3041 +msgid "OpenRouter provider prompt cache set to **{}**." +msgstr "" + +#: assistant\commands\admin.py:3050 +#, docstring +msgid "Configure OpenRouter provider routing and model slug preferences." +msgstr "" + +#: assistant\commands\admin.py:3055 +#, docstring +msgid "Show current OpenRouter provider routing settings." +msgstr "" + +#: assistant\commands\admin.py:3059 +msgid "not set" +msgstr "" + +#: assistant\commands\admin.py:3062 +msgid "not set (OR default)" +msgstr "" + +#: assistant\commands\admin.py:3064 +msgid "OpenRouter Provider Settings" +msgstr "" + +#: assistant\commands\admin.py:3065 +msgid "Model suffix" +msgstr "" + +#: assistant\commands\admin.py:3066 +msgid "Allow fallbacks" +msgstr "" + +#: assistant\commands\admin.py:3067 +msgid "Provider order" +msgstr "" + +#: assistant\commands\admin.py:3068 +msgid "Tip: `providers Fireworks` + `fallbacks false` hard-pins to that provider." +msgstr "" + +#: assistant\commands\admin.py:3073 +#, docstring +msgid "Set a guild-wide model slug suffix applied to every OpenRouter request.\n\n" +" Valid values: `:nitro` (throughput priority), `:floor` (price priority),\n" +" `:extended`, `clear` (remove suffix).\n" +" The suffix is appended after model resolution and replaces any per-model suffix.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3083 +msgid "OpenRouter model suffix cleared." +msgstr "" + +#: assistant\commands\admin.py:3086 +msgid "Invalid suffix `{}`. Valid: {}." +msgstr "" + +#: assistant\commands\admin.py:3090 +msgid "OpenRouter model suffix set to `{}`." +msgstr "" + +#: assistant\commands\admin.py:3094 +#, docstring +msgid "Set the ordered list of providers OpenRouter should use (space-separated).\n\n" +" Pass `clear` to reset. Combined with `fallbacks false` this hard-pins routing\n" +" to only the listed providers in order.\n" +" Example: `providers Fireworks Together`\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3104 +msgid "OpenRouter provider list cleared." +msgstr "" + +#: assistant\commands\admin.py:3108 +msgid "OpenRouter will try providers in order: {}." +msgstr "" + +#: assistant\commands\admin.py:3113 +#, docstring +msgid "Set whether OpenRouter may fall back to other providers.\n\n" +" Values: `true`, `false`, `clear` (restore OR default which is true).\n" +" Set to `false` with `providers` to hard-pin routing to those providers only.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3123 +msgid "OpenRouter fallbacks reset to OR default (enabled)." +msgstr "" + +#: assistant\commands\admin.py:3125 +msgid "Value must be `true`, `false`, or `clear`." +msgstr "" + +#: assistant\commands\admin.py:3128 +msgid "OpenRouter fallbacks set to `{}`." +msgstr "" + +#: assistant\commands\admin.py:3135 +#, docstring +msgid "List tool categories and their current enabled state." +msgstr "" + +#: assistant\commands\admin.py:3161 +msgid "Tool Categories" +msgstr "" + +#: assistant\commands\admin.py:3166 +msgid "Page {}/{} | {} enabled of {} total" +msgstr "" + +#: assistant\commands\admin.py:3191 +#, docstring +msgid "Enable or disable all tools in one or more categories." +msgstr "" + +#: assistant\commands\admin.py:3208 +msgid "No valid category names provided!" +msgstr "" + +#: assistant\commands\admin.py:3213 +msgid "The following categories do not exist: {}" +msgstr "" + +#: assistant\commands\admin.py:3235 +msgid "{} **Enabled Categories** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3243 +msgid "{} **Disabled Categories** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3266 +#, docstring +msgid "\n" +" Enable or disable multiple functions at once\n\n" +" **Arguments**\n" +" - `enable`: True to enable, False to disable. Omit to toggle current state.\n" +" - `functions`: Comma-separated list of function names, or \"all\" to affect all functions\n\n" +" **Examples**\n" +" - `[p]togglefunctions get_time, get_weather` - Toggle these functions\n" +" - `[p]togglefunctions True all` - Enable all functions\n" +" - `[p]togglefunctions False get_time, get_weather` - Disable specific functions\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3305 +msgid "No valid function names provided!" +msgstr "" + +#: assistant\commands\admin.py:3311 +msgid "The following functions do not exist: {}" +msgstr "" + +#: assistant\commands\admin.py:3337 +msgid "✅ **Enabled** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3344 +msgid "❌ **Disabled** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3440 +#, docstring +msgid "\n" +" Add/Remove items from the blacklist\n\n" +" `channel_role_member` can be a member, role, channel, or category channel\n" +" " +msgstr "Adicionar/Remover itens da lista negra\n\n" +"`membro_de_função_do_canal` pode ser um membro, função, canal ou canal de categoria " + +#: assistant\commands\admin.py:3448 +msgid "{} has been removed from the blacklist" +msgstr "{} foi removido da lista negra" + +#: assistant\commands\admin.py:3451 +msgid "{} has been added to the blacklist" +msgstr "{} foi adicionado à lista negra" + +#: assistant\commands\admin.py:3464 +#, docstring +msgid "\n" +" Add/Remove items from the planner list, or view current planners.\n\n" +" Users/roles in the planner list can use the `think_and_plan` tool for complex task breakdown.\n\n" +" If the planner list is empty, everyone can use the planning tool.\n" +" If the planner list has entries, only those users/roles can use it.\n\n" +" `role_or_member` can be a member or role. Omit to view the current list.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3479 +msgid "The planner list is empty. Everyone can use the `think_and_plan` tool." +msgstr "" + +#: assistant\commands\admin.py:3484 +msgid "**Planners:** {}" +msgstr "" + +#: assistant\commands\admin.py:3486 +msgid "The planner list has invalid entries. Consider clearing it." +msgstr "" + +#: assistant\commands\admin.py:3491 +msgid "{} has been removed from the planner list" +msgstr "" + +#: assistant\commands\admin.py:3494 +msgid "{} has been added to the planner list" +msgstr "" + +#: assistant\commands\admin.py:3500 +msgid "**{}:** empty" +msgstr "" + +#: assistant\commands\admin.py:3506 +msgid "**{}:** {}" +msgstr "" + +#: assistant\commands\admin.py:3510 +#, docstring +msgid "Show the current smartmod configuration." +msgstr "" + +#: assistant\commands\admin.py:3517 +msgid "`Enabled: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3518 +msgid "`Report channel:`{}\n" +msgstr "" + +#: assistant\commands\admin.py:3519 +msgid "`OpenAI key: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3519 +msgid "OK" +msgstr "" + +#: assistant\commands\admin.py:3519 +msgid "Missing" +msgstr "" + +#: assistant\commands\admin.py:3520 +msgid "`Review model: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3520 +msgid "(default)" +msgstr "" + +#: assistant\commands\admin.py:3521 +msgid "`Context: `{} before / {} after\n" +msgstr "" + +#: assistant\commands\admin.py:3522 +msgid "`Panel timeout: `{}s\n" +msgstr "" + +#: assistant\commands\admin.py:3523 +msgid "`Auto-action: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3524 +msgid "`Exempt staff: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3525 +msgid "`Staff ping: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3526 +msgid "`Blacklist: `{} items\n" +msgstr "" + +#: assistant\commands\admin.py:3527 +msgid "`Whitelist: `{} items\n" +msgstr "" + +#: assistant\commands\admin.py:3528 +msgid "`Triggers: `{} phrases" +msgstr "" + +#: assistant\commands\admin.py:3530 +msgid "Smartmod (AI Moderation)" +msgstr "" + +#: assistant\commands\admin.py:3535 +#, docstring +msgid "Enable or disable AI moderation. Omit the state to flip it." +msgstr "" + +#: assistant\commands\admin.py:3541 +msgid "\n" +"⚠️ No OpenAI key for the scan. Set one with `{p}assistant smartmod key`." +msgstr "" + +#: assistant\commands\admin.py:3545 +msgid "\n" +"⚠️ No report channel set. Set one with `{p}assistant smartmod channel`." +msgstr "" + +#: assistant\commands\admin.py:3548 +msgid "Smartmod is now **{}**." +msgstr "" + +#: assistant\commands\admin.py:3548 +msgid "enabled" +msgstr "" + +#: assistant\commands\admin.py:3548 +msgid "disabled" +msgstr "" + +#: assistant\commands\admin.py:3553 +#, docstring +msgid "Set the channel where moderation proposals are posted. Omit to clear." +msgstr "" + +#: assistant\commands\admin.py:3556 +msgid "set to {}" +msgstr "" + +#: assistant\commands\admin.py:3556 +msgid "cleared" +msgstr "" -#: assistant\commands\admin.py:2036 assistant\commands\admin.py:2179 -msgid "Successfully imported {} embeddings!" -msgstr "Importou com sucesso {} embeddings!" +#: assistant\commands\admin.py:3557 +msgid "Report channel {}." +msgstr "" -#: assistant\commands\admin.py:2041 +#: assistant\commands\admin.py:3562 #, docstring -msgid "Import embeddings to use with the assistant\n\n" -" Args:\n" -" overwrite (bool): overwrite embeddings with existing entry names\n" +msgid "Set the smartmod review model (empty = use the server's default chat model).\n\n" +" Run with no model to open the interactive model picker — endpoint-discovered models when a\n" +" custom endpoint is set, otherwise the built-in OpenAI list.\n" " " -msgstr "Importar embeddings para usar com o assistente\n\n" -" Args:\n" -" overwrite (bool): substituir embeddings com nomes de entrada existentes " +msgstr "" -#: assistant\commands\admin.py:2050 assistant\commands\admin.py:3202 -msgid "You must attach **.json** files to this command or reference a message that has them!" -msgstr "É necessário anexar ficheiros **.json** a este comando ou fazer referência a uma mensagem que os tenha!" +#: assistant\commands\admin.py:3571 +msgid "Review model set to `{}`." +msgstr "" -#: assistant\commands\admin.py:2086 -msgid "Failed to import **{}** because it contains invalid formatting!" -msgstr "Falha ao importar **{}** porque contém uma formatação inválida!" +#: assistant\commands\admin.py:3582 +msgid "Could not probe `{}` to discover models. Set one manually with `{}assistant smartmod model `." +msgstr "" -#: assistant\commands\admin.py:2091 -msgid "Imported the following files: `{}`\n" -"{} embeddings imported" -msgstr "Importou os seguintes ficheiros: `{}`\n" -"{} incorporações importadas" +#: assistant\commands\admin.py:3602 +msgid "The review model uses the server's default chat model unless set. Valid OpenAI models:\n" +"{}\n" +"Set one with `{}assistant smartmod model `." +msgstr "" -#: assistant\commands\admin.py:2099 +#: assistant\commands\admin.py:3610 #, docstring -msgid "Import embeddings from an .xlsx file\n\n" -" Args:\n" -" overwrite (bool): overwrite embeddings with existing entry names\n" +msgid "Set the moderation review prompt.\n\n" +" Supports the {flagged_categories} placeholder plus the same standard prompt variables\n" +" as the main system prompt (server name, channel name, display name, custom cog\n" +" variables, etc.).\n\n" +" Run with no text to view the current prompt. Use `defaultprompt` to grab the built-in\n" +" default to customize, and `resetprompt` to restore it.\n" " " msgstr "" -#: assistant\commands\admin.py:2108 -msgid "You must attach **.xlsx** files to this command or reference a message that has them!" +#: assistant\commands\admin.py:3622 +msgid "Current moderation prompt (edit and re-set with `{p}assistant smartmod prompt `):" msgstr "" -#: assistant\commands\admin.py:2129 -msgid "{} is invalid! Must contain the following columns: {}" +#: assistant\commands\admin.py:3629 +msgid "Moderation prompt updated." msgstr "" -#: assistant\commands\admin.py:2183 -msgid "No embeddings needed to be updated!" +#: assistant\commands\admin.py:3634 +#, docstring +msgid "Get the built-in default moderation prompt to copy and customize." +msgstr "" + +#: assistant\commands\admin.py:3636 +msgid "Default moderation prompt - copy, edit, then set with `{p}assistant smartmod prompt `:" msgstr "" -#: assistant\commands\admin.py:2188 +#: assistant\commands\admin.py:3644 #, docstring -msgid "\n" -" Export embeddings to an .xlsx file\n\n" -" **Note:** csv exports do not include the embedding values\n" -" " +msgid "Reset the moderation review prompt to the built-in default." msgstr "" -#: assistant\commands\admin.py:2195 assistant\commands\admin.py:2241 -#: assistant\commands\admin.py:2285 -msgid "There are no embeddings to export!" -msgstr "Não existem incorporações para exportar!" +#: assistant\commands\admin.py:3647 +msgid "Moderation prompt reset to default." +msgstr "" -#: assistant\commands\admin.py:2235 +#: assistant\commands\admin.py:3652 #, docstring -msgid "Export embeddings to a .csv file\n\n" -" **Note:** csv exports do not include the embedding values\n" +msgid "Set a category's flag threshold (0.0-1.0), e.g. `harassment 0.4`.\n\n" +" Run with no arguments to list every moderation category and its current threshold.\n" " " -msgstr "Exportar embeddings para um ficheiro .csv\n\n" -" **Nota:** as exportações csv não incluem os valores de incorporação " +msgstr "" -#: assistant\commands\admin.py:2254 assistant\commands\admin.py:2274 -#: assistant\commands\admin.py:2293 assistant\commands\admin.py:2313 -#: assistant\commands\admin.py:3188 -msgid "Here is your embeddings export!" -msgstr "Aqui está a exportação das suas incorporações!" +#: assistant\commands\admin.py:3661 +msgid "Set one with `{p}assistant smartmod threshold <0.0-1.0>`:\n" +"{box}" +msgstr "" -#: assistant\commands\admin.py:2257 assistant\commands\admin.py:2296 -#: assistant\commands\admin.py:3170 -msgid "File too large, attempting to compress..." -msgstr "Ficheiro demasiado grande, a tentar comprimir..." +#: assistant\commands\admin.py:3669 +msgid "Unknown category. Valid categories:\n" +"{}" +msgstr "" -#: assistant\commands\admin.py:2277 assistant\commands\admin.py:2316 -#: assistant\commands\admin.py:3191 -msgid "File is still too large even with compression!" -msgstr "O arquivo ainda está muito grande mesmo com a compressão!" +#: assistant\commands\admin.py:3672 +msgid "Value must be between 0.0 and 1.0." +msgstr "" -#: assistant\commands\admin.py:2282 -#, docstring -msgid "Export embeddings to a json file" -msgstr "Exportar embeddings para um ficheiro json" +#: assistant\commands\admin.py:3675 +msgid "Threshold for `{}` set to `{}`." +msgstr "" -#: assistant\commands\admin.py:2324 +#: assistant\commands\admin.py:3680 #, docstring -msgid "\n" -" Manage embeddings for training\n\n" -" Embeddings are used to optimize training of the assistant and minimize token usage.\n\n" -" By using this the bot can store vast amounts of contextual information without going over the token limit.\n\n" -" **Note**\n" -" You can enter a search query with this command to bring up the menu and go directly to that embedding selection.\n" -" " -msgstr "Gerir incorporações para treinamento.\n\n" -"As incorporações são usadas para otimizar o treinamento do assistente e minimizar o uso de tokens.\n\n" -"Ao usar isso, o bot pode armazenar grandes quantidades de informações contextuais sem ultrapassar o limite de tokens.\n\n" -"**Nota**\n" -"Você pode inserir uma consulta de pesquisa com este comando para abrir o menu e ir diretamente para a seleção de incorporação correspondente " +msgid "View the effective per-category flag thresholds." +msgstr "" -#: assistant\commands\admin.py:2374 +#: assistant\commands\admin.py:3687 #, docstring -msgid "\n" -" Add custom function calls for Assistant to use\n\n" -" **READ**\n" -" - [Function Call Docs](https://platform.openai.com/docs/guides/gpt/function-calling)\n" -" - [OpenAI Cookbook](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_call_functions_with_chat_models.ipynb)\n" -" - [JSON Schema Reference](https://json-schema.org/understanding-json-schema/)\n\n" -" The following objects are passed by default as keyword arguments.\n" -" - **user**: the user currently chatting with the bot (discord.Member)\n" -" - **channel**: channel the user is chatting in (TextChannel|Thread|ForumChannel)\n" -" - **guild**: current guild (discord.Guild)\n" -" - **bot**: the bot object (Red)\n" -" - **conf**: the config model for Assistant (GuildSettings)\n" -" - All functions **MUST** include `*args, **kwargs` in the params and return a string\n" -" ```python\n" -" # Can be either sync or async\n" -" async def func(*args, **kwargs) -> str:\n" -" ```\n" -" Only bot owner can manage this, guild owners can see descriptions but not code\n" -" " +msgid "Return (flagged_categories, formatted_table_lines) comparing each score to its threshold." msgstr "" -#: assistant\commands\admin.py:2414 +#: assistant\commands\admin.py:3701 #, docstring -msgid "List custom prompt context variables registered by other cogs." +msgid "Preview a sample message: which trigger phrases match plus each moderation score vs its threshold." msgstr "" -#: assistant\commands\admin.py:2416 -msgid "3rd party docs: {}" +#: assistant\commands\admin.py:3707 assistant\commands\admin.py:3741 +msgid "No OpenAI key available for the scan. Set one with `{p}assistant smartmod key`." msgstr "" -#: assistant\commands\admin.py:2418 -msgid "No custom context variables have been registered yet!\n" -"{}" +#: assistant\commands\admin.py:3716 assistant\commands\admin.py:3750 +msgid "Moderation scan failed — check the key or the bot logs." msgstr "" -#: assistant\commands\admin.py:2432 -msgid "Custom Variables" +#: assistant\commands\admin.py:3719 +msgid "🚩 **Would trigger review**" msgstr "" -#: assistant\commands\admin.py:2437 -msgid "Page {}/{} | {} variables" +#: assistant\commands\admin.py:3719 +msgid "✅ **Would not trigger**" +msgstr "" + +#: assistant\commands\admin.py:3721 +msgid "Matched triggers: {}" +msgstr "" + +#: assistant\commands\admin.py:3723 +msgid "Scan flagged: {}" msgstr "" -#: assistant\commands\admin.py:2450 +#: assistant\commands\admin.py:3730 #, docstring -msgid "\n" -" List all available functions and their enabled/disabled status\n\n" -" This provides a quick overview of all custom functions and 3rd party\n" -" registered functions without having to navigate through the full menu.\n" +msgid "Dry-run the FULL pipeline on sample text: scan / triggers -> review model -> action panel.\n\n" +" The review model runs for real (tools, embeddings, this channel's recent context) with you as\n" +" the simulated offender, but the panel's buttons take no real action. The review runs if a\n" +" category trips its threshold OR a trigger phrase matches (same as production).\n" " " msgstr "" -#: assistant\commands\admin.py:2463 assistant\commands\admin.py:2527 -#: assistant\commands\admin.py:2579 assistant\commands\admin.py:2676 -msgid "No functions have been registered yet!" +#: assistant\commands\admin.py:3758 +msgid "✅ Would not trigger — no category over its threshold and no trigger phrase matched." msgstr "" -#: assistant\commands\admin.py:2490 -msgid "Function List" +#: assistant\commands\admin.py:3760 +msgid "🚩 Tripped: {}" msgstr "" -#: assistant\commands\admin.py:2495 -msgid "Page {}/{} | {} enabled, {} disabled" +#: assistant\commands\admin.py:3765 +msgid "Simulation error: {}" +msgstr "" + +#: assistant\commands\admin.py:3768 +msgid "🧪 Model chose **no action**.\n" +"-# {}" msgstr "" -#: assistant\commands\admin.py:2511 +#: assistant\commands\admin.py:3768 +msgid "no reason given" +msgstr "" + +#: assistant\commands\admin.py:3770 +msgid "🧪 Model didn't reach a decision within the review turn limit." +msgstr "" + +#: assistant\commands\admin.py:3772 +msgid "🧪 Model **proposed** an action — see the dry-run panel above (buttons are no-ops)." +msgstr "" + +#: assistant\commands\admin.py:3788 #, docstring -msgid "Open the mobile-friendly AI tools manager." +msgid "Toggle a channel/category/role/member on the moderation ignore list. Omit to view." +msgstr "" + +#: assistant\commands\admin.py:3791 +msgid "Smartmod blacklist (ignored)" +msgstr "" + +#: assistant\commands\admin.py:3796 +msgid "{} removed from the smartmod blacklist." +msgstr "" + +#: assistant\commands\admin.py:3799 +msgid "{} added to the smartmod blacklist." msgstr "" -#: assistant\commands\admin.py:2520 +#: assistant\commands\admin.py:3816 #, docstring -msgid "List tool categories and their current enabled state." +msgid "Only moderate these channel/category/role/members (used only when the blacklist is empty). Omit to view." msgstr "" -#: assistant\commands\admin.py:2545 -msgid "Tool Categories" +#: assistant\commands\admin.py:3819 +msgid "Smartmod whitelist (only these)" msgstr "" -#: assistant\commands\admin.py:2547 -msgid "Page {}/{} | {} enabled of {} total" +#: assistant\commands\admin.py:3824 +msgid "{} removed from the smartmod whitelist." msgstr "" -#: assistant\commands\admin.py:2572 +#: assistant\commands\admin.py:3827 +msgid "{} added to the smartmod whitelist." +msgstr "" + +#: assistant\commands\admin.py:3832 #, docstring -msgid "Enable or disable all tools in one or more categories." +msgid "Toggle a role to ping (and authorize) when an action is proposed. Omit to view." msgstr "" -#: assistant\commands\admin.py:2589 -msgid "No valid category names provided!" +#: assistant\commands\admin.py:3835 +msgid "Smartmod staff ping roles" msgstr "" -#: assistant\commands\admin.py:2594 -msgid "The following categories do not exist: {}" +#: assistant\commands\admin.py:3840 +msgid "{} removed from the staff ping roles." msgstr "" -#: assistant\commands\admin.py:2616 -msgid "{} **Enabled Categories** ({}):\n" -"{}" +#: assistant\commands\admin.py:3843 +msgid "{} added to the staff ping roles." msgstr "" -#: assistant\commands\admin.py:2624 -msgid "{} **Disabled Categories** ({}):\n" -"{}" +#: assistant\commands\admin.py:3848 +#, docstring +msgid "Set how many messages of context to capture before/after a flagged message." +msgstr "" + +#: assistant\commands\admin.py:3853 +msgid "Context window set to {} before / {} after." msgstr "" -#: assistant\commands\admin.py:2647 +#: assistant\commands\admin.py:3861 #, docstring -msgid "\n" -" Enable or disable multiple functions at once\n\n" -" **Arguments**\n" -" - `enable`: True to enable, False to disable. Omit to toggle current state.\n" -" - `functions`: Comma-separated list of function names, or \"all\" to affect all functions\n\n" -" **Examples**\n" -" - `[p]togglefunctions get_time, get_weather` - Toggle these functions\n" -" - `[p]togglefunctions True all` - Enable all functions\n" -" - `[p]togglefunctions False get_time, get_weather` - Disable specific functions\n" -" " +msgid "Set how long the action panel stays interactive, in seconds (60-86400)." msgstr "" -#: assistant\commands\admin.py:2686 -msgid "No valid function names provided!" +#: assistant\commands\admin.py:3864 +msgid "Panel timeout set to {} seconds." msgstr "" -#: assistant\commands\admin.py:2692 -msgid "The following functions do not exist: {}" +#: assistant\commands\admin.py:3869 +#, docstring +msgid "Toggle whether the proposed action auto-executes when the panel times out." msgstr "" -#: assistant\commands\admin.py:2718 -msgid "✅ **Enabled** ({}):\n" -"{}" +#: assistant\commands\admin.py:3873 assistant\commands\admin.py:3883 +msgid "on" msgstr "" -#: assistant\commands\admin.py:2724 -msgid "❌ **Disabled** ({}):\n" -"{}" +#: assistant\commands\admin.py:3873 assistant\commands\admin.py:3883 +msgid "off" msgstr "" -#: assistant\commands\admin.py:2819 -#, docstring -msgid "\n" -" Add/Remove items from the blacklist\n\n" -" `channel_role_member` can be a member, role, channel, or category channel\n" -" " -msgstr "Adicionar/Remover itens da lista negra\n\n" -"`membro_de_função_do_canal` pode ser um membro, função, canal ou canal de categoria " +#: assistant\commands\admin.py:3874 +msgid "Auto-action on timeout is now **{}**." +msgstr "" -#: assistant\commands\admin.py:2827 -msgid "{} has been removed from the blacklist" -msgstr "{} foi removido da lista negra" +#: assistant\commands\admin.py:3879 +#, docstring +msgid "Toggle skipping moderation for members with ban/kick/manage-messages permissions." +msgstr "" -#: assistant\commands\admin.py:2830 -msgid "{} has been added to the blacklist" -msgstr "{} foi adicionado à lista negra" +#: assistant\commands\admin.py:3883 +msgid "Exempt staff is now **{}**." +msgstr "" -#: assistant\commands\admin.py:2843 +#: assistant\commands\admin.py:3888 #, docstring -msgid "\n" -" Add/Remove items from the planner list, or view current planners.\n\n" -" Users/roles in the planner list can use the `think_and_plan` tool for complex task breakdown.\n\n" -" If the planner list is empty, everyone can use the planning tool.\n" -" If the planner list has entries, only those users/roles can use it.\n\n" -" `role_or_member` can be a member or role. Omit to view the current list.\n" +msgid "Add or remove a trigger phrase that sends a message straight to moderation review.\n\n" +" A match fires the review pipeline **in place of** the OpenAI moderation scan — so\n" +" triggers work even with no OpenAI key set. Re-run with the exact same phrase to remove it.\n\n" +" Only `*` is a wildcard (it matches any run of characters); everything else is literal,\n" +" so pasting real regex is safe and can never lock the bot up. With no `*`, the phrase\n" +" matches on word boundaries (`idiot` hits the word \"idiot\" but not \"idiotic\"); add `*`\n" +" to loosen it: `idiot*` (prefix), `*idiot` (suffix), `*idiot*` (substring anywhere).\n" " " msgstr "" -#: assistant\commands\admin.py:2858 -msgid "The planner list is empty. Everyone can use the `think_and_plan` tool." +#: assistant\commands\admin.py:3903 +msgid "Removed smartmod trigger: `{}`" msgstr "" -#: assistant\commands\admin.py:2863 -msgid "**Planners:** {}" +#: assistant\commands\admin.py:3906 +msgid "A trigger needs at least one non-`*` character." msgstr "" -#: assistant\commands\admin.py:2865 -msgid "The planner list has invalid entries. Consider clearing it." +#: assistant\commands\admin.py:3908 +msgid "That trigger is too long (max {} characters)." msgstr "" -#: assistant\commands\admin.py:2870 -msgid "{} has been removed from the planner list" +#: assistant\commands\admin.py:3911 +msgid "Added smartmod trigger `{phrase}` (matches as `{regex}`)." msgstr "" -#: assistant\commands\admin.py:2873 -msgid "{} has been added to the planner list" +#: assistant\commands\admin.py:3919 +#, docstring +msgid "List the smartmod trigger phrases and the safe pattern each one compiles to." msgstr "" -#: assistant\commands\admin.py:2878 +#: assistant\commands\admin.py:3924 +msgid "No smartmod triggers set. Add one with `{p}assistant smartmod trigger `." +msgstr "" + +#: assistant\commands\admin.py:3935 #, docstring -msgid "\n" -" Override settings for specific roles\n\n" -" **NOTE**\n" -" If a user has two roles with override settings, override associated with the higher role will be used.\n" +msgid "Set a dedicated OpenAI key for the moderation scan (opens a secure modal).\n\n" +" Use this when your chat endpoint is a custom/non-OpenAI endpoint (OpenRouter, LM Studio,\n" +" etc.): the free OpenAI moderation scan still runs against api.openai.com with this key,\n" +" while the review LLM keeps using your configured endpoint. Enter `none` to clear it.\n" " " msgstr "" -#: assistant\commands\admin.py:2887 +#: assistant\commands\admin.py:3943 +msgid "Click to set the OpenAI key used for the smartmod moderation scan\n\n" +"To remove the key, enter `none`" +msgstr "" + +#: assistant\commands\admin.py:3950 +msgid "Smartmod OpenAI key has been removed!" +msgstr "" + +#: assistant\commands\admin.py:3955 +msgid "Smartmod OpenAI key has been set!" +msgstr "" + +#: assistant\commands\admin.py:3960 #, docstring msgid "\n" " Assign a role to use a model\n\n" @@ -2033,23 +2874,23 @@ msgstr "\n" "Atribuir uma função para utilizar um modelo\n\n" "*Especificar a mesma função e modelo para remover a substituição* " -#: assistant\commands\admin.py:2899 +#: assistant\commands\admin.py:3974 msgid "Enter a model id supported by your custom endpoint. If it exposes `/v1/models`, you can copy one from there." msgstr "" -#: assistant\commands\admin.py:2916 +#: assistant\commands\admin.py:3991 msgid "Role override for {} removed!" msgstr "Substituição de função para {} removida!" -#: assistant\commands\admin.py:2919 +#: assistant\commands\admin.py:3994 msgid "Role override for {} overwritten!" msgstr "Substituição de função para {} substituída!" -#: assistant\commands\admin.py:2922 +#: assistant\commands\admin.py:3997 msgid "Role override for {} added!" msgstr "Substituição de função para {} adicionada!" -#: assistant\commands\admin.py:2928 +#: assistant\commands\admin.py:4003 #, docstring msgid "\n" " Assign a max token override to a role\n\n" @@ -2059,19 +2900,19 @@ msgstr "\n" "Atribuir uma substituição de token máximo a uma função\n\n" "*Especificar a mesma função e contagem de tokens para remover a substituição* " -#: assistant\commands\admin.py:2938 +#: assistant\commands\admin.py:4013 msgid "Max token override for {} removed!" msgstr "Substituição do token máximo para {} removida!" -#: assistant\commands\admin.py:2941 +#: assistant\commands\admin.py:4016 msgid "Max token override for {} overwritten!" msgstr "Substituição máxima de fichas para {} substituída!" -#: assistant\commands\admin.py:2944 +#: assistant\commands\admin.py:4019 msgid "Max token override for {} added!" msgstr "Substituição de token máximo para {} adicionada!" -#: assistant\commands\admin.py:2952 +#: assistant\commands\admin.py:4031 #, docstring msgid "\n" " Assign a max response token override to a role\n\n" @@ -2083,19 +2924,19 @@ msgstr "\n" "Definir como 0 para que os tokens de resposta sejam dinâmicos\n\n" "*Especificar a mesma função e contagem de tokens para remover a substituição* " -#: assistant\commands\admin.py:2964 +#: assistant\commands\admin.py:4043 msgid "Max response token override for {} removed!" msgstr "Substituição do token de resposta máximo para {} removido!" -#: assistant\commands\admin.py:2967 +#: assistant\commands\admin.py:4046 msgid "Max response token override for {} overwritten!" msgstr "Substituição do token de resposta máximo para {} substituído!" -#: assistant\commands\admin.py:2970 +#: assistant\commands\admin.py:4049 msgid "Max response token override for {} added!" msgstr "Substituição do token de resposta máximo para {} adicionada!" -#: assistant\commands\admin.py:2975 +#: assistant\commands\admin.py:4054 #, docstring msgid "\n" " Assign a max message retention override to a role\n\n" @@ -2105,19 +2946,19 @@ msgstr "\n" "Atribuir uma substituição de retenção máxima de mensagens a uma função\n\n" "*Especificar a mesma função e o montante de retenção para remover a substituição* " -#: assistant\commands\admin.py:2987 +#: assistant\commands\admin.py:4066 msgid "Max retention override for {} removed!" msgstr "Anulação da retenção máxima para {} removida!" -#: assistant\commands\admin.py:2990 +#: assistant\commands\admin.py:4069 msgid "Max retention override for {} overwritten!" msgstr "Substituição da retenção máxima para {} substituída!" -#: assistant\commands\admin.py:2993 +#: assistant\commands\admin.py:4072 msgid "Max retention override for {} added!" msgstr "Substituição da retenção máxima para {} adicionada!" -#: assistant\commands\admin.py:2998 +#: assistant\commands\admin.py:4077 #, docstring msgid "\n" " Assign a max retention time override to a role\n\n" @@ -2127,19 +2968,19 @@ msgstr "\n" "Atribuir uma substituição do tempo máximo de retenção a uma função\n\n" "*Especificar a mesma função e hora para remover a substituição* " -#: assistant\commands\admin.py:3010 +#: assistant\commands\admin.py:4089 msgid "Max retention time override for {} removed!" msgstr "Anulação do tempo máximo de retenção para {} removida!" -#: assistant\commands\admin.py:3013 +#: assistant\commands\admin.py:4092 msgid "Max retention time override for {} overwritten!" msgstr "Substituição do tempo de retenção máximo para {} substituído!" -#: assistant\commands\admin.py:3016 +#: assistant\commands\admin.py:4095 msgid "Max retention time override for {} added!" msgstr "Substituição do tempo máximo de retenção para {} adicionada!" -#: assistant\commands\admin.py:3021 +#: assistant\commands\admin.py:4100 #, docstring msgid "\n" " Assign a reasoning effort override to a role\n\n" @@ -2148,23 +2989,23 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:3031 +#: assistant\commands\admin.py:4110 msgid "Invalid effort level. Valid values: {}" msgstr "" -#: assistant\commands\admin.py:3038 +#: assistant\commands\admin.py:4117 msgid "Reasoning effort override for {} removed!" msgstr "" -#: assistant\commands\admin.py:3041 +#: assistant\commands\admin.py:4120 msgid "Reasoning effort override for {} overwritten!" msgstr "" -#: assistant\commands\admin.py:3044 +#: assistant\commands\admin.py:4123 msgid "Reasoning effort override for {} added!" msgstr "" -#: assistant\commands\admin.py:3049 +#: assistant\commands\admin.py:4128 #, docstring msgid "\n" " Switch verbosity level for gpt-5 model between low, medium, and high\n\n" @@ -2172,79 +3013,112 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:3057 +#: assistant\commands\admin.py:4136 msgid "Verbosity has been set to **Medium**" msgstr "" -#: assistant\commands\admin.py:3060 +#: assistant\commands\admin.py:4139 msgid "Verbosity has been set to **High**" msgstr "" -#: assistant\commands\admin.py:3063 +#: assistant\commands\admin.py:4142 msgid "Verbosity has been set to **Low**" msgstr "" -#: assistant\commands\admin.py:3075 +#: assistant\commands\admin.py:4154 +#, docstring +msgid "Set the global default chat model for guilds that haven't picked their own (owner).\n\n" +" Pairs with `[p]assistant api globalendpoint`: e.g. set `openrouter/free` so new servers\n" +" route to OpenRouter's free models instead of the built-in `gpt-5.4` default. Guilds that\n" +" chose their own model are unaffected. Omit to view; pass `none` to clear.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:4161 +msgid "(not set - guilds use their own model)" +msgstr "" + +#: assistant\commands\admin.py:4163 +msgid "Global default model: `{}`\n" +"Set with `{}assistant api globalmodel `." +msgstr "" + +#: assistant\commands\admin.py:4169 +msgid "Global default model cleared." +msgstr "" + +#: assistant\commands\admin.py:4173 +msgid "Global default model set to `{}`. Guilds without their own model will use it." +msgstr "" + +#: assistant\commands\admin.py:4180 #, docstring msgid "\n" -" Override the global OpenAI-compatible API base URL\n\n" -" Pass the full API base URL, including the scheme and the `/v1` suffix.\n\n" +" Set the global default endpoint URL (owner)\n\n" +" When set, every guild without its own endpoint override calls this\n" +" URL instead of OpenAI's default. Pass the full base URL including\n" +" the scheme and the `/v1` suffix.\n\n" " **Examples**\n" " - `http://127.0.0.1:1234/v1`\n" " - `http://localhost:5001/v1`\n" -" - `https://example.com/api/v1`\n\n" +" - `https://example.com/api/v1`\n" +" - `https://openrouter.ai/api/v1`\n\n" " **Notes**\n" -" - When set, all servers can use the assistant without needing their own API key\n" -" - Custom endpoints must be OpenAI-compatible\n" -" - This should be the SDK `base_url`, not a specific route like `/chat/completions`\n" -" - Use `[p]assistant endpointapikey` to set a global key for authenticated custom endpoints\n" +" - Endpoints must be OpenAI-compatible\n" +" - This is the SDK `base_url`, not a specific route like `/chat/completions`\n" +" - Use `[p]assistant api globalkey` to set the API key for this endpoint\n" +" - Router endpoints like OpenRouter accept special model aliases\n" +" (e.g. `openrouter/auto`, `openrouter/free`) via `[p]assistant set model`\n" " - Omit the argument to remove the override\n" " " msgstr "" -#: assistant\commands\admin.py:3097 +#: assistant\commands\admin.py:4206 msgid "Endpoint is already set to **{}**" msgstr "" -#: assistant\commands\admin.py:3101 +#: assistant\commands\admin.py:4210 msgid "Endpoint has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:3109 +#: assistant\commands\admin.py:4218 msgid "Endpoint has been changed from **{}** to **{}**" msgstr "" -#: assistant\commands\admin.py:3116 +#: assistant\commands\admin.py:4225 msgid "Endpoint override has been removed!" msgstr "" -#: assistant\commands\admin.py:3122 +#: assistant\commands\admin.py:4232 #, docstring -msgid "Probe the configured custom endpoint and cache its runtime model/capability profile" +msgid "Probe the active endpoint and refresh its cached model/capability profile\n\n" +" Checks the guild endpoint override first; if none is set, probes the\n" +" global endpoint override. Reports an error if no endpoint is configured.\n" +" " msgstr "" -#: assistant\commands\admin.py:3124 -msgid "No endpoint override is configured." +#: assistant\commands\admin.py:4240 +msgid "No endpoint override is configured for this guild or globally." msgstr "" -#: assistant\commands\admin.py:3130 -msgid "Failed to probe the configured endpoint." +#: assistant\commands\admin.py:4246 +msgid "Failed to probe `{}`." msgstr "" -#: assistant\commands\admin.py:3137 +#: assistant\commands\admin.py:4253 #, docstring msgid "Wipe all settings and data for entire cog" msgstr "Limpar todas as definições e dados para toda a engrenagem" -#: assistant\commands\admin.py:3139 +#: assistant\commands\admin.py:4255 msgid "Not wiping cog" msgstr "Não limpando a engrenagem" -#: assistant\commands\admin.py:3144 +#: assistant\commands\admin.py:4260 msgid "Cog has been wiped!" msgstr "O Cog foi eliminado!" -#: assistant\commands\admin.py:3149 +#: assistant\commands\admin.py:4265 #, docstring msgid "\n" " Take a backup of the cog\n\n" @@ -2253,22 +3127,22 @@ msgid "\n" msgstr "Fazer uma cópia de segurança da engrenagem\n\n" "- Isso não faz backup dos dados da conversa " -#: assistant\commands\admin.py:3167 +#: assistant\commands\admin.py:4283 msgid "Here is your export!" msgstr "Aqui está a sua exportação!" -#: assistant\commands\admin.py:3196 +#: assistant\commands\admin.py:4312 #, docstring msgid "\n" " Restore the cog from a backup\n" " " msgstr "Restaurar a engrenagem a partir de uma cópia de segurança " -#: assistant\commands\admin.py:3206 +#: assistant\commands\admin.py:4322 msgid "Cog has been restored!" msgstr "O Cog foi restaurado!" -#: assistant\commands\admin.py:3212 +#: assistant\commands\admin.py:4328 #, docstring msgid "\n" " Wipe saved conversations for the assistant in all servers\n\n" @@ -2277,37 +3151,37 @@ msgid "\n" msgstr "Limpar as conversas guardadas para o assistente em todos os servidores.\n\n" "Esta ação elimina todas e quaisquer conversas guardadas para o assistente " -#: assistant\commands\admin.py:3221 +#: assistant\commands\admin.py:4337 msgid "Conversations have been wiped for all servers!" msgstr "As conversas foram apagadas em todos os servidores!" -#: assistant\commands\admin.py:3227 +#: assistant\commands\admin.py:4343 #, docstring msgid "Toggle persistent conversations" msgstr "Alternar conversas persistentes" -#: assistant\commands\admin.py:3230 +#: assistant\commands\admin.py:4346 msgid "Persistent conversations have been **Disabled**" msgstr "As conversas persistentes foram **Desativadas**" -#: assistant\commands\admin.py:3233 +#: assistant\commands\admin.py:4349 msgid "Persistent conversations have been **Enabled**" msgstr "As conversas persistentes foram **ativadas**" -#: assistant\commands\admin.py:3239 +#: assistant\commands\admin.py:4355 #, docstring msgid "Toggle whether reasoning/think blocks are uploaded as files globally" msgstr "" -#: assistant\commands\admin.py:3242 +#: assistant\commands\admin.py:4358 msgid "Reasoning blocks will now be stripped from replies without uploading think files." msgstr "" -#: assistant\commands\admin.py:3245 +#: assistant\commands\admin.py:4361 msgid "Reasoning blocks will now be uploaded as think files when present." msgstr "" -#: assistant\commands\admin.py:3251 +#: assistant\commands\admin.py:4367 #, docstring msgid "\n" " Wipe saved embeddings for all servers\n\n" @@ -2316,11 +3190,11 @@ msgid "\n" msgstr "Limpar as incorporações guardadas para todos os servidores.\n\n" "Esta ação eliminará todos e quaisquer dados de treino de incorporação guardados para o assistente " -#: assistant\commands\admin.py:3261 +#: assistant\commands\admin.py:4377 msgid "All embedding data has been wiped for all servers!" msgstr "Todos os dados de incorporação foram eliminados de todos os servidores!" -#: assistant\commands\admin.py:3267 +#: assistant\commands\admin.py:4383 #, docstring msgid "\n" " Toggle whether the assistant listens to other bots\n\n" @@ -2330,113 +3204,113 @@ msgstr "\n" "Alternar se o assistente ouve outros bots \n\n" "**NÃO RECOMENDADO PARA BOTS PÚBLICOS!** " -#: assistant\commands\admin.py:3274 +#: assistant\commands\admin.py:4390 msgid "Assistant will no longer listen to other bot messages" msgstr "O Assistente deixará de ouvir as mensagens de outros bots" -#: assistant\commands\admin.py:3277 +#: assistant\commands\admin.py:4393 msgid "Assistant will listen to other bot messages" msgstr "O Assistente irá ouvir outras mensagens do bot" -#: assistant\commands\admin.py:3285 +#: assistant\commands\admin.py:4401 #, docstring msgid "View and manage all scheduled autonomous tasks in this server." msgstr "" -#: assistant\commands\admin.py:3288 +#: assistant\commands\admin.py:4404 msgid "No scheduled tasks in this server." msgstr "" -#: assistant\commands\admin.py:3307 +#: assistant\commands\admin.py:4423 msgid "Scheduled Tasks ({})" msgstr "" -#: assistant\commands\admin.py:3317 +#: assistant\commands\admin.py:4433 #, docstring msgid "Cancel a scheduled task by its ID (admin override)." msgstr "" -#: assistant\commands\admin.py:3320 +#: assistant\commands\admin.py:4436 msgid "No scheduled task found with ID `{}`." msgstr "" -#: assistant\commands\admin.py:3322 +#: assistant\commands\admin.py:4438 msgid "That task belongs to a different server." msgstr "" -#: assistant\commands\admin.py:3331 +#: assistant\commands\admin.py:4447 msgid "Scheduled task `{}` has been cancelled." msgstr "" -#: assistant\commands\admin.py:3337 +#: assistant\commands\admin.py:4453 #, docstring msgid "Clear all scheduled tasks in this server." msgstr "" -#: assistant\commands\admin.py:3339 +#: assistant\commands\admin.py:4455 msgid "Not clearing tasks." msgstr "" -#: assistant\commands\admin.py:3350 +#: assistant\commands\admin.py:4466 msgid "Cleared {} scheduled tasks." msgstr "" -#: assistant\commands\admin.py:3356 +#: assistant\commands\admin.py:4470 #, docstring msgid "Toggle LLM-based conversation compaction on or off" msgstr "" -#: assistant\commands\admin.py:3360 +#: assistant\commands\admin.py:4474 msgid "Conversation compaction is now **Disabled** (blind degradation will be used)" msgstr "" -#: assistant\commands\admin.py:3363 +#: assistant\commands\admin.py:4477 msgid "Conversation compaction is now **Enabled**" msgstr "" -#: assistant\commands\admin.py:3368 +#: assistant\commands\admin.py:4482 #, docstring msgid "Set the model used for compaction (leave blank to use the chat model)" msgstr "" -#: assistant\commands\admin.py:3372 +#: assistant\commands\admin.py:4487 msgid "Compaction model cleared, the main chat model will be used" msgstr "" -#: assistant\commands\admin.py:3377 +#: assistant\commands\admin.py:4492 msgid "Compaction model set to **{}**" msgstr "" -#: assistant\commands\admin.py:3382 +#: assistant\commands\admin.py:4497 #, docstring msgid "Set the token threshold at which compaction triggers\n\n" " When set, the bot will proactively compact conversations once they\n" " exceed this many tokens, even if the model's context window is larger.\n\n" " Set to **0** to only compact when hitting the model's max token limit.\n\n" " **Examples**\n" -" - `[p]assistant compactionthreshold 16000` - compact at 16k tokens\n" -" - `[p]assistant compactionthreshold 0` - reset to default behavior\n" +" - `[p]assistant compaction threshold 16000` - compact at 16k tokens\n" +" - `[p]assistant compaction threshold 0` - reset to default behavior\n" " " msgstr "" -#: assistant\commands\admin.py:3394 +#: assistant\commands\admin.py:4509 msgid "Token limit must be 0 or higher" msgstr "" -#: assistant\commands\admin.py:3398 +#: assistant\commands\admin.py:4513 msgid "Compaction will now trigger at **{}** tokens" msgstr "" -#: assistant\commands\admin.py:3400 +#: assistant\commands\admin.py:4515 msgid "Compaction threshold reset, will only compact at the model's max token limit" msgstr "" -#: assistant\commands\base.py:46 +#: assistant\commands\base.py:45 #, docstring msgid "Get help using assistant" msgstr "" -#: assistant\commands\base.py:48 +#: assistant\commands\base.py:47 msgid "\n" "# How to Use\n\n" "### Commands\n" @@ -2444,6 +3318,7 @@ msgid "\n" "`[p]convocontext` - detailed token breakdown of what's consuming your context window.\n" "`[p]convocompact` - intelligently summarize older messages to free up context space.\n" "`[p]clearconvo` - reset your conversation for the current channel/thread/forum.\n" +"`[p]unchat` - cancel the active assistant response for the current channel/thread/forum.\n" "`[p]showconvo` - get a json dump of your current conversation (this is mostly for debugging)\n" "`[p]chat` or `[p]ask` - command prefix for chatting with the bot outside of the live chat, or just @ it.\n\n" "### Chat Arguments\n" @@ -2470,42 +3345,38 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:109 +#: assistant\commands\base.py:110 msgid "The API key is not set up!" msgstr "" -#: assistant\commands\base.py:111 +#: assistant\commands\base.py:112 msgid "Image generation is disabled!" msgstr "" -#: assistant\commands\base.py:120 +#: assistant\commands\base.py:121 msgid "Generating image..." msgstr "" -#: assistant\commands\base.py:124 +#: assistant\commands\base.py:125 msgid "-# Size: {}\n" "-# Quality: {}\n" "-# Model: {}" msgstr "" -#: assistant\commands\base.py:126 +#: assistant\commands\base.py:127 msgid "\n" "-# Style: {}" msgstr "" -#: assistant\commands\base.py:145 -msgid "Cost: ${}" -msgstr "" - -#: assistant\commands\base.py:150 +#: assistant\commands\base.py:155 msgid "Revised Prompt" msgstr "" -#: assistant\commands\base.py:150 +#: assistant\commands\base.py:155 msgid "Continued" msgstr "" -#: assistant\commands\base.py:170 +#: assistant\commands\base.py:178 #, docstring msgid "\n" " Chat with [botname]!\n\n" @@ -2522,7 +3393,11 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:197 +#: assistant\commands\base.py:208 +msgid "There are too many pending messages for this conversation. Please wait for the current reply." +msgstr "" + +#: assistant\commands\base.py:214 #, docstring msgid "\n" " Check the token and message count of yourself or another user's conversation for this channel\n\n" @@ -2533,7 +3408,7 @@ msgstr "Verifique o token e a contagem de mensagens da sua conversa ou da conver "As conversas são *Por* usuário *Por* canal, o que significa que uma conversa que você tem em um canal será mantida na memória separadamente de outra conversa em um canal separado\n\n" "As conversas são armazenadas apenas na memória até que o bot seja reiniciado ou o cog seja recarregado " -#: assistant\commands\base.py:252 +#: assistant\commands\base.py:271 msgid "`Messages: `{}/{}\n" "`Context: `{}/{} ({:.1f}%)\n" "`Conversation:`{}\n" @@ -2542,126 +3417,126 @@ msgid "`Messages: `{}/{}\n" "`Model: `{}" msgstr "" -#: assistant\commands\base.py:271 +#: assistant\commands\base.py:290 msgid "\n" "`Tool Calls: `{}" msgstr "" -#: assistant\commands\base.py:273 +#: assistant\commands\base.py:292 msgid "\n" "`Compacted: `{} time(s)" msgstr "" -#: assistant\commands\base.py:275 +#: assistant\commands\base.py:294 msgid "*Collabroative conversations are enabled*" msgstr "" -#: assistant\commands\base.py:281 +#: assistant\commands\base.py:300 msgid "Conversation stats for {}" msgstr "Estatísticas de conversação para {}" -#: assistant\commands\base.py:284 +#: assistant\commands\base.py:303 msgid "Context = conversation + overhead (prompts + function schemas)" msgstr "" -#: assistant\commands\base.py:289 +#: assistant\commands\base.py:308 msgid "System prompt override for this conversation" msgstr "" -#: assistant\commands\base.py:292 +#: assistant\commands\base.py:311 msgid "System prompt override for this channel" msgstr "" -#: assistant\commands\base.py:298 +#: assistant\commands\base.py:317 #, docstring msgid "Show a detailed token breakdown for your conversation context" msgstr "" -#: assistant\commands\base.py:334 +#: assistant\commands\base.py:353 msgid "`Max Context: `{} tokens\n" msgstr "" -#: assistant\commands\base.py:335 +#: assistant\commands\base.py:354 msgid "`Context Fill: `{:.1f}%\n" msgstr "" -#: assistant\commands\base.py:336 +#: assistant\commands\base.py:355 msgid "`Model: `{}\n" msgstr "" -#: assistant\commands\base.py:338 +#: assistant\commands\base.py:357 msgid "**Token Breakdown**\n" msgstr "" -#: assistant\commands\base.py:339 +#: assistant\commands\base.py:358 msgid "`System Prompt: `{}\n" msgstr "" -#: assistant\commands\base.py:340 +#: assistant\commands\base.py:359 msgid "`Initial Prompt: `{}\n" msgstr "" -#: assistant\commands\base.py:341 +#: assistant\commands\base.py:360 msgid "`Channel Prompt: `{}\n" msgstr "" -#: assistant\commands\base.py:342 +#: assistant\commands\base.py:361 msgid "`Function Schemas: `{} ({} functions)\n" msgstr "" -#: assistant\commands\base.py:345 +#: assistant\commands\base.py:364 msgid "`Conversation: `{}\n" msgstr "" -#: assistant\commands\base.py:346 +#: assistant\commands\base.py:365 msgid "`Total: `{}\n" msgstr "" -#: assistant\commands\base.py:348 +#: assistant\commands\base.py:367 msgid "**Message Breakdown**\n" msgstr "" -#: assistant\commands\base.py:349 +#: assistant\commands\base.py:368 msgid "`System/Developer: `{}\n" msgstr "" -#: assistant\commands\base.py:350 +#: assistant\commands\base.py:369 msgid "`User Messages: `{}\n" msgstr "" -#: assistant\commands\base.py:351 +#: assistant\commands\base.py:370 msgid "`Assistant Messages: `{}\n" msgstr "" -#: assistant\commands\base.py:352 +#: assistant\commands\base.py:371 msgid "`Tool Results: `{}\n" msgstr "" -#: assistant\commands\base.py:353 +#: assistant\commands\base.py:372 msgid "`Images: `{}\n" msgstr "" -#: assistant\commands\base.py:354 +#: assistant\commands\base.py:373 msgid "`Compaction Summaries:`{}\n" msgstr "" -#: assistant\commands\base.py:356 +#: assistant\commands\base.py:375 msgid "**Compaction**\n" msgstr "" -#: assistant\commands\base.py:357 +#: assistant\commands\base.py:376 msgid "`Times Compacted: `{}\n" msgstr "" -#: assistant\commands\base.py:367 +#: assistant\commands\base.py:386 msgid "Context Breakdown" msgstr "" -#: assistant\commands\base.py:372 +#: assistant\commands\base.py:391 msgid "Context for {}" msgstr "" -#: assistant\commands\base.py:380 +#: assistant\commands\base.py:399 #, docstring msgid "Compact your conversation using LLM summarization\n\n" " This summarizes older messages instead of deleting them, preserving\n" @@ -2672,35 +3547,35 @@ msgid "Compact your conversation using LLM summarization\n\n" " " msgstr "" -#: assistant\commands\base.py:391 +#: assistant\commands\base.py:411 msgid "No API key has been set!" msgstr "" -#: assistant\commands\base.py:393 +#: assistant\commands\base.py:413 msgid "Conversation compaction is disabled in this server." msgstr "" -#: assistant\commands\base.py:404 +#: assistant\commands\base.py:424 msgid "Only moderators can compact channel conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:409 +#: assistant\commands\base.py:429 msgid "You have no conversation history in this channel." msgstr "" -#: assistant\commands\base.py:414 +#: assistant\commands\base.py:434 msgid "Not enough messages to compact (need more than {})." msgstr "" -#: assistant\commands\base.py:434 +#: assistant\commands\base.py:453 msgid "Conversation compacted! ({} compactions total for this conversation)" msgstr "" -#: assistant\commands\base.py:439 +#: assistant\commands\base.py:458 msgid "Compaction was not needed or failed." msgstr "" -#: assistant\commands\base.py:444 +#: assistant\commands\base.py:463 #, docstring msgid "\n" " Reset your conversation with the bot\n\n" @@ -2709,112 +3584,129 @@ msgid "\n" msgstr "Redefina sua conversa com o bot \n\n" "Isso irá limpar todo o histórico de mensagens entre você e o bot para este canal " -#: assistant\commands\base.py:457 +#: assistant\commands\base.py:476 msgid "Only moderators can clear channel conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:461 +#: assistant\commands\base.py:481 msgid "Your conversation in this channel has been reset!" msgstr "A tua conversa neste canal foi reiniciada!" -#: assistant\commands\base.py:467 +#: assistant\commands\base.py:486 +#, docstring +msgid "Cancel the active assistant response for this channel" +msgstr "" + +#: assistant\commands\base.py:494 +msgid "Only moderators can cancel channel conversations when collaborative conversations are enabled!" +msgstr "" + +#: assistant\commands\base.py:499 +msgid "There is no active assistant response to cancel in this channel." +msgstr "" + +#: assistant\commands\base.py:500 +msgid "The active assistant response for this channel has been cancelled." +msgstr "" + +#: assistant\commands\base.py:506 #, docstring msgid "\n" " Pop the last message from your conversation\n" " " msgstr "" -#: assistant\commands\base.py:478 +#: assistant\commands\base.py:517 msgid "Only moderators can pop messages from conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:482 assistant\commands\base.py:743 +#: assistant\commands\base.py:521 assistant\commands\base.py:788 msgid "There are no messages in this conversation yet!" msgstr "" -#: assistant\commands\base.py:487 +#: assistant\commands\base.py:526 msgid "Removed the last message from this conversation" msgstr "" -#: assistant\commands\base.py:507 +#: assistant\commands\base.py:546 #, docstring msgid "\n" " Get a summary of whats going on in a channel\n" " " msgstr "" -#: assistant\commands\base.py:513 +#: assistant\commands\base.py:552 msgid "Invalid timeframe! Please use a valid time format like `1h` for an hour" msgstr "" -#: assistant\commands\base.py:516 +#: assistant\commands\base.py:555 msgid "The maximum timeframe is 48 hours!" msgstr "" -#: assistant\commands\base.py:524 +#: assistant\commands\base.py:563 msgid "Only moderators can summarize conversations!" msgstr "" -#: assistant\commands\base.py:531 +#: assistant\commands\base.py:570 msgid "You don't have permission to view the channel!" msgstr "" -#: assistant\commands\base.py:538 +#: assistant\commands\base.py:577 msgid "I don't have permission to view the channel!" msgstr "" -#: assistant\commands\base.py:561 +#: assistant\commands\base.py:600 msgid "No messages found to summarize within that timeframe!" msgstr "" -#: assistant\commands\base.py:563 +#: assistant\commands\base.py:602 msgid "Not enough messages found to summarize within that timeframe!" msgstr "" -#: assistant\commands\base.py:664 +#: assistant\commands\base.py:706 msgid "The request timed out!" msgstr "" -#: assistant\commands\base.py:675 +#: assistant\commands\base.py:717 msgid "Failed to get response" msgstr "" -#: assistant\commands\base.py:678 +#: assistant\commands\base.py:720 msgid "No response was generated!" msgstr "" -#: assistant\commands\base.py:685 +#: assistant\commands\base.py:727 msgid "Timeframe: {}" msgstr "" -#: assistant\commands\base.py:692 assistant\commands\base.py:702 +#: assistant\commands\base.py:734 assistant\commands\base.py:744 msgid "Channel" msgstr "" -#: assistant\commands\base.py:724 +#: assistant\commands\base.py:769 #, docstring msgid "\n" " Copy the conversation to another channel, thread, or forum\n" " " msgstr "" -#: assistant\commands\base.py:735 +#: assistant\commands\base.py:780 msgid "Only moderators can copy conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:746 +#: assistant\commands\base.py:791 msgid "You cannot copy a conversation to a channel you can't see!" msgstr "" -#: assistant\commands\base.py:752 +#: assistant\commands\base.py:797 msgid "This conversation has been overwritten in {}" msgstr "" -#: assistant\commands\base.py:754 +#: assistant\commands\base.py:799 msgid "This conversation has been copied over to {}" msgstr "" -#: assistant\commands\base.py:764 +#: assistant\commands\base.py:809 #, docstring msgid "\n" " Set a system prompt for this conversation!\n\n" @@ -2823,28 +3715,28 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:773 +#: assistant\commands\base.py:818 msgid "Conversation system prompt overriding is **Disabled**." msgstr "" -#: assistant\commands\base.py:783 +#: assistant\commands\base.py:828 msgid "Only moderators can set conversation prompts when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:803 +#: assistant\commands\base.py:848 msgid "This prompt is uses {} tokens which is more than 90% of the maximum tokens allowed per conversation!\n" "Write a prompt using {} tokens or less to leave 10% of your token limit for responses" msgstr "" -#: assistant\commands\base.py:812 +#: assistant\commands\base.py:857 msgid "System prompt has been set for this conversation!" msgstr "" -#: assistant\commands\base.py:814 +#: assistant\commands\base.py:859 msgid "System prompt has been **Removed** for this conversation!" msgstr "" -#: assistant\commands\base.py:826 +#: assistant\commands\base.py:871 #, docstring msgid "\n" " View the current transcript of a conversation\n\n" @@ -2854,50 +3746,50 @@ msgstr "\n" "Ver a transcrição atual de uma conversa\n\n" "Isto serve principalmente para efeitos de moderação " -#: assistant\commands\base.py:838 +#: assistant\commands\base.py:883 msgid "You have no conversation in this channel!" msgstr "Não há conversa neste canal!" -#: assistant\commands\base.py:851 +#: assistant\commands\base.py:896 msgid "Here is your conversation transcript!" msgstr "Aqui está a transcrição da sua conversa!" -#: assistant\commands\base.py:857 +#: assistant\commands\base.py:902 #, docstring msgid "\n" " Import a conversation from a file\n" " " msgstr "" -#: assistant\commands\base.py:862 +#: assistant\commands\base.py:907 msgid "Please attach a file to import the conversation from!" msgstr "" -#: assistant\commands\base.py:864 +#: assistant\commands\base.py:909 msgid "Please only attach one file to import the conversation from!" msgstr "" -#: assistant\commands\base.py:867 +#: assistant\commands\base.py:912 msgid "Please upload a valid JSON file." msgstr "" -#: assistant\commands\base.py:872 +#: assistant\commands\base.py:917 msgid "Failed to parse conversation file." msgstr "" -#: assistant\commands\base.py:878 +#: assistant\commands\base.py:923 msgid "The conversation file is not in the correct format. It should be a list of messages." msgstr "" -#: assistant\commands\base.py:888 +#: assistant\commands\base.py:933 msgid "You do not have permission to import conversations." msgstr "" -#: assistant\commands\base.py:893 +#: assistant\commands\base.py:938 msgid "Conversation has been imported successfully!" msgstr "" -#: assistant\commands\base.py:899 +#: assistant\commands\base.py:944 #, docstring msgid "\n" " Fetch related embeddings according to the current topn setting along with their scores\n\n" @@ -2905,31 +3797,31 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:906 +#: assistant\commands\base.py:951 msgid "You do not have any embeddings configured!" msgstr "Não tem quaisquer incorporações configuradas!" -#: assistant\commands\base.py:908 +#: assistant\commands\base.py:953 msgid "Top N is set to 0 so no embeddings will be returned" msgstr "Top N está definido como 0, portanto, nenhuma incorporação será retornada" -#: assistant\commands\base.py:914 +#: assistant\commands\base.py:959 msgid "Failed to get embedding for your query" msgstr "Falha ao obter a incorporação para a sua consulta" -#: assistant\commands\base.py:923 +#: assistant\commands\base.py:968 msgid "No embeddings could be related to this query with the current settings" msgstr "Não foi possível relacionar nenhum embeddings com esta consulta com as definições atuais" -#: assistant\commands\base.py:927 +#: assistant\commands\base.py:972 msgid "`Entry Name: `{}\n" msgstr "`Nome da entrada: `{}\n" -#: assistant\commands\base.py:928 +#: assistant\commands\base.py:973 msgid "`Relatedness: `{}\n" msgstr "`Relacionamento: `{}\n" -#: assistant\commands\base.py:929 +#: assistant\commands\base.py:974 msgid "`Dimensions: `{}\n" msgstr "`Dimensões: `{}\n" From 67255745a9a5cd2e063236faf888e922fd8985ff Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Mon, 1 Jun 2026 11:10:49 -0400 Subject: [PATCH 054/104] New translations messages.pot (Russian) [ci skip] --- assistant/commands/locales/ru-RU.po | 2678 ++++++++++++++++++--------- 1 file changed, 1789 insertions(+), 889 deletions(-) diff --git a/assistant/commands/locales/ru-RU.po b/assistant/commands/locales/ru-RU.po index 3239fb2c6..1792c1e6c 100644 --- a/assistant/commands/locales/ru-RU.po +++ b/assistant/commands/locales/ru-RU.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-20 01:28\n" +"POT-Creation-Date: 2026-06-01 09:46-0400\n" +"PO-Revision-Date: 2026-06-01 15:10\n" "Last-Translator: \n" "Language-Team: Russian\n" "MIME-Version: 1.0\n" @@ -17,19 +17,19 @@ msgstr "" "X-Crowdin-File-ID: 53\n" "Language: ru_RU\n" -#: assistant\commands\admin.py:67 +#: assistant\commands\admin.py:89 msgid "Endpoint override must be a full base URL, for example `http://127.0.0.1:1234/v1` or `https://example.com/api/v1`." msgstr "" -#: assistant\commands\admin.py:72 +#: assistant\commands\admin.py:94 msgid "Endpoint override must point at the OpenAI-compatible API base path ending in `/v1`. Do not include routes like `/chat/completions` or `/models`." msgstr "" -#: assistant\commands\admin.py:81 +#: assistant\commands\admin.py:103 msgid "Empty" msgstr "" -#: assistant\commands\admin.py:90 +#: assistant\commands\admin.py:112 #, docstring msgid "\n" " Setup the assistant\n\n" @@ -37,69 +37,166 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:133 +#: assistant\commands\admin.py:122 +#, docstring +msgid "Manage API keys and endpoint URLs" +msgstr "" + +#: assistant\commands\admin.py:127 +#, docstring +msgid "Per-guild endpoint and key overrides (chat + embeddings)" +msgstr "" + +#: assistant\commands\admin.py:132 +#, docstring +msgid "Configure general guild settings" +msgstr "" + +#: assistant\commands\admin.py:137 +#, docstring +msgid "Configure assistant prompts" +msgstr "" + +#: assistant\commands\admin.py:142 +#, docstring +msgid "Configure feature toggles" +msgstr "" + +#: assistant\commands\admin.py:147 +#, docstring +msgid "Configure auto-answer settings" +msgstr "" + +#: assistant\commands\admin.py:152 +#, docstring +msgid "Configure trigger phrase system" +msgstr "" + +#: assistant\commands\admin.py:157 +#, docstring +msgid "Configure content filtering" +msgstr "" + +#: assistant\commands\admin.py:162 +#, docstring +msgid "Configure token and retention limits" +msgstr "" + +#: assistant\commands\admin.py:167 +#, docstring +msgid "Configure model behavior parameters" +msgstr "" + +#: assistant\commands\admin.py:172 +#, docstring +msgid "Configure embeddings and RAG settings" +msgstr "" + +#: assistant\commands\admin.py:177 +#, docstring +msgid "Admin maintenance commands" +msgstr "" + +#: assistant\commands\admin.py:183 +#, docstring +msgid "Configure OpenRouter response & prompt caching." +msgstr "" + +#: assistant\commands\admin.py:188 +#, docstring +msgid "Manage role-based overrides" +msgstr "" + +#: assistant\commands\admin.py:193 +#, docstring +msgid "Manage scheduled autonomous tasks" +msgstr "" + +#: assistant\commands\admin.py:198 +#, docstring +msgid "Configure conversation compaction" +msgstr "" + +#: assistant\commands\admin.py:203 +#, docstring +msgid "AI moderation: scan messages, review flagged ones, and propose staff actions." +msgstr "" + +#: assistant\commands\admin.py:244 msgid "... and {} more" msgstr "" -#: assistant\commands\admin.py:143 +#: assistant\commands\admin.py:255 msgid "Configured chat model" msgstr "" -#: assistant\commands\admin.py:144 +#: assistant\commands\admin.py:256 msgid "{}: **{}**" msgstr "" -#: assistant\commands\admin.py:147 assistant\commands\admin.py:180 +#: assistant\commands\admin.py:259 assistant\commands\admin.py:294 msgid "No endpoint model cache is available yet. Run `{}` to refresh it, or enter a model id manually." msgstr "" -#: assistant\commands\admin.py:154 +#: assistant\commands\admin.py:266 msgid "Runtime chat model: **{}**" msgstr "" -#: assistant\commands\admin.py:159 +#: assistant\commands\admin.py:271 msgid "Discovered chat models:\n" "{}" msgstr "" -#: assistant\commands\admin.py:165 +#: assistant\commands\admin.py:277 msgid "No chat models were discovered from this endpoint yet. You can still enter a model id manually." msgstr "" -#: assistant\commands\admin.py:169 assistant\commands\admin.py:204 +#: assistant\commands\admin.py:281 assistant\commands\admin.py:318 msgid "Use this command again with one of these model ids, or enter another id manually if your endpoint supports it." msgstr "" -#: assistant\commands\admin.py:177 +#: assistant\commands\admin.py:291 msgid "Configured embedding model: **{}**" msgstr "" -#: assistant\commands\admin.py:187 +#: assistant\commands\admin.py:301 msgid "Runtime embedding model: **{}**" msgstr "" -#: assistant\commands\admin.py:192 +#: assistant\commands\admin.py:306 msgid "Discovered embedding models:\n" "{}" msgstr "" -#: assistant\commands\admin.py:198 +#: assistant\commands\admin.py:312 msgid "No embedding models were discovered from this endpoint yet. You can still enter a model id manually." msgstr "" -#: assistant\commands\admin.py:217 +#: assistant\commands\admin.py:332 msgid "embedding" msgstr "" -#: assistant\commands\admin.py:217 +#: assistant\commands\admin.py:332 msgid "chat" msgstr "" -#: assistant\commands\admin.py:220 -msgid "Note: `{}` is not in the endpoint's discovered {} model list. Requests will currently resolve to `{}` unless the endpoint starts advertising or returning that model." +#: assistant\commands\admin.py:351 +msgid "Note: `{}` is not in the endpoint's discovered {} model list. Requests on this endpoint will automatically use `{}` instead." msgstr "" -#: assistant\commands\admin.py:228 +#: assistant\commands\admin.py:354 +msgid "Note: `{}` is not in the endpoint's discovered {} model list. The cog will still try to use it directly, but the endpoint may reject it." +msgstr "" + +#: assistant\commands\admin.py:400 +msgid "Warning: stored embeddings currently use mixed dimensions ({}). Run `{}` to resync them with `{}`." +msgstr "" + +#: assistant\commands\admin.py:412 +msgid "Warning: stored embeddings are `{}` dimensions, but `{}` returns `{}` dimensions. Run `{}` to resync them after switching models." +msgstr "" + +#: assistant\commands\admin.py:443 #, docstring msgid "\n" " View current settings\n\n" @@ -107,534 +204,655 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:248 +#: assistant\commands\admin.py:468 msgid "`OpenAI Version: `{}\n" msgstr "" -#: assistant\commands\admin.py:249 +#: assistant\commands\admin.py:469 msgid "`OpenAI API Status: `{}\n" msgstr "" -#: assistant\commands\admin.py:250 +#: assistant\commands\admin.py:470 msgid "`Draw Command: `{}\n" msgstr "" -#: assistant\commands\admin.py:250 assistant\commands\admin.py:295 -#: assistant\commands\admin.py:302 assistant\commands\admin.py:312 -#: assistant\commands\admin.py:396 assistant\commands\admin.py:1346 +#: assistant\commands\admin.py:470 assistant\commands\admin.py:525 +#: assistant\commands\admin.py:532 assistant\commands\admin.py:542 +#: assistant\commands\admin.py:679 assistant\commands\admin.py:1695 msgid "Enabled" msgstr "" -#: assistant\commands\admin.py:250 assistant\commands\admin.py:295 -#: assistant\commands\admin.py:302 assistant\commands\admin.py:312 -#: assistant\commands\admin.py:396 assistant\commands\admin.py:1346 +#: assistant\commands\admin.py:470 assistant\commands\admin.py:525 +#: assistant\commands\admin.py:532 assistant\commands\admin.py:542 +#: assistant\commands\admin.py:604 assistant\commands\admin.py:679 +#: assistant\commands\admin.py:1695 msgid "Disabled" msgstr "" -#: assistant\commands\admin.py:251 +#: assistant\commands\admin.py:471 msgid "`Model: `{}\n" msgstr "" -#: assistant\commands\admin.py:252 +#: assistant\commands\admin.py:472 msgid "`Embed Model: `{}\n" msgstr "" -#: assistant\commands\admin.py:253 +#: assistant\commands\admin.py:473 msgid "`Enabled: `{}\n" msgstr "" -#: assistant\commands\admin.py:254 +#: assistant\commands\admin.py:474 msgid "`Timezone: `{}\n" msgstr "" -#: assistant\commands\admin.py:255 +#: assistant\commands\admin.py:475 msgid "`Channel: `{}\n" msgstr "" -#: assistant\commands\admin.py:255 assistant\commands\admin.py:405 -#: assistant\commands\admin.py:412 +#: assistant\commands\admin.py:475 assistant\commands\admin.py:688 +#: assistant\commands\admin.py:695 msgid "Not Set" msgstr "" -#: assistant\commands\admin.py:256 +#: assistant\commands\admin.py:476 msgid "`? Required: `{}\n" msgstr "" -#: assistant\commands\admin.py:257 +#: assistant\commands\admin.py:477 msgid "`Question Mode: `{}\n" msgstr "" -#: assistant\commands\admin.py:258 +#: assistant\commands\admin.py:478 msgid "`Mention on Reply: `{}\n" msgstr "" -#: assistant\commands\admin.py:259 +#: assistant\commands\admin.py:479 msgid "`Respond to Mentions: `{}\n" msgstr "" -#: assistant\commands\admin.py:260 +#: assistant\commands\admin.py:480 msgid "`Collaborative Mode: `{}\n" msgstr "" -#: assistant\commands\admin.py:262 +#: assistant\commands\admin.py:481 msgid "`Max Retention: `{}\n" msgstr "" -#: assistant\commands\admin.py:263 +#: assistant\commands\admin.py:482 msgid "`Retention Expire: `{}s\n" msgstr "" -#: assistant\commands\admin.py:264 +#: assistant\commands\admin.py:483 msgid "`Max Tokens: `{}\n" msgstr "" -#: assistant\commands\admin.py:265 +#: assistant\commands\admin.py:484 msgid "`Max Response Tokens: `{}\n" msgstr "" -#: assistant\commands\admin.py:266 +#: assistant\commands\admin.py:485 msgid "`Min Length: `{}\n" msgstr "" -#: assistant\commands\admin.py:267 +#: assistant\commands\admin.py:486 msgid "`Temperature: `{}\n" msgstr "" -#: assistant\commands\admin.py:268 +#: assistant\commands\admin.py:487 msgid "`Frequency Penalty: `{}\n" msgstr "" -#: assistant\commands\admin.py:269 +#: assistant\commands\admin.py:488 msgid "`Presence Penalty: `{}\n" msgstr "" -#: assistant\commands\admin.py:270 +#: assistant\commands\admin.py:489 msgid "`Seed: `{}\n" msgstr "" -#: assistant\commands\admin.py:271 +#: assistant\commands\admin.py:490 msgid "`Vision Resolution: `{}\n" msgstr "" -#: assistant\commands\admin.py:272 +#: assistant\commands\admin.py:491 msgid "`Reasoning Effort: `{}\n" msgstr "" -#: assistant\commands\admin.py:273 +#: assistant\commands\admin.py:492 msgid "`Verbosity: `{}\n" msgstr "" -#: assistant\commands\admin.py:274 +#: assistant\commands\admin.py:493 msgid "`System Prompt: `{} tokens\n" msgstr "" -#: assistant\commands\admin.py:275 +#: assistant\commands\admin.py:494 msgid "`User Prompt: `{} tokens\n" msgstr "" -#: assistant\commands\admin.py:276 +#: assistant\commands\admin.py:495 msgid "`Endpoint Override: `{}\n" msgstr "" -#: assistant\commands\admin.py:280 +#: assistant\commands\admin.py:495 assistant\commands\admin.py:496 +#: assistant\commands\admin.py:3518 +msgid "Not set" +msgstr "" + +#: assistant\commands\admin.py:496 +msgid "`Guild Endpoint: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:500 +msgid "`Effective Model: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:502 +msgid "`Effective Embed: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:505 msgid "Assistant Settings" msgstr "" -#: assistant\commands\admin.py:288 +#: assistant\commands\admin.py:515 assistant\commands\admin.py:978 +#: assistant\commands\admin.py:1062 msgid "Endpoint Runtime" msgstr "" -#: assistant\commands\admin.py:290 +#: assistant\commands\admin.py:520 msgid "Auto Answer" msgstr "" -#: assistant\commands\admin.py:291 +#: assistant\commands\admin.py:521 msgid "Auto-answer will trigger the bot outside of the assistant channel if a question is detected and an embedding is not found.\n" msgstr "" -#: assistant\commands\admin.py:294 +#: assistant\commands\admin.py:524 msgid "`Model: `{}\n" msgstr "" -#: assistant\commands\admin.py:295 assistant\commands\admin.py:302 +#: assistant\commands\admin.py:525 assistant\commands\admin.py:532 msgid "`Status: `{}\n" msgstr "" -#: assistant\commands\admin.py:296 +#: assistant\commands\admin.py:526 msgid "`Threshold: `{}\n" msgstr "" -#: assistant\commands\admin.py:297 assistant\commands\admin.py:304 +#: assistant\commands\admin.py:527 assistant\commands\admin.py:534 msgid "`Ignored: `{}\n" msgstr "" -#: assistant\commands\admin.py:300 +#: assistant\commands\admin.py:530 msgid "Trigger Words" msgstr "" -#: assistant\commands\admin.py:301 +#: assistant\commands\admin.py:531 msgid "Trigger words allow the bot to respond to messages containing specific keywords or regex patterns.\n" msgstr "" -#: assistant\commands\admin.py:303 +#: assistant\commands\admin.py:533 msgid "`Phrases: `{}\n" msgstr "" -#: assistant\commands\admin.py:305 +#: assistant\commands\admin.py:535 assistant\commands\admin.py:3515 msgid "None" msgstr "" -#: assistant\commands\admin.py:307 +#: assistant\commands\admin.py:537 msgid "`Has Prompt:`{}\n" msgstr "" -#: assistant\commands\admin.py:307 +#: assistant\commands\admin.py:537 msgid "Yes" msgstr "" -#: assistant\commands\admin.py:307 +#: assistant\commands\admin.py:537 msgid "No" msgstr "" -#: assistant\commands\admin.py:310 +#: assistant\commands\admin.py:540 msgid "Think Tags" msgstr "" -#: assistant\commands\admin.py:311 +#: assistant\commands\admin.py:541 msgid "Reasoning blocks wrapped in these tags are removed from chat output.\n" msgstr "" -#: assistant\commands\admin.py:312 +#: assistant\commands\admin.py:542 msgid "`Upload as Files:`{}\n" msgstr "" -#: assistant\commands\admin.py:313 +#: assistant\commands\admin.py:543 msgid "Prefix\n" "{}\n" "Suffix\n" "{}" msgstr "" -#: assistant\commands\admin.py:320 +#: assistant\commands\admin.py:550 msgid "System prompt override is **Allowed**, users can set a personal system prompt per convo." msgstr "" -#: assistant\commands\admin.py:322 +#: assistant\commands\admin.py:552 msgid "System prompt override is **Disabled**, users cannot set a personal system prompt per convo." msgstr "" -#: assistant\commands\admin.py:323 +#: assistant\commands\admin.py:553 msgid "\n" "*This will be restricted to mods if collaborative conversations are enabled!*" msgstr "" -#: assistant\commands\admin.py:324 +#: assistant\commands\admin.py:554 msgid "System Prompt Overriding" msgstr "" -#: assistant\commands\admin.py:332 +#: assistant\commands\admin.py:562 msgid "Channel Prompt Overrides" msgstr "" -#: assistant\commands\admin.py:343 +#: assistant\commands\admin.py:578 +msgid "• System prompt - `{}`" +msgstr "" + +#: assistant\commands\admin.py:581 +msgid "• Initial prompt - `{}`" +msgstr "" + +#: assistant\commands\admin.py:586 +msgid "• <#{}> - `{}`" +msgstr "" + +#: assistant\commands\admin.py:589 +msgid "⚠️ Cache Warning" +msgstr "" + +#: assistant\commands\admin.py:590 +msgid "These prompts contain dynamic variable placeholders that break prompt prefix caching on every request. Use `{prefix}floatingcontext` to move them to the floating context block instead.\n" +msgstr "" + +#: assistant\commands\admin.py:602 +msgid "Enabled ({}s TTL)" +msgstr "" + +#: assistant\commands\admin.py:607 +msgid "Off" +msgstr "" + +#: assistant\commands\admin.py:608 +msgid "5 minutes" +msgstr "" + +#: assistant\commands\admin.py:609 +msgid "1 hour" +msgstr "" + +#: assistant\commands\admin.py:612 +msgid "OpenRouter Caching" +msgstr "" + +#: assistant\commands\admin.py:614 +msgid "`Response Cache: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:615 +msgid "`Provider Prompt Cache: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:626 msgid "Auto-Reply Channels" msgstr "" -#: assistant\commands\admin.py:352 +#: assistant\commands\admin.py:635 msgid "Mixed (Please Refresh!)" msgstr "" -#: assistant\commands\admin.py:354 +#: assistant\commands\admin.py:637 msgid "Synced!" msgstr "" -#: assistant\commands\admin.py:356 +#: assistant\commands\admin.py:639 msgid "N/A" msgstr "" -#: assistant\commands\admin.py:359 +#: assistant\commands\admin.py:642 msgid "`Top N Embeddings: `{}\n" msgstr "" -#: assistant\commands\admin.py:360 +#: assistant\commands\admin.py:643 msgid "`Min Relatedness: `{}\n" msgstr "" -#: assistant\commands\admin.py:361 +#: assistant\commands\admin.py:644 msgid "`Encodings: `{}" msgstr "" -#: assistant\commands\admin.py:365 +#: assistant\commands\admin.py:648 msgid "Embeddings ({})" msgstr "" -#: assistant\commands\admin.py:373 +#: assistant\commands\admin.py:656 msgid "The following roles/users can use the `think_and_plan` tool: " msgstr "" -#: assistant\commands\admin.py:378 +#: assistant\commands\admin.py:661 msgid "`Function Calling: `{}\n" msgstr "" -#: assistant\commands\admin.py:379 +#: assistant\commands\admin.py:662 msgid "`Maximum Recursion: `{}\n" msgstr "" -#: assistant\commands\admin.py:380 +#: assistant\commands\admin.py:663 msgid "`Function Tokens: `{}\n" msgstr "" -#: assistant\commands\admin.py:384 +#: assistant\commands\admin.py:667 msgid "The following cogs also have functions registered with the assistant\n" "{}" msgstr "" -#: assistant\commands\admin.py:389 +#: assistant\commands\admin.py:672 msgid "Custom Functions ({})" msgstr "" -#: assistant\commands\admin.py:394 +#: assistant\commands\admin.py:677 msgid "Max tokens" msgstr "" -#: assistant\commands\admin.py:396 +#: assistant\commands\admin.py:679 msgid "`Compaction: `{}\n" msgstr "" -#: assistant\commands\admin.py:397 +#: assistant\commands\admin.py:680 msgid "`Compaction Model: `{}\n" msgstr "" -#: assistant\commands\admin.py:397 +#: assistant\commands\admin.py:680 msgid "Same as chat" msgstr "" -#: assistant\commands\admin.py:398 +#: assistant\commands\admin.py:681 msgid "`Threshold: `{}\n" msgstr "" -#: assistant\commands\admin.py:400 +#: assistant\commands\admin.py:683 msgid "Context Compaction" msgstr "" -#: assistant\commands\admin.py:404 +#: assistant\commands\admin.py:687 msgid "API Key" msgstr "" -#: assistant\commands\admin.py:411 +#: assistant\commands\admin.py:694 msgid "Endpoint Override API Key" msgstr "" -#: assistant\commands\admin.py:419 +#: assistant\commands\admin.py:702 msgid "Regex Blacklist" msgstr "" -#: assistant\commands\admin.py:421 +#: assistant\commands\admin.py:704 msgid "Regex Failure Blocking" msgstr "" -#: assistant\commands\admin.py:422 +#: assistant\commands\admin.py:705 msgid "Block reply if regex replacement fails: **{}**" msgstr "" -#: assistant\commands\admin.py:427 +#: assistant\commands\admin.py:710 msgid "Conversations are stored persistently" msgstr "" -#: assistant\commands\admin.py:429 +#: assistant\commands\admin.py:712 msgid "conversations are stored in memory until reboot or reload" msgstr "" -#: assistant\commands\admin.py:431 +#: assistant\commands\admin.py:714 msgid "Persistent Conversations" msgstr "" -#: assistant\commands\admin.py:445 +#: assistant\commands\admin.py:728 msgid "Blacklist" msgstr "" -#: assistant\commands\admin.py:457 +#: assistant\commands\admin.py:740 msgid "Model Role Overrides" msgstr "" -#: assistant\commands\admin.py:468 +#: assistant\commands\admin.py:751 msgid "Max Token Role Overrides" msgstr "" -#: assistant\commands\admin.py:479 +#: assistant\commands\admin.py:763 msgid "Max Message Retention Role Overrides" msgstr "" -#: assistant\commands\admin.py:491 +#: assistant\commands\admin.py:778 msgid "Max Message Retention Time Role Overrides" msgstr "" -#: assistant\commands\admin.py:505 +#: assistant\commands\admin.py:793 msgid "Max Response Token Role Overrides" msgstr "" -#: assistant\commands\admin.py:516 +#: assistant\commands\admin.py:808 msgid "Reasoning Effort Role Overrides" msgstr "" -#: assistant\commands\admin.py:520 +#: assistant\commands\admin.py:815 msgid "Your Brave websearch API key is set!" msgstr "" -#: assistant\commands\admin.py:522 +#: assistant\commands\admin.py:817 msgid "Enables the use of the `search_web_brave` function\n" "Get your API key **[Here](https://brave.com/search/api/)**\n" msgstr "" -#: assistant\commands\admin.py:526 +#: assistant\commands\admin.py:821 msgid "Brave Websearch API key" msgstr "" -#: assistant\commands\admin.py:528 +#: assistant\commands\admin.py:823 msgid "Showing settings for {}" msgstr "" -#: assistant\commands\admin.py:534 +#: assistant\commands\admin.py:829 msgid "SystemPrompt" msgstr "" -#: assistant\commands\admin.py:540 +#: assistant\commands\admin.py:835 msgid "InitialPrompt" msgstr "" -#: assistant\commands\admin.py:550 +#: assistant\commands\admin.py:845 msgid "Sent your current settings for this server in DMs!" msgstr "" -#: assistant\commands\admin.py:552 +#: assistant\commands\admin.py:847 msgid "You need to allow DMs so I can message you!" msgstr "" -#: assistant\commands\admin.py:559 -#, docstring -msgid "View the token usage stats for this server" -msgstr "" - -#: assistant\commands\admin.py:562 -msgid "There is no usage data yet!" -msgstr "" - -#: assistant\commands\admin.py:593 -msgid "`Total: `{} (${} @ ${}/1k tokens)" -msgstr "" - -#: assistant\commands\admin.py:600 -msgid "Free/Self-Hosted" -msgstr "" - -#: assistant\commands\admin.py:604 -msgid "`Input: `{} (${} @ ${}/1k tokens)\n" -"`Output: `{} (${} @ ${}/1k tokens)\n" -"`Total: `{} (${})" -msgstr "" - -#: assistant\commands\admin.py:618 -msgid "**Overall Token Usage and Cost**\n" -"`Input: `{} (${})\n" -"`Output: `{} (${})\n" -"`Total: `{} (${})\n" -"`Tool Calls: `{}\n" -msgstr "" - -#: assistant\commands\admin.py:639 -#, docstring -msgid "Reset the token usage stats for this server" -msgstr "" - -#: assistant\commands\admin.py:642 -msgid "Token usage stats have been reset!" -msgstr "" - -#: assistant\commands\admin.py:648 +#: assistant\commands\admin.py:854 #, docstring msgid "\n" -" Set this server's API key\n" +" Set this server's API key\n\n" +" Used for all requests from this guild - whether routing to OpenAI\n" +" directly, the guild's endpoint override, or the global endpoint\n" +" override. If not set, the global endpoint key is used as a fallback.\n" " " msgstr "" -#: assistant\commands\admin.py:654 +#: assistant\commands\admin.py:864 msgid "Click to set this server's API key\n\n" "To remove your key, enter `none`" msgstr "" -#: assistant\commands\admin.py:663 +#: assistant\commands\admin.py:873 msgid "API key has been removed!" msgstr "" -#: assistant\commands\admin.py:666 assistant\commands\admin.py:695 -#: assistant\commands\admin.py:723 +#: assistant\commands\admin.py:876 assistant\commands\admin.py:905 +#: assistant\commands\admin.py:938 assistant\commands\admin.py:3952 msgid "No API key was entered!" msgstr "" -#: assistant\commands\admin.py:669 +#: assistant\commands\admin.py:879 msgid "API key has been set!" msgstr "" -#: assistant\commands\admin.py:679 +#: assistant\commands\admin.py:889 #, docstring msgid "\n" -" Enables use of the `search_web_brave` function\n\n" -" Get your API key **[Here](https://brave.com/search/api/)**\n" +" Set the Brave Search API key (owner) - used by the web-search tool\n\n" +" Get your API key **[here](https://brave.com/search/api/)**.\n" " " msgstr "" -#: assistant\commands\admin.py:685 +#: assistant\commands\admin.py:895 msgid "Click to set your API key\n\n" "To remove your keys, enter `none`" msgstr "" -#: assistant\commands\admin.py:693 +#: assistant\commands\admin.py:903 msgid "Brave API key has been removed!" msgstr "" -#: assistant\commands\admin.py:698 +#: assistant\commands\admin.py:908 msgid "Brave API key has been set!" msgstr "" -#: assistant\commands\admin.py:706 +#: assistant\commands\admin.py:916 #, docstring msgid "\n" -" Set the global API key used for the custom endpoint override\n\n" -" This key is only used when an endpoint override is configured and a guild\n" +" Set the global API key for the default endpoint override (owner)\n\n" +" This key is only used when a global endpoint override is set\n" +" (see `[p]assistant api globalendpoint`) and the requesting guild\n" " has not provided its own API key.\n" " " msgstr "" -#: assistant\commands\admin.py:713 +#: assistant\commands\admin.py:924 msgid "Click to set the API key used for the endpoint override\n\n" "To remove the key, enter `none`" msgstr "" -#: assistant\commands\admin.py:721 +#: assistant\commands\admin.py:933 msgid "Endpoint override API key has been removed!" msgstr "" -#: assistant\commands\admin.py:726 +#: assistant\commands\admin.py:942 msgid "Endpoint override API key has been set!" msgstr "" -#: assistant\commands\admin.py:732 +#: assistant\commands\admin.py:952 +#, docstring +msgid "\n" +" Set this guild's endpoint URL (used for both chat and embeddings)\n\n" +" The endpoint must be a full base URL ending in `/v1`, for example:\n" +" `https://openrouter.ai/api/v1`\n\n" +" Set the API key for this endpoint with `[p]assistant api key`.\n\n" +" After setting, use `[p]assistant set model` (no args) to open an\n" +" interactive model picker. Router endpoints like OpenRouter also\n" +" accept special aliases like `openrouter/auto` or `openrouter/free`.\n\n" +" Run without arguments to view the current guild endpoint.\n" +" Use `none` to remove the guild endpoint override.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:972 +msgid "Guild Endpoint Override" +msgstr "" + +#: assistant\commands\admin.py:973 +msgid "Current endpoint: `{}`" +msgstr "" + +#: assistant\commands\admin.py:983 +msgid "No guild endpoint override is set." +msgstr "" + +#: assistant\commands\admin.py:990 +msgid "Guild endpoint override has been removed!" +msgstr "" + +#: assistant\commands\admin.py:993 +msgid "No guild endpoint override was set." +msgstr "" + +#: assistant\commands\admin.py:1002 +msgid "Guild endpoint override set to `{}`" +msgstr "" + +#: assistant\commands\admin.py:1009 +msgid "Endpoint probed successfully!\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:1024 +msgid "Could not probe the endpoint automatically. You can still use it, but model discovery may be limited." +msgstr "" + +#: assistant\commands\admin.py:1032 +#, docstring +msgid "Clear this guild's endpoint override (URL and cached profile)" +msgstr "" + +#: assistant\commands\admin.py:1035 +msgid "No per-guild endpoint override is set." +msgstr "" + +#: assistant\commands\admin.py:1038 +msgid "Guild endpoint override has been cleared!" +msgstr "" + +#: assistant\commands\admin.py:1044 +#, docstring +msgid "Show this guild's API key and endpoint override status" +msgstr "" + +#: assistant\commands\admin.py:1047 +msgid "Guild API Overrides" +msgstr "" + +#: assistant\commands\admin.py:1051 +msgid "Guild API Key" +msgstr "" + +#: assistant\commands\admin.py:1052 +msgid "Set" +msgstr "" + +#: assistant\commands\admin.py:1052 +msgid "Not set (using global key)" +msgstr "" + +#: assistant\commands\admin.py:1056 +msgid "Endpoint Override" +msgstr "" + +#: assistant\commands\admin.py:1057 +msgid "Not set (using global)" +msgstr "" + +#: assistant\commands\admin.py:1070 #, docstring msgid "Set the timezone used for prompt placeholders" msgstr "" -#: assistant\commands\admin.py:738 +#: assistant\commands\admin.py:1080 msgid "Invalid Timezone, did you mean `{}`?" msgstr "" -#: assistant\commands\admin.py:740 +#: assistant\commands\admin.py:1082 msgid "Timezone set to **{}** (`{}`)" msgstr "" -#: assistant\commands\admin.py:747 +#: assistant\commands\admin.py:1089 #, docstring msgid "\n" -" Set the initial prompt for GPT to use\n\n" +" Set the system prompt for GPT to use\n\n" " Check out [This Guide](https://platform.openai.com/docs/guides/prompt-engineering) for prompting help.\n\n" " **Placeholders**\n" " - **botname**: [botname]\n" @@ -673,70 +891,78 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:792 assistant\commands\admin.py:859 -#: assistant\commands\admin.py:941 assistant\commands\admin.py:998 -#: assistant\commands\admin.py:1275 assistant\commands\admin.py:1406 -#: assistant\commands\admin.py:1448 assistant\commands\base.py:791 +#: assistant\commands\admin.py:1134 assistant\commands\admin.py:1191 +#: assistant\commands\admin.py:1285 assistant\commands\admin.py:1356 +#: assistant\commands\admin.py:1622 assistant\commands\admin.py:1718 +#: assistant\commands\admin.py:1760 assistant\commands\base.py:836 msgid "Failed to read `{}`, bot owner can use `{}` for more information" msgstr "" -#: assistant\commands\admin.py:810 assistant\commands\admin.py:882 -#: assistant\commands\admin.py:959 +#: assistant\commands\admin.py:1152 assistant\commands\admin.py:1303 +#: assistant\commands\admin.py:1379 msgid "Your system and initial prompt combined will use {} tokens!\n" "Write a prompt combination using {} tokens or less to leave 10% of your configured max tokens for your response." msgstr "" -#: assistant\commands\admin.py:818 -msgid "The initial prompt has been removed!" +#: assistant\commands\admin.py:1160 +msgid "The system prompt has been removed!" msgstr "" -#: assistant\commands\admin.py:821 -msgid "Please include an initial prompt or .txt file!\n" +#: assistant\commands\admin.py:1163 +msgid "Please include a system prompt or .txt file!\n" "Use `{}` to view details for this command" msgstr "" -#: assistant\commands\admin.py:827 -msgid "The initial prompt has been overwritten!" +#: assistant\commands\admin.py:1169 +msgid "The system prompt has been overwritten!" msgstr "" -#: assistant\commands\admin.py:830 -msgid "Initial prompt has been set!" +#: assistant\commands\admin.py:1172 +msgid "System prompt has been set!" msgstr "" -#: assistant\commands\admin.py:837 +#: assistant\commands\admin.py:1179 #, docstring -msgid "Show the channel specific system prompt" +msgid "\n" +" Set the global default system prompt used by servers that inherit the default prompt\n\n" +" - Run without arguments to view the current global default prompt\n" +" - Use `none` to reset to the built-in default prompt\n" +" - Servers with a custom system prompt keep using their custom prompt\n" +" " msgstr "" -#: assistant\commands\admin.py:840 -msgid "No channel prompt set for {}" +#: assistant\commands\admin.py:1203 +msgid "Current global default system prompt for servers using the default or an unset system prompt:" msgstr "" -#: assistant\commands\admin.py:852 -#, docstring -msgid "Set a channel specific system prompt" +#: assistant\commands\admin.py:1204 +msgid "Servers with a custom system prompt are unchanged." msgstr "" -#: assistant\commands\admin.py:869 -msgid "Channel prompt has been removed from {}!" +#: assistant\commands\admin.py:1207 +msgid "This is currently using the built-in default prompt." msgstr "" -#: assistant\commands\admin.py:872 -msgid "No channel prompt set for {}!" +#: assistant\commands\admin.py:1209 +msgid "This is currently using a custom default prompt." msgstr "" -#: assistant\commands\admin.py:888 -msgid "Channel prompt has been overwritten for {}!" +#: assistant\commands\admin.py:1215 +msgid "Please include a system prompt or .txt file, or use `none` to reset to the built-in default." msgstr "" -#: assistant\commands\admin.py:890 -msgid "Channel prompt has been set for {}!" +#: assistant\commands\admin.py:1221 +msgid "The global default system prompt has been reset to the built-in default. Servers using the default or an unset system prompt will use it immediately." msgstr "" -#: assistant\commands\admin.py:896 +#: assistant\commands\admin.py:1231 +msgid "The global default system prompt has been updated. Servers using the default or an unset system prompt will use it immediately." +msgstr "" + +#: assistant\commands\admin.py:1240 #, docstring msgid "\n" -" Set the system prompt for GPT to use\n\n" +" Set the initial prompt for GPT to use\n\n" " Check out [This Guide](https://platform.openai.com/docs/guides/prompt-engineering) for prompting help.\n\n" " **Placeholders**\n" " - **botname**: [botname]\n" @@ -775,211 +1001,203 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:967 -msgid "The system prompt has been removed!" +#: assistant\commands\admin.py:1311 +msgid "The initial prompt has been removed!" msgstr "" -#: assistant\commands\admin.py:970 -msgid "Please include a system prompt or .txt file!\n" +#: assistant\commands\admin.py:1314 +msgid "Please include an initial prompt or .txt file!\n" "Use `{}` to view details for this command" msgstr "" -#: assistant\commands\admin.py:976 -msgid "The system prompt has been overwritten!" +#: assistant\commands\admin.py:1320 +msgid "The initial prompt has been overwritten!" msgstr "" -#: assistant\commands\admin.py:979 -msgid "System prompt has been set!" +#: assistant\commands\admin.py:1323 +msgid "Initial prompt has been set!" msgstr "" -#: assistant\commands\admin.py:986 +#: assistant\commands\admin.py:1334 #, docstring -msgid "\n" -" Set the global default system prompt used by servers that inherit the default prompt\n\n" -" - Run without arguments to view the current global default prompt\n" -" - Use `none` to reset to the built-in default prompt\n" -" - Servers with a custom system prompt keep using their custom prompt\n" -" " -msgstr "" - -#: assistant\commands\admin.py:1010 -msgid "Current global default system prompt for servers using the default or an unset system prompt:" +msgid "Show the channel specific system prompt" msgstr "" -#: assistant\commands\admin.py:1011 -msgid "Servers with a custom system prompt are unchanged." +#: assistant\commands\admin.py:1337 +msgid "No channel prompt set for {}" msgstr "" -#: assistant\commands\admin.py:1014 -msgid "This is currently using the built-in default prompt." +#: assistant\commands\admin.py:1349 +#, docstring +msgid "Set a channel specific system prompt" msgstr "" -#: assistant\commands\admin.py:1016 -msgid "This is currently using a custom default prompt." +#: assistant\commands\admin.py:1366 +msgid "Channel prompt has been removed from {}!" msgstr "" -#: assistant\commands\admin.py:1022 -msgid "Please include a system prompt or .txt file, or use `none` to reset to the built-in default." +#: assistant\commands\admin.py:1369 +msgid "No channel prompt set for {}!" msgstr "" -#: assistant\commands\admin.py:1028 -msgid "The global default system prompt has been reset to the built-in default. Servers using the default or an unset system prompt will use it immediately." +#: assistant\commands\admin.py:1385 +msgid "Channel prompt has been overwritten for {}!" msgstr "" -#: assistant\commands\admin.py:1038 -msgid "The global default system prompt has been updated. Servers using the default or an unset system prompt will use it immediately." +#: assistant\commands\admin.py:1387 +msgid "Channel prompt has been set for {}!" msgstr "" -#: assistant\commands\admin.py:1051 +#: assistant\commands\admin.py:1397 #, docstring msgid "Set the main auto-response channel for the assistant" msgstr "" -#: assistant\commands\admin.py:1056 +#: assistant\commands\admin.py:1402 msgid "Assistant channel has been removed" msgstr "" -#: assistant\commands\admin.py:1059 +#: assistant\commands\admin.py:1405 msgid "Assistant channel has been overwritten" msgstr "" -#: assistant\commands\admin.py:1062 +#: assistant\commands\admin.py:1408 msgid "Channel id has been set" msgstr "" -#: assistant\commands\admin.py:1068 +#: assistant\commands\admin.py:1414 #, docstring msgid "Toggle this channel as an auto-response channel" msgstr "" -#: assistant\commands\admin.py:1071 +#: assistant\commands\admin.py:1417 msgid "This channel is already set as the assistant channel!" msgstr "" -#: assistant\commands\admin.py:1074 +#: assistant\commands\admin.py:1420 msgid "I will no longer auto-respond to messages in this channel!" msgstr "" -#: assistant\commands\admin.py:1077 +#: assistant\commands\admin.py:1423 msgid "I will now auto-respond to messages in this channel!" msgstr "" -#: assistant\commands\admin.py:1082 +#: assistant\commands\admin.py:1428 #, docstring msgid "Toggle allowing per-conversation system prompt overriding" msgstr "" -#: assistant\commands\admin.py:1086 +#: assistant\commands\admin.py:1432 msgid "System prompt overriding **Disabled**, users cannot set per-convo system prompts" msgstr "" -#: assistant\commands\admin.py:1089 +#: assistant\commands\admin.py:1435 msgid "System prompt overriding **Enabled**, users can now set per-convo system prompts" msgstr "" -#: assistant\commands\admin.py:1094 +#: assistant\commands\admin.py:1440 #, docstring msgid "Toggle the assistant on or off" msgstr "" -#: assistant\commands\admin.py:1098 +#: assistant\commands\admin.py:1444 msgid "The assistant is now **Disabled**" msgstr "" -#: assistant\commands\admin.py:1101 +#: assistant\commands\admin.py:1447 msgid "The assistant is now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1106 +#: assistant\commands\admin.py:1452 #, docstring msgid "Toggle the draw command on or off" msgstr "" -#: assistant\commands\admin.py:1110 +#: assistant\commands\admin.py:1456 msgid "The draw command is now **Disabled**" msgstr "" -#: assistant\commands\admin.py:1113 +#: assistant\commands\admin.py:1459 msgid "The draw command is now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1118 +#: assistant\commands\admin.py:1464 #, docstring msgid "Toggle the auto-answer feature on or off" msgstr "" -#: assistant\commands\admin.py:1122 +#: assistant\commands\admin.py:1468 msgid "Auto-answer has been **Disabled**" msgstr "" -#: assistant\commands\admin.py:1125 +#: assistant\commands\admin.py:1471 msgid "Auto-answer has been **Enabled**" msgstr "" -#: assistant\commands\admin.py:1130 +#: assistant\commands\admin.py:1476 #, docstring msgid "Set the auto-answer threshold for the bot" msgstr "" -#: assistant\commands\admin.py:1133 +#: assistant\commands\admin.py:1479 msgid "Auto-answer threshold has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1140 +#: assistant\commands\admin.py:1488 #, docstring msgid "Ignore a channel for auto-answer" msgstr "" -#: assistant\commands\admin.py:1151 +#: assistant\commands\admin.py:1499 msgid "Auto-answer will no longer ignore {}" msgstr "" -#: assistant\commands\admin.py:1154 assistant\commands\admin.py:1321 +#: assistant\commands\admin.py:1502 assistant\commands\admin.py:1670 msgid "Channel not found!" msgstr "" -#: assistant\commands\admin.py:1156 +#: assistant\commands\admin.py:1504 msgid "Auto-answer will now ignore {}" msgstr "" -#: assistant\commands\admin.py:1161 +#: assistant\commands\admin.py:1509 #, docstring msgid "Set the model used for auto-answer" msgstr "" -#: assistant\commands\admin.py:1168 +#: assistant\commands\admin.py:1517 msgid "Configured auto-answer model" msgstr "" -#: assistant\commands\admin.py:1171 assistant\commands\admin.py:1791 -#: assistant\commands\admin.py:1832 assistant\commands\admin.py:1834 -#: assistant\commands\admin.py:2903 +#: assistant\commands\admin.py:1520 assistant\commands\admin.py:2139 +#: assistant\commands\admin.py:2213 assistant\commands\admin.py:2215 +#: assistant\commands\admin.py:3978 msgid "Valid models are:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1173 assistant\commands\admin.py:3374 +#: assistant\commands\admin.py:1522 assistant\commands\admin.py:4489 msgid "Invalid model, valid models are: {}" msgstr "" -#: assistant\commands\admin.py:1175 +#: assistant\commands\admin.py:1524 msgid "Auto-answer model has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1186 +#: assistant\commands\admin.py:1533 #, docstring msgid "Toggle the trigger word feature on or off" msgstr "" -#: assistant\commands\admin.py:1190 +#: assistant\commands\admin.py:1537 msgid "Trigger word feature has been **Disabled**" msgstr "" -#: assistant\commands\admin.py:1193 +#: assistant\commands\admin.py:1540 msgid "Trigger word feature has been **Enabled**" msgstr "" -#: assistant\commands\admin.py:1198 +#: assistant\commands\admin.py:1545 #, docstring msgid "\n" " Add or remove a trigger phrase (supports regex)\n\n" @@ -992,23 +1210,23 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1212 +#: assistant\commands\admin.py:1559 msgid "That regex pattern is invalid!" msgstr "" -#: assistant\commands\admin.py:1217 +#: assistant\commands\admin.py:1564 msgid "⚠️ Warning: `{}` is a very broad pattern that may match most messages!" msgstr "" -#: assistant\commands\admin.py:1222 +#: assistant\commands\admin.py:1569 msgid "Trigger phrase `{}` has been **Removed**" msgstr "" -#: assistant\commands\admin.py:1225 +#: assistant\commands\admin.py:1572 msgid "Trigger phrase `{}` has been **Added**" msgstr "" -#: assistant\commands\admin.py:1230 +#: assistant\commands\admin.py:1577 #, docstring msgid "\n" " Set the prompt to use when a trigger phrase is matched\n\n" @@ -1050,100 +1268,66 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1287 +#: assistant\commands\admin.py:1634 msgid "The trigger prompt has been removed!" msgstr "" -#: assistant\commands\admin.py:1290 +#: assistant\commands\admin.py:1637 msgid "Please include a trigger prompt or .txt file!\n" "Use `{}` to view details for this command" msgstr "" -#: assistant\commands\admin.py:1296 +#: assistant\commands\admin.py:1643 msgid "The trigger prompt has been overwritten!" msgstr "" -#: assistant\commands\admin.py:1299 +#: assistant\commands\admin.py:1646 msgid "Trigger prompt has been set!" msgstr "" -#: assistant\commands\admin.py:1307 +#: assistant\commands\admin.py:1656 #, docstring msgid "Ignore a channel or category for trigger phrases" msgstr "" -#: assistant\commands\admin.py:1318 +#: assistant\commands\admin.py:1667 msgid "Trigger phrases will no longer ignore {}" msgstr "" -#: assistant\commands\admin.py:1323 +#: assistant\commands\admin.py:1672 msgid "Trigger phrases will now ignore {}" msgstr "" -#: assistant\commands\admin.py:1329 +#: assistant\commands\admin.py:1678 #, docstring msgid "View configured trigger phrases" msgstr "" -#: assistant\commands\admin.py:1332 +#: assistant\commands\admin.py:1681 msgid "No trigger phrases configured!" msgstr "" -#: assistant\commands\admin.py:1335 +#: assistant\commands\admin.py:1684 msgid "Trigger Phrases" msgstr "" -#: assistant\commands\admin.py:1336 +#: assistant\commands\admin.py:1685 msgid "The following phrases will trigger a response:\n" msgstr "" -#: assistant\commands\admin.py:1342 +#: assistant\commands\admin.py:1691 msgid "Patterns" msgstr "" -#: assistant\commands\admin.py:1345 +#: assistant\commands\admin.py:1694 msgid "Status" msgstr "" -#: assistant\commands\admin.py:1352 +#: assistant\commands\admin.py:1701 msgid "Ignored Channels" msgstr "" -#: assistant\commands\admin.py:1358 -#, docstring -msgid "Switch vision resolution between high and low for relevant GPT-4-Turbo models" -msgstr "" - -#: assistant\commands\admin.py:1362 -msgid "Vision resolution has been set to **Low**" -msgstr "" - -#: assistant\commands\admin.py:1365 -msgid "Vision resolution has been set to **High**" -msgstr "" - -#: assistant\commands\admin.py:1368 -msgid "Vision resolution has been set to **Auto**" -msgstr "" - -#: assistant\commands\admin.py:1373 -#, docstring -msgid "Switch reasoning effort between none, minimal, low, medium, high, and xhigh\n\n" -" Not all models support every level. Unsupported levels are automatically mapped to the closest supported value.\n" -" - **none**: No reasoning (gpt-5.4 only, skipped for other models)\n" -" - **minimal**: Minimal reasoning (gpt-5 only, mapped to low for o-series)\n" -" - **low**: Low reasoning effort\n" -" - **medium**: Medium reasoning effort\n" -" - **high**: High reasoning effort\n" -" - **xhigh**: Maximum reasoning (gpt-5.4 only, mapped to high for other models)\n" -" " -msgstr "" - -#: assistant\commands\admin.py:1390 -msgid "Reasoning effort has been set to **{}**" -msgstr "" - -#: assistant\commands\admin.py:1395 +#: assistant\commands\admin.py:1707 #, docstring msgid "\n" " Set the prefix used to detect model thinking blocks\n\n" @@ -1152,29 +1336,29 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1417 +#: assistant\commands\admin.py:1729 msgid "Think tag prefix is already set to the default value." msgstr "" -#: assistant\commands\admin.py:1420 +#: assistant\commands\admin.py:1732 msgid "Think tag prefix reset to default:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1426 +#: assistant\commands\admin.py:1738 msgid "Think tag prefix cannot be empty." msgstr "" -#: assistant\commands\admin.py:1429 +#: assistant\commands\admin.py:1741 msgid "Think tag prefix is already set to that value." msgstr "" -#: assistant\commands\admin.py:1432 +#: assistant\commands\admin.py:1744 msgid "Think tag prefix has been set to:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1437 +#: assistant\commands\admin.py:1749 #, docstring msgid "\n" " Set the suffix used to detect model thinking blocks\n\n" @@ -1183,68 +1367,68 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1459 +#: assistant\commands\admin.py:1771 msgid "Think tag suffix is already set to the default value." msgstr "" -#: assistant\commands\admin.py:1462 +#: assistant\commands\admin.py:1774 msgid "Think tag suffix reset to default:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1468 +#: assistant\commands\admin.py:1780 msgid "Think tag suffix cannot be empty." msgstr "" -#: assistant\commands\admin.py:1471 +#: assistant\commands\admin.py:1783 msgid "Think tag suffix is already set to that value." msgstr "" -#: assistant\commands\admin.py:1474 +#: assistant\commands\admin.py:1786 msgid "Think tag suffix has been set to:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1479 +#: assistant\commands\admin.py:1791 #, docstring msgid "Toggle whether questions need to end with **__?__**" msgstr "" -#: assistant\commands\admin.py:1483 +#: assistant\commands\admin.py:1795 msgid "Questions will be answered regardless of if they end with **?**" msgstr "" -#: assistant\commands\admin.py:1486 +#: assistant\commands\admin.py:1798 msgid "Questions must end in **?** to be answered" msgstr "" -#: assistant\commands\admin.py:1491 +#: assistant\commands\admin.py:1803 #, docstring msgid "Toggle whether the bot responds to mentions in any channel" msgstr "" -#: assistant\commands\admin.py:1495 +#: assistant\commands\admin.py:1807 msgid "The bot will no longer respond to mentions" msgstr "" -#: assistant\commands\admin.py:1498 +#: assistant\commands\admin.py:1810 msgid "The bot will now respond to mentions" msgstr "" -#: assistant\commands\admin.py:1503 +#: assistant\commands\admin.py:1815 #, docstring msgid "Toggle whether to ping the user on replies" msgstr "" -#: assistant\commands\admin.py:1507 +#: assistant\commands\admin.py:1819 msgid "Mentions are now **Disabled**" msgstr "" -#: assistant\commands\admin.py:1510 +#: assistant\commands\admin.py:1822 msgid "Mentions are now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1515 +#: assistant\commands\admin.py:1827 #, docstring msgid "\n" " Toggle collaborative conversations\n\n" @@ -1252,39 +1436,39 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1523 +#: assistant\commands\admin.py:1835 msgid "Collaborative conversations are now **Disabled**" msgstr "" -#: assistant\commands\admin.py:1526 +#: assistant\commands\admin.py:1838 msgid "Collaborative conversations are now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1556 +#: assistant\commands\admin.py:1843 #, docstring msgid "\n" " Set the max messages for a conversation\n\n" " Conversation retention is cached and gets reset when the bot restarts or the cog reloads.\n\n" " Regardless of this number, the initial prompt and internal system message are always included,\n" " this only applies to any conversation between the user and bot after that.\n\n" -" Set to 0 to disable conversation retention\n\n" +" Set to 0 for unlimited conversation retention\n\n" " **Note:** *actual message count may exceed the max retention during an API call*\n" " " msgstr "" -#: assistant\commands\admin.py:1569 assistant\commands\admin.py:2981 +#: assistant\commands\admin.py:1856 assistant\commands\admin.py:4060 msgid "Max retention needs to be at least 0 or higher" msgstr "" -#: assistant\commands\admin.py:1573 -msgid "Conversation retention has been disabled" +#: assistant\commands\admin.py:1860 +msgid "Message retention is now **unlimited**" msgstr "" -#: assistant\commands\admin.py:1575 +#: assistant\commands\admin.py:1862 msgid "Conversations can now retain up to **{}** messages" msgstr "" -#: assistant\commands\admin.py:1580 +#: assistant\commands\admin.py:1867 #, docstring msgid "\n" " Set the conversation expiration time\n\n" @@ -1294,19 +1478,57 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1589 assistant\commands\admin.py:3004 +#: assistant\commands\admin.py:1876 assistant\commands\admin.py:4083 msgid "Max retention time needs to be at least 0 or higher" msgstr "" -#: assistant\commands\admin.py:1593 +#: assistant\commands\admin.py:1880 msgid "Conversations will be stored until the bot restarts or the cog is reloaded" msgstr "" -#: assistant\commands\admin.py:1595 +#: assistant\commands\admin.py:1882 msgid "Conversations will be considered active for **{}** seconds" msgstr "" -#: assistant\commands\admin.py:1600 +#: assistant\commands\admin.py:1887 +#, docstring +msgid "\n" +" Set maximum tokens a convo can consume\n\n" +" Set to 0 for dynamic token usage\n\n" +" **Tips**\n" +" - Max tokens are a soft cap, sometimes messages can be a little over\n" +" - If you set max tokens too high the cog will auto-adjust to 100 less than the models natural cap\n" +" - Ideally set max to 500 less than that models maximum, to allow adequate responses\n\n" +" Using more than the model can handle will raise exceptions.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:1902 +msgid "The maximum amount of tokens sent in a payload will be {}.\n" +"*Note that models with token limits lower than this will still be trimmed*" +msgstr "" + +#: assistant\commands\admin.py:1907 +msgid "The maximum amount of tokens sent in a payload will be dynamic" +msgstr "" + +#: assistant\commands\admin.py:1913 +#, docstring +msgid "\n" +" Set the max response tokens the model can respond with\n\n" +" Set to 0 for response tokens to be dynamic\n" +" " +msgstr "" + +#: assistant\commands\admin.py:1921 +msgid "The maximum amount of tokens in the models responses will be {}." +msgstr "" + +#: assistant\commands\admin.py:1923 +msgid "Response tokens will now be dynamic" +msgstr "" + +#: assistant\commands\admin.py:1929 #, docstring msgid "\n" " Set the temperature for the model (0.0 - 2.0)\n" @@ -1315,15 +1537,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1607 +#: assistant\commands\admin.py:1936 msgid "Temperature must be between **0.0** and **2.0**" msgstr "" -#: assistant\commands\admin.py:1612 +#: assistant\commands\admin.py:1941 msgid "Temperature has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1616 +#: assistant\commands\admin.py:1945 #, docstring msgid "\n" " Set the frequency penalty for the model (-2.0 to 2.0)\n" @@ -1332,15 +1554,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1623 +#: assistant\commands\admin.py:1952 msgid "Frequency penalty must be between **-2.0** and **2.0**" msgstr "" -#: assistant\commands\admin.py:1628 +#: assistant\commands\admin.py:1957 msgid "Frequency penalty has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1632 +#: assistant\commands\admin.py:1961 #, docstring msgid "\n" " Set the presence penalty for the model (-2.0 to 2.0)\n" @@ -1349,15 +1571,49 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1639 +#: assistant\commands\admin.py:1968 msgid "Presence penalty must be between **-2.0** and **2.0**" msgstr "" -#: assistant\commands\admin.py:1644 +#: assistant\commands\admin.py:1973 msgid "Presence penalty has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1648 +#: assistant\commands\admin.py:1977 +#, docstring +msgid "Switch vision resolution between high and low for relevant GPT-4-Turbo models" +msgstr "" + +#: assistant\commands\admin.py:1981 +msgid "Vision resolution has been set to **Low**" +msgstr "" + +#: assistant\commands\admin.py:1984 +msgid "Vision resolution has been set to **High**" +msgstr "" + +#: assistant\commands\admin.py:1987 +msgid "Vision resolution has been set to **Auto**" +msgstr "" + +#: assistant\commands\admin.py:1992 +#, docstring +msgid "Switch reasoning effort between none, minimal, low, medium, high, and xhigh\n\n" +" Not all models support every level. Unsupported levels are automatically mapped to the closest supported value.\n" +" - **none**: No reasoning (gpt-5.4 only, skipped for other models)\n" +" - **minimal**: Minimal reasoning (gpt-5 only, mapped to low for o-series)\n" +" - **low**: Low reasoning effort\n" +" - **medium**: Medium reasoning effort\n" +" - **high**: High reasoning effort\n" +" - **xhigh**: Maximum reasoning (gpt-5.4 only, mapped to high for other models)\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2009 +msgid "Reasoning effort has been set to **{}**" +msgstr "" + +#: assistant\commands\admin.py:2014 #, docstring msgid "\n" " Make the model more deterministic by setting a seed for the model.\n" @@ -1366,15 +1622,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1655 +#: assistant\commands\admin.py:2021 msgid "Seed must be a positive integer" msgstr "" -#: assistant\commands\admin.py:1659 +#: assistant\commands\admin.py:2025 msgid "The seed has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1663 +#: assistant\commands\admin.py:2032 #, docstring msgid "\n" " Refresh embedding weights\n\n" @@ -1383,47 +1639,43 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1676 +#: assistant\commands\admin.py:2045 msgid "{} embeddings have been updated" msgstr "" -#: assistant\commands\admin.py:1678 +#: assistant\commands\admin.py:2047 msgid "No embeddings needed to be refreshed" msgstr "" -#: assistant\commands\admin.py:1682 +#: assistant\commands\admin.py:2051 #, docstring msgid "Toggle whether GPT can call functions" msgstr "" -#: assistant\commands\admin.py:1686 +#: assistant\commands\admin.py:2055 msgid "Assistant will not call functions" msgstr "" -#: assistant\commands\admin.py:1689 +#: assistant\commands\admin.py:2058 msgid "Assistant will now call functions as needed" msgstr "" -#: assistant\commands\admin.py:1694 +#: assistant\commands\admin.py:2063 #, docstring msgid "Set the maximum function calls allowed in a row\n\n" -" This sets how many times the model can call functions in a row\n\n" -" Only the following models can call functions at the moment\n" -" - gpt-4o-mini\n" -" - gpt-4o\n" -" - ect..\n" +" This sets how many times the model can call functions in a row\n" " " msgstr "" -#: assistant\commands\admin.py:1706 +#: assistant\commands\admin.py:2070 msgid "Function calls will not be used since recursion is 0" msgstr "" -#: assistant\commands\admin.py:1708 +#: assistant\commands\admin.py:2072 msgid "The model can now call various functions up to {} times before returning a response" msgstr "" -#: assistant\commands\admin.py:1714 +#: assistant\commands\admin.py:2078 #, docstring msgid "\n" " set min character length for questions\n\n" @@ -1431,85 +1683,64 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1720 +#: assistant\commands\admin.py:2084 msgid "Minimum length needs to be at least 0 or higher" msgstr "" -#: assistant\commands\admin.py:1724 +#: assistant\commands\admin.py:2088 msgid "{} will respond regardless of message length" msgstr "" -#: assistant\commands\admin.py:1727 +#: assistant\commands\admin.py:2091 msgid "{} will respond to messages with more than **{}** characters" msgstr "" -#: assistant\commands\admin.py:1735 +#: assistant\commands\admin.py:2099 #, docstring msgid "\n" -" Set maximum tokens a convo can consume\n\n" -" Set to 0 for dynamic token usage\n\n" -" **Tips**\n" -" - Max tokens are a soft cap, sometimes messages can be a little over\n" -" - If you set max tokens too high the cog will auto-adjust to 100 less than the models natural cap\n" -" - Ideally set max to 500 less than that models maximum, to allow adequate responses\n\n" -" Using more than the model can handle will raise exceptions.\n" +" Set the chat model to use\n\n" +" Run without arguments to open an interactive picker that lists every\n" +" model your endpoint advertises, grouped by provider. The picker also\n" +" accepts manual entry - useful for router aliases like\n" +" `openrouter/auto` or `openrouter/free`.\n" " " msgstr "" -#: assistant\commands\admin.py:1750 -msgid "The maximum amount of tokens sent in a payload will be {}.\n" -"*Note that models with token limits lower than this will still be trimmed*" -msgstr "" - -#: assistant\commands\admin.py:1755 -msgid "The maximum amount of tokens sent in a payload will be dynamic" +#: assistant\commands\admin.py:2121 +msgid "Could not probe `{}` to discover available models. Try setting a model id manually, e.g. `{}assistant set model openrouter/auto`." msgstr "" -#: assistant\commands\admin.py:1761 -#, docstring -msgid "\n" -" Set the max response tokens the model can respond with\n\n" -" Set to 0 for response tokens to be dynamic\n" -" " +#: assistant\commands\admin.py:2146 assistant\commands\admin.py:3985 +msgid "Error: {}" msgstr "" -#: assistant\commands\admin.py:1769 -msgid "The maximum amount of tokens in the models responses will be {}." +#: assistant\commands\admin.py:2150 +msgid "The **{}** model will now be used" msgstr "" -#: assistant\commands\admin.py:1771 -msgid "Response tokens will now be dynamic" +#: assistant\commands\admin.py:2157 +msgid "**Note**: Starting with `o1-2024-12-17`, reasoning models in the API will avoid generating responses with markdown formatting. To signal to the model when you do want markdown formatting in the response, include the string `Formatting re-enabled` on the first line of your system message." msgstr "" -#: assistant\commands\admin.py:1777 +#: assistant\commands\admin.py:2166 #, docstring msgid "\n" -" Set the OpenAI model to use\n" +" Set the embedding model to use\n\n" +" Run without arguments to open an interactive picker that lists\n" +" every embedding model your endpoint advertises, grouped by provider.\n" +" Embeddings use the same endpoint as chat.\n" " " msgstr "" -#: assistant\commands\admin.py:1798 assistant\commands\admin.py:2910 -msgid "Error: {}" -msgstr "" - -#: assistant\commands\admin.py:1802 -msgid "The **{}** model will now be used" -msgstr "" - -#: assistant\commands\admin.py:1809 -msgid "**Note**: Starting with `o1-2024-12-17`, reasoning models in the API will avoid generating responses with markdown formatting. To signal to the model when you do want markdown formatting in the response, include the string `Formatting re-enabled` on the first line of your system message." -msgstr "" - -#: assistant\commands\admin.py:1818 -#, docstring -msgid "Set the OpenAI Embedding model to use" +#: assistant\commands\admin.py:2192 +msgid "Could not probe `{}` to discover available embedding models. Try setting an id manually, e.g. `{}assistant embed model text-embedding-3-small`." msgstr "" -#: assistant\commands\admin.py:1836 +#: assistant\commands\admin.py:2217 msgid "The **{}** model will now be used for embeddings" msgstr "" -#: assistant\commands\admin.py:1845 +#: assistant\commands\admin.py:2225 #, docstring msgid "\n" " Wipe saved embeddings for the assistant\n\n" @@ -1517,15 +1748,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1851 assistant\commands\admin.py:3257 +#: assistant\commands\admin.py:2231 assistant\commands\admin.py:4373 msgid "Not wiping embedding data" msgstr "" -#: assistant\commands\admin.py:1855 +#: assistant\commands\admin.py:2235 msgid "All embedding data has been wiped!" msgstr "" -#: assistant\commands\admin.py:1860 +#: assistant\commands\admin.py:2240 #, docstring msgid "\n" " Wipe saved conversations for the assistant in this server\n\n" @@ -1533,15 +1764,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1866 assistant\commands\admin.py:3218 +#: assistant\commands\admin.py:2246 assistant\commands\admin.py:4334 msgid "Not wiping conversations" msgstr "" -#: assistant\commands\admin.py:1870 +#: assistant\commands\admin.py:2250 msgid "Conversations have been wiped in this server!" msgstr "" -#: assistant\commands\admin.py:1875 +#: assistant\commands\admin.py:2255 #, docstring msgid "\n" " Set the embedding inclusion amout\n\n" @@ -1549,19 +1780,19 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1881 +#: assistant\commands\admin.py:2261 msgid "Top N must be between 0 and 10" msgstr "" -#: assistant\commands\admin.py:1885 +#: assistant\commands\admin.py:2265 msgid "Embeddings will not be pulled during conversations" msgstr "" -#: assistant\commands\admin.py:1887 +#: assistant\commands\admin.py:2267 msgid "Up to **{}** embeddings will be pulled for each interaction" msgstr "" -#: assistant\commands\admin.py:1892 +#: assistant\commands\admin.py:2272 #, docstring msgid "\n" " Set the minimum relatedness an embedding must be to include with the prompt\n\n" @@ -1571,412 +1802,1030 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1902 +#: assistant\commands\admin.py:2282 msgid "Minimum relatedness must be between 0 and 1" msgstr "" -#: assistant\commands\admin.py:1905 -msgid "Minimum relatedness has been set to **{}**" +#: assistant\commands\admin.py:2285 +msgid "Minimum relatedness has been set to **{}**" +msgstr "" + +#: assistant\commands\admin.py:2290 +#, docstring +msgid "Remove certain words/phrases in the bot's responses" +msgstr "" + +#: assistant\commands\admin.py:2294 +msgid "That regex is invalid" +msgstr "" + +#: assistant\commands\admin.py:2298 +msgid "`{}` has been **Removed** from the blacklist" +msgstr "" + +#: assistant\commands\admin.py:2301 +msgid "`{}` has been **Added** to the blacklist" +msgstr "" + +#: assistant\commands\admin.py:2306 +#, docstring +msgid "\n" +" Toggle whether failed regex blocks the assistant's reply\n\n" +" Some regexes can cause [catastrophically backtracking](https://www.rexegg.com/regex-explosive-quantifiers.html)\n" +" The bot can safely handle if this happens and will either continue on, or block the response.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2315 +msgid "If a regex blacklist fails, the bots reply will be blocked" +msgstr "" + +#: assistant\commands\admin.py:2318 +msgid "If a reges blacklist fails, the bot will still reply" +msgstr "" + +#: assistant\commands\admin.py:2323 +#, docstring +msgid "\n" +" Toggle question mode\n\n" +" If question mode is on, embeddings will only be sourced during the first message of a conversation and messages that end in **?**\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2331 +msgid "Question mode is now **Disabled**" +msgstr "" + +#: assistant\commands\admin.py:2334 +msgid "Question mode is now **Enabled**" +msgstr "" + +#: assistant\commands\admin.py:2339 +#, docstring +msgid "Import embeddings to use with the assistant\n\n" +" Args:\n" +" overwrite (bool): overwrite embeddings with existing entry names\n\n" +" This will read excel files too\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2352 +msgid "You must attach **.csv** files to this command or reference a message that has them!" +msgstr "" + +#: assistant\commands\admin.py:2365 assistant\commands\admin.py:2442 +#: assistant\commands\admin.py:2505 +msgid "Error reading **{}**: {}" +msgstr "" + +#: assistant\commands\admin.py:2370 +msgid "**{}** contains invalid formatting, columns must be " +msgstr "" + +#: assistant\commands\admin.py:2378 +msgid "There are no valid files to import!" +msgstr "" + +#: assistant\commands\admin.py:2380 assistant\commands\admin.py:2520 +msgid "Processing the following files in the background\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:2394 assistant\commands\admin.py:2531 +msgid "processing" +msgstr "" + +#: assistant\commands\admin.py:2396 assistant\commands\admin.py:2533 +msgid "overwriting" +msgstr "" + +#: assistant\commands\admin.py:2404 assistant\commands\admin.py:2541 +msgid "{}\n" +"`Currently {}: `**{}** ({}/{})" +msgstr "" + +#: assistant\commands\admin.py:2410 assistant\commands\admin.py:2551 +msgid "Failed to process embedding: `{}`" +msgstr "" + +#: assistant\commands\admin.py:2415 assistant\commands\admin.py:2564 +#: assistant\commands\admin.py:2568 +msgid "{}\n" +"**COMPLETE**" +msgstr "" + +#: assistant\commands\admin.py:2416 assistant\commands\admin.py:2565 +msgid "Successfully imported {} embeddings!" +msgstr "" + +#: assistant\commands\admin.py:2421 +#, docstring +msgid "Import embeddings to use with the assistant\n\n" +" Args:\n" +" overwrite (bool): overwrite embeddings with existing entry names\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2430 assistant\commands\admin.py:4318 +msgid "You must attach **.json** files to this command or reference a message that has them!" +msgstr "" + +#: assistant\commands\admin.py:2469 +msgid "Failed to import **{}** because it contains invalid formatting!" +msgstr "" + +#: assistant\commands\admin.py:2474 +msgid "Imported the following files: `{}`\n" +"{} embeddings imported" +msgstr "" + +#: assistant\commands\admin.py:2482 +#, docstring +msgid "Import embeddings from an .xlsx file\n\n" +" Args:\n" +" overwrite (bool): overwrite embeddings with existing entry names\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2491 +msgid "You must attach **.xlsx** files to this command or reference a message that has them!" +msgstr "" + +#: assistant\commands\admin.py:2512 +msgid "{} is invalid! Must contain the following columns: {}" +msgstr "" + +#: assistant\commands\admin.py:2569 +msgid "No embeddings needed to be updated!" +msgstr "" + +#: assistant\commands\admin.py:2574 +#, docstring +msgid "\n" +" Export embeddings to an .xlsx file\n\n" +" **Note:** csv exports do not include the embedding values\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2581 assistant\commands\admin.py:2627 +#: assistant\commands\admin.py:2671 +msgid "There are no embeddings to export!" +msgstr "" + +#: assistant\commands\admin.py:2621 +#, docstring +msgid "Export embeddings to a .csv file\n\n" +" **Note:** csv exports do not include the embedding values\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2640 assistant\commands\admin.py:2660 +#: assistant\commands\admin.py:2679 assistant\commands\admin.py:2699 +#: assistant\commands\admin.py:4304 +msgid "Here is your embeddings export!" +msgstr "" + +#: assistant\commands\admin.py:2643 assistant\commands\admin.py:2682 +#: assistant\commands\admin.py:4286 +msgid "File too large, attempting to compress..." +msgstr "" + +#: assistant\commands\admin.py:2663 assistant\commands\admin.py:2702 +#: assistant\commands\admin.py:4307 +msgid "File is still too large even with compression!" +msgstr "" + +#: assistant\commands\admin.py:2668 +#, docstring +msgid "Export embeddings to a json file" +msgstr "" + +#: assistant\commands\admin.py:2710 +#, docstring +msgid "\n" +" Manage embeddings for training\n\n" +" Embeddings are used to optimize training of the assistant and minimize token usage.\n\n" +" By using this the bot can store vast amounts of contextual information without going over the token limit.\n\n" +" **Note**\n" +" You can enter a search query with this command to bring up the menu and go directly to that embedding selection.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2760 +#, docstring +msgid "\n" +" Add custom function calls for Assistant to use\n\n" +" **READ**\n" +" - [Function Call Docs](https://platform.openai.com/docs/guides/gpt/function-calling)\n" +" - [OpenAI Cookbook](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_call_functions_with_chat_models.ipynb)\n" +" - [JSON Schema Reference](https://json-schema.org/understanding-json-schema/)\n\n" +" The following objects are passed by default as keyword arguments.\n" +" - **user**: the user currently chatting with the bot (discord.Member)\n" +" - **channel**: channel the user is chatting in (TextChannel|Thread|ForumChannel)\n" +" - **guild**: current guild (discord.Guild)\n" +" - **bot**: the bot object (Red)\n" +" - **conf**: the config model for Assistant (GuildSettings)\n" +" - All functions **MUST** include `*args, **kwargs` in the params and return a string\n" +" ```python\n" +" # Can be either sync or async\n" +" async def func(*args, **kwargs) -> str:\n" +" ```\n" +" Only bot owner can manage this, guild owners can see descriptions but not code\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2800 +#, docstring +msgid "List custom prompt context variables registered by other cogs." +msgstr "" + +#: assistant\commands\admin.py:2802 +msgid "3rd party docs: {}" +msgstr "" + +#: assistant\commands\admin.py:2804 +msgid "No custom context variables have been registered yet!\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:2818 +msgid "Custom Variables" +msgstr "" + +#: assistant\commands\admin.py:2823 +msgid "Page {}/{} | {} variables" +msgstr "" + +#: assistant\commands\admin.py:2836 +#, docstring +msgid "\n" +" List all available functions and their enabled/disabled status\n\n" +" This provides a quick overview of all custom functions and 3rd party\n" +" registered functions without having to navigate through the full menu.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2849 assistant\commands\admin.py:3142 +#: assistant\commands\admin.py:3198 assistant\commands\admin.py:3295 +msgid "No functions have been registered yet!" +msgstr "" + +#: assistant\commands\admin.py:2876 +msgid "Function List" +msgstr "" + +#: assistant\commands\admin.py:2881 +msgid "Page {}/{} | {} enabled, {} disabled" +msgstr "" + +#: assistant\commands\admin.py:2897 +#, docstring +msgid "Open the mobile-friendly AI tools manager." +msgstr "" + +#: assistant\commands\admin.py:2905 +#, docstring +msgid "Open the floating context block manager.\n\n" +" Toggled variables are appended to a trailing payload-only user\n" +" message after conversation history. Because that message rides\n" +" after the cached prefix, putting dynamic (per-request) values\n" +" there keeps the prompt prefix stable across requests so\n" +" provider-side prompt caching can hit.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2920 +#, docstring +msgid "Show prompt-cache stats from the most recent API call." +msgstr "" + +#: assistant\commands\admin.py:2924 +msgid "No cache stats yet - make a request first." +msgstr "" + +#: assistant\commands\admin.py:2928 +msgid "Unknown" +msgstr "" + +#: assistant\commands\admin.py:2932 +msgid "Last API call: **{cached}**/**{total}** prompt tokens cached ({pct:.0f}%) · **{write}** cache-write tokens · model `{model}`" +msgstr "" + +#: assistant\commands\admin.py:2948 +msgid "\n" +"💡 This model requires at least **{min_tokens}** prompt tokens before the provider will cache. Your prompt was only **{total}** tokens - below the threshold, so no cache write or read occurred. A longer system prompt, more conversation history, or enabling variables in the `[p]floatingcontext` block will push it over." +msgstr "" + +#: assistant\commands\admin.py:2963 +msgid "\n" +"ℹ️ This provider uses automatic prompt caching. A **0** cache-write count does not necessarily mean caching is disabled, because some automatic-cache providers do not charge for or clearly expose cache writes. The more useful signal is whether similar follow-up turns start showing non-zero cached tokens. Also note that the relevant threshold is the repeated stable prefix, not the full prompt length, so a large request can still miss if most of its tokens are in the changing tail of the payload." +msgstr "" + +#: assistant\commands\admin.py:2978 +msgid "\n" +"ℹ️ `gpt-oss` is a reasoning model running over Chat Completions. Cache reuse can be weaker than on non-reasoning chat models because not all reasoning state is preserved between turns." +msgstr "" + +#: assistant\commands\admin.py:2988 +msgid "\n" +"⚠️ **Cache writes occurred but no reads.** This means the provider cached your prompt prefix, but the next request didn't match it - the prefix changed between calls. Common causes include dynamic variables like `{{time}}`, `{{date}}`, or `{{username}}` being substituted into your prompt prefix, per-turn context being injected before the cacheable tail, or tool definitions changing between calls. Use `[p]floatingcontext` to move dynamic context out of the prompt prefix." +msgstr "" + +#: assistant\commands\admin.py:3004 +#, docstring +msgid "Enable OpenRouter response caching (Mode A)." +msgstr "" + +#: assistant\commands\admin.py:3008 +msgid "OpenRouter response caching **enabled** (TTL: {}s)." +msgstr "" + +#: assistant\commands\admin.py:3012 +#, docstring +msgid "Disable OpenRouter response caching (Mode A)." +msgstr "" + +#: assistant\commands\admin.py:3016 +msgid "OpenRouter response caching **disabled**." +msgstr "" + +#: assistant\commands\admin.py:3020 +#, docstring +msgid "Set the OpenRouter response cache TTL in seconds (1–86400)." +msgstr "" + +#: assistant\commands\admin.py:3022 +msgid "TTL must be between 1 and 86400 seconds (24 hours)." +msgstr "" + +#: assistant\commands\admin.py:3026 +msgid "OpenRouter response cache TTL set to **{}** seconds." +msgstr "" + +#: assistant\commands\admin.py:3030 +#, docstring +msgid "Set the OpenRouter provider prompt cache TTL.\n\n" +" Choices: `off`, `5m`, `1h`. Applies to Anthropic / Gemini / Qwen\n" +" models routed via OpenRouter.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3037 +msgid "Mode must be one of: `off`, `5m`, `1h`." +msgstr "" + +#: assistant\commands\admin.py:3041 +msgid "OpenRouter provider prompt cache set to **{}**." +msgstr "" + +#: assistant\commands\admin.py:3050 +#, docstring +msgid "Configure OpenRouter provider routing and model slug preferences." +msgstr "" + +#: assistant\commands\admin.py:3055 +#, docstring +msgid "Show current OpenRouter provider routing settings." +msgstr "" + +#: assistant\commands\admin.py:3059 +msgid "not set" +msgstr "" + +#: assistant\commands\admin.py:3062 +msgid "not set (OR default)" +msgstr "" + +#: assistant\commands\admin.py:3064 +msgid "OpenRouter Provider Settings" +msgstr "" + +#: assistant\commands\admin.py:3065 +msgid "Model suffix" +msgstr "" + +#: assistant\commands\admin.py:3066 +msgid "Allow fallbacks" +msgstr "" + +#: assistant\commands\admin.py:3067 +msgid "Provider order" +msgstr "" + +#: assistant\commands\admin.py:3068 +msgid "Tip: `providers Fireworks` + `fallbacks false` hard-pins to that provider." +msgstr "" + +#: assistant\commands\admin.py:3073 +#, docstring +msgid "Set a guild-wide model slug suffix applied to every OpenRouter request.\n\n" +" Valid values: `:nitro` (throughput priority), `:floor` (price priority),\n" +" `:extended`, `clear` (remove suffix).\n" +" The suffix is appended after model resolution and replaces any per-model suffix.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3083 +msgid "OpenRouter model suffix cleared." +msgstr "" + +#: assistant\commands\admin.py:3086 +msgid "Invalid suffix `{}`. Valid: {}." +msgstr "" + +#: assistant\commands\admin.py:3090 +msgid "OpenRouter model suffix set to `{}`." +msgstr "" + +#: assistant\commands\admin.py:3094 +#, docstring +msgid "Set the ordered list of providers OpenRouter should use (space-separated).\n\n" +" Pass `clear` to reset. Combined with `fallbacks false` this hard-pins routing\n" +" to only the listed providers in order.\n" +" Example: `providers Fireworks Together`\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3104 +msgid "OpenRouter provider list cleared." +msgstr "" + +#: assistant\commands\admin.py:3108 +msgid "OpenRouter will try providers in order: {}." +msgstr "" + +#: assistant\commands\admin.py:3113 +#, docstring +msgid "Set whether OpenRouter may fall back to other providers.\n\n" +" Values: `true`, `false`, `clear` (restore OR default which is true).\n" +" Set to `false` with `providers` to hard-pin routing to those providers only.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3123 +msgid "OpenRouter fallbacks reset to OR default (enabled)." +msgstr "" + +#: assistant\commands\admin.py:3125 +msgid "Value must be `true`, `false`, or `clear`." +msgstr "" + +#: assistant\commands\admin.py:3128 +msgid "OpenRouter fallbacks set to `{}`." +msgstr "" + +#: assistant\commands\admin.py:3135 +#, docstring +msgid "List tool categories and their current enabled state." +msgstr "" + +#: assistant\commands\admin.py:3161 +msgid "Tool Categories" +msgstr "" + +#: assistant\commands\admin.py:3166 +msgid "Page {}/{} | {} enabled of {} total" +msgstr "" + +#: assistant\commands\admin.py:3191 +#, docstring +msgid "Enable or disable all tools in one or more categories." +msgstr "" + +#: assistant\commands\admin.py:3208 +msgid "No valid category names provided!" +msgstr "" + +#: assistant\commands\admin.py:3213 +msgid "The following categories do not exist: {}" +msgstr "" + +#: assistant\commands\admin.py:3235 +msgid "{} **Enabled Categories** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3243 +msgid "{} **Disabled Categories** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3266 +#, docstring +msgid "\n" +" Enable or disable multiple functions at once\n\n" +" **Arguments**\n" +" - `enable`: True to enable, False to disable. Omit to toggle current state.\n" +" - `functions`: Comma-separated list of function names, or \"all\" to affect all functions\n\n" +" **Examples**\n" +" - `[p]togglefunctions get_time, get_weather` - Toggle these functions\n" +" - `[p]togglefunctions True all` - Enable all functions\n" +" - `[p]togglefunctions False get_time, get_weather` - Disable specific functions\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3305 +msgid "No valid function names provided!" +msgstr "" + +#: assistant\commands\admin.py:3311 +msgid "The following functions do not exist: {}" +msgstr "" + +#: assistant\commands\admin.py:3337 +msgid "✅ **Enabled** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3344 +msgid "❌ **Disabled** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3440 +#, docstring +msgid "\n" +" Add/Remove items from the blacklist\n\n" +" `channel_role_member` can be a member, role, channel, or category channel\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3448 +msgid "{} has been removed from the blacklist" +msgstr "" + +#: assistant\commands\admin.py:3451 +msgid "{} has been added to the blacklist" +msgstr "" + +#: assistant\commands\admin.py:3464 +#, docstring +msgid "\n" +" Add/Remove items from the planner list, or view current planners.\n\n" +" Users/roles in the planner list can use the `think_and_plan` tool for complex task breakdown.\n\n" +" If the planner list is empty, everyone can use the planning tool.\n" +" If the planner list has entries, only those users/roles can use it.\n\n" +" `role_or_member` can be a member or role. Omit to view the current list.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3479 +msgid "The planner list is empty. Everyone can use the `think_and_plan` tool." +msgstr "" + +#: assistant\commands\admin.py:3484 +msgid "**Planners:** {}" +msgstr "" + +#: assistant\commands\admin.py:3486 +msgid "The planner list has invalid entries. Consider clearing it." +msgstr "" + +#: assistant\commands\admin.py:3491 +msgid "{} has been removed from the planner list" +msgstr "" + +#: assistant\commands\admin.py:3494 +msgid "{} has been added to the planner list" +msgstr "" + +#: assistant\commands\admin.py:3500 +msgid "**{}:** empty" +msgstr "" + +#: assistant\commands\admin.py:3506 +msgid "**{}:** {}" +msgstr "" + +#: assistant\commands\admin.py:3510 +#, docstring +msgid "Show the current smartmod configuration." +msgstr "" + +#: assistant\commands\admin.py:3517 +msgid "`Enabled: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3518 +msgid "`Report channel:`{}\n" +msgstr "" + +#: assistant\commands\admin.py:3519 +msgid "`OpenAI key: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3519 +msgid "OK" msgstr "" -#: assistant\commands\admin.py:1910 -#, docstring -msgid "Remove certain words/phrases in the bot's responses" +#: assistant\commands\admin.py:3519 +msgid "Missing" msgstr "" -#: assistant\commands\admin.py:1914 -msgid "That regex is invalid" +#: assistant\commands\admin.py:3520 +msgid "`Review model: `{}\n" msgstr "" -#: assistant\commands\admin.py:1918 -msgid "`{}` has been **Removed** from the blacklist" +#: assistant\commands\admin.py:3520 +msgid "(default)" msgstr "" -#: assistant\commands\admin.py:1921 -msgid "`{}` has been **Added** to the blacklist" +#: assistant\commands\admin.py:3521 +msgid "`Context: `{} before / {} after\n" msgstr "" -#: assistant\commands\admin.py:1926 -#, docstring -msgid "\n" -" Toggle whether failed regex blocks the assistant's reply\n\n" -" Some regexes can cause [catastrophically backtracking](https://www.rexegg.com/regex-explosive-quantifiers.html)\n" -" The bot can safely handle if this happens and will either continue on, or block the response.\n" -" " +#: assistant\commands\admin.py:3522 +msgid "`Panel timeout: `{}s\n" msgstr "" -#: assistant\commands\admin.py:1935 -msgid "If a regex blacklist fails, the bots reply will be blocked" +#: assistant\commands\admin.py:3523 +msgid "`Auto-action: `{}\n" msgstr "" -#: assistant\commands\admin.py:1938 -msgid "If a reges blacklist fails, the bot will still reply" +#: assistant\commands\admin.py:3524 +msgid "`Exempt staff: `{}\n" msgstr "" -#: assistant\commands\admin.py:1943 -#, docstring -msgid "\n" -" Toggle question mode\n\n" -" If question mode is on, embeddings will only be sourced during the first message of a conversation and messages that end in **?**\n" -" " +#: assistant\commands\admin.py:3525 +msgid "`Staff ping: `{}\n" msgstr "" -#: assistant\commands\admin.py:1951 -msgid "Question mode is now **Disabled**" +#: assistant\commands\admin.py:3526 +msgid "`Blacklist: `{} items\n" msgstr "" -#: assistant\commands\admin.py:1954 -msgid "Question mode is now **Enabled**" +#: assistant\commands\admin.py:3527 +msgid "`Whitelist: `{} items\n" msgstr "" -#: assistant\commands\admin.py:1959 -#, docstring -msgid "Import embeddings to use with the assistant\n\n" -" Args:\n" -" overwrite (bool): overwrite embeddings with existing entry names\n\n" -" This will read excel files too\n" -" " +#: assistant\commands\admin.py:3528 +msgid "`Triggers: `{} phrases" msgstr "" -#: assistant\commands\admin.py:1972 -msgid "You must attach **.csv** files to this command or reference a message that has them!" +#: assistant\commands\admin.py:3530 +msgid "Smartmod (AI Moderation)" msgstr "" -#: assistant\commands\admin.py:1985 assistant\commands\admin.py:2062 -#: assistant\commands\admin.py:2122 -msgid "Error reading **{}**: {}" +#: assistant\commands\admin.py:3535 +#, docstring +msgid "Enable or disable AI moderation. Omit the state to flip it." msgstr "" -#: assistant\commands\admin.py:1990 -msgid "**{}** contains invalid formatting, columns must be " +#: assistant\commands\admin.py:3541 +msgid "\n" +"⚠️ No OpenAI key for the scan. Set one with `{p}assistant smartmod key`." msgstr "" -#: assistant\commands\admin.py:1998 -msgid "There are no valid files to import!" +#: assistant\commands\admin.py:3545 +msgid "\n" +"⚠️ No report channel set. Set one with `{p}assistant smartmod channel`." msgstr "" -#: assistant\commands\admin.py:2000 assistant\commands\admin.py:2137 -msgid "Processing the following files in the background\n" -"{}" +#: assistant\commands\admin.py:3548 +msgid "Smartmod is now **{}**." msgstr "" -#: assistant\commands\admin.py:2014 assistant\commands\admin.py:2148 -msgid "processing" +#: assistant\commands\admin.py:3548 +msgid "enabled" msgstr "" -#: assistant\commands\admin.py:2016 assistant\commands\admin.py:2150 -msgid "overwriting" +#: assistant\commands\admin.py:3548 +msgid "disabled" msgstr "" -#: assistant\commands\admin.py:2024 assistant\commands\admin.py:2158 -msgid "{}\n" -"`Currently {}: `**{}** ({}/{})" +#: assistant\commands\admin.py:3553 +#, docstring +msgid "Set the channel where moderation proposals are posted. Omit to clear." msgstr "" -#: assistant\commands\admin.py:2030 assistant\commands\admin.py:2165 -msgid "Failed to process embedding: `{}`" +#: assistant\commands\admin.py:3556 +msgid "set to {}" msgstr "" -#: assistant\commands\admin.py:2035 assistant\commands\admin.py:2178 -#: assistant\commands\admin.py:2182 -msgid "{}\n" -"**COMPLETE**" +#: assistant\commands\admin.py:3556 +msgid "cleared" msgstr "" -#: assistant\commands\admin.py:2036 assistant\commands\admin.py:2179 -msgid "Successfully imported {} embeddings!" +#: assistant\commands\admin.py:3557 +msgid "Report channel {}." msgstr "" -#: assistant\commands\admin.py:2041 +#: assistant\commands\admin.py:3562 #, docstring -msgid "Import embeddings to use with the assistant\n\n" -" Args:\n" -" overwrite (bool): overwrite embeddings with existing entry names\n" +msgid "Set the smartmod review model (empty = use the server's default chat model).\n\n" +" Run with no model to open the interactive model picker — endpoint-discovered models when a\n" +" custom endpoint is set, otherwise the built-in OpenAI list.\n" " " msgstr "" -#: assistant\commands\admin.py:2050 assistant\commands\admin.py:3202 -msgid "You must attach **.json** files to this command or reference a message that has them!" +#: assistant\commands\admin.py:3571 +msgid "Review model set to `{}`." msgstr "" -#: assistant\commands\admin.py:2086 -msgid "Failed to import **{}** because it contains invalid formatting!" +#: assistant\commands\admin.py:3582 +msgid "Could not probe `{}` to discover models. Set one manually with `{}assistant smartmod model `." msgstr "" -#: assistant\commands\admin.py:2091 -msgid "Imported the following files: `{}`\n" -"{} embeddings imported" +#: assistant\commands\admin.py:3602 +msgid "The review model uses the server's default chat model unless set. Valid OpenAI models:\n" +"{}\n" +"Set one with `{}assistant smartmod model `." msgstr "" -#: assistant\commands\admin.py:2099 +#: assistant\commands\admin.py:3610 #, docstring -msgid "Import embeddings from an .xlsx file\n\n" -" Args:\n" -" overwrite (bool): overwrite embeddings with existing entry names\n" +msgid "Set the moderation review prompt.\n\n" +" Supports the {flagged_categories} placeholder plus the same standard prompt variables\n" +" as the main system prompt (server name, channel name, display name, custom cog\n" +" variables, etc.).\n\n" +" Run with no text to view the current prompt. Use `defaultprompt` to grab the built-in\n" +" default to customize, and `resetprompt` to restore it.\n" " " msgstr "" -#: assistant\commands\admin.py:2108 -msgid "You must attach **.xlsx** files to this command or reference a message that has them!" +#: assistant\commands\admin.py:3622 +msgid "Current moderation prompt (edit and re-set with `{p}assistant smartmod prompt `):" msgstr "" -#: assistant\commands\admin.py:2129 -msgid "{} is invalid! Must contain the following columns: {}" +#: assistant\commands\admin.py:3629 +msgid "Moderation prompt updated." msgstr "" -#: assistant\commands\admin.py:2183 -msgid "No embeddings needed to be updated!" +#: assistant\commands\admin.py:3634 +#, docstring +msgid "Get the built-in default moderation prompt to copy and customize." +msgstr "" + +#: assistant\commands\admin.py:3636 +msgid "Default moderation prompt - copy, edit, then set with `{p}assistant smartmod prompt `:" msgstr "" -#: assistant\commands\admin.py:2188 +#: assistant\commands\admin.py:3644 #, docstring -msgid "\n" -" Export embeddings to an .xlsx file\n\n" -" **Note:** csv exports do not include the embedding values\n" -" " +msgid "Reset the moderation review prompt to the built-in default." msgstr "" -#: assistant\commands\admin.py:2195 assistant\commands\admin.py:2241 -#: assistant\commands\admin.py:2285 -msgid "There are no embeddings to export!" +#: assistant\commands\admin.py:3647 +msgid "Moderation prompt reset to default." msgstr "" -#: assistant\commands\admin.py:2235 +#: assistant\commands\admin.py:3652 #, docstring -msgid "Export embeddings to a .csv file\n\n" -" **Note:** csv exports do not include the embedding values\n" +msgid "Set a category's flag threshold (0.0-1.0), e.g. `harassment 0.4`.\n\n" +" Run with no arguments to list every moderation category and its current threshold.\n" " " msgstr "" -#: assistant\commands\admin.py:2254 assistant\commands\admin.py:2274 -#: assistant\commands\admin.py:2293 assistant\commands\admin.py:2313 -#: assistant\commands\admin.py:3188 -msgid "Here is your embeddings export!" +#: assistant\commands\admin.py:3661 +msgid "Set one with `{p}assistant smartmod threshold <0.0-1.0>`:\n" +"{box}" msgstr "" -#: assistant\commands\admin.py:2257 assistant\commands\admin.py:2296 -#: assistant\commands\admin.py:3170 -msgid "File too large, attempting to compress..." +#: assistant\commands\admin.py:3669 +msgid "Unknown category. Valid categories:\n" +"{}" msgstr "" -#: assistant\commands\admin.py:2277 assistant\commands\admin.py:2316 -#: assistant\commands\admin.py:3191 -msgid "File is still too large even with compression!" +#: assistant\commands\admin.py:3672 +msgid "Value must be between 0.0 and 1.0." msgstr "" -#: assistant\commands\admin.py:2282 -#, docstring -msgid "Export embeddings to a json file" +#: assistant\commands\admin.py:3675 +msgid "Threshold for `{}` set to `{}`." msgstr "" -#: assistant\commands\admin.py:2324 +#: assistant\commands\admin.py:3680 #, docstring -msgid "\n" -" Manage embeddings for training\n\n" -" Embeddings are used to optimize training of the assistant and minimize token usage.\n\n" -" By using this the bot can store vast amounts of contextual information without going over the token limit.\n\n" -" **Note**\n" -" You can enter a search query with this command to bring up the menu and go directly to that embedding selection.\n" -" " +msgid "View the effective per-category flag thresholds." msgstr "" -#: assistant\commands\admin.py:2374 +#: assistant\commands\admin.py:3687 #, docstring -msgid "\n" -" Add custom function calls for Assistant to use\n\n" -" **READ**\n" -" - [Function Call Docs](https://platform.openai.com/docs/guides/gpt/function-calling)\n" -" - [OpenAI Cookbook](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_call_functions_with_chat_models.ipynb)\n" -" - [JSON Schema Reference](https://json-schema.org/understanding-json-schema/)\n\n" -" The following objects are passed by default as keyword arguments.\n" -" - **user**: the user currently chatting with the bot (discord.Member)\n" -" - **channel**: channel the user is chatting in (TextChannel|Thread|ForumChannel)\n" -" - **guild**: current guild (discord.Guild)\n" -" - **bot**: the bot object (Red)\n" -" - **conf**: the config model for Assistant (GuildSettings)\n" -" - All functions **MUST** include `*args, **kwargs` in the params and return a string\n" -" ```python\n" -" # Can be either sync or async\n" -" async def func(*args, **kwargs) -> str:\n" -" ```\n" -" Only bot owner can manage this, guild owners can see descriptions but not code\n" -" " +msgid "Return (flagged_categories, formatted_table_lines) comparing each score to its threshold." msgstr "" -#: assistant\commands\admin.py:2414 +#: assistant\commands\admin.py:3701 #, docstring -msgid "List custom prompt context variables registered by other cogs." +msgid "Preview a sample message: which trigger phrases match plus each moderation score vs its threshold." msgstr "" -#: assistant\commands\admin.py:2416 -msgid "3rd party docs: {}" +#: assistant\commands\admin.py:3707 assistant\commands\admin.py:3741 +msgid "No OpenAI key available for the scan. Set one with `{p}assistant smartmod key`." msgstr "" -#: assistant\commands\admin.py:2418 -msgid "No custom context variables have been registered yet!\n" -"{}" +#: assistant\commands\admin.py:3716 assistant\commands\admin.py:3750 +msgid "Moderation scan failed — check the key or the bot logs." msgstr "" -#: assistant\commands\admin.py:2432 -msgid "Custom Variables" +#: assistant\commands\admin.py:3719 +msgid "🚩 **Would trigger review**" msgstr "" -#: assistant\commands\admin.py:2437 -msgid "Page {}/{} | {} variables" +#: assistant\commands\admin.py:3719 +msgid "✅ **Would not trigger**" +msgstr "" + +#: assistant\commands\admin.py:3721 +msgid "Matched triggers: {}" msgstr "" -#: assistant\commands\admin.py:2450 +#: assistant\commands\admin.py:3723 +msgid "Scan flagged: {}" +msgstr "" + +#: assistant\commands\admin.py:3730 #, docstring -msgid "\n" -" List all available functions and their enabled/disabled status\n\n" -" This provides a quick overview of all custom functions and 3rd party\n" -" registered functions without having to navigate through the full menu.\n" +msgid "Dry-run the FULL pipeline on sample text: scan / triggers -> review model -> action panel.\n\n" +" The review model runs for real (tools, embeddings, this channel's recent context) with you as\n" +" the simulated offender, but the panel's buttons take no real action. The review runs if a\n" +" category trips its threshold OR a trigger phrase matches (same as production).\n" " " msgstr "" -#: assistant\commands\admin.py:2463 assistant\commands\admin.py:2527 -#: assistant\commands\admin.py:2579 assistant\commands\admin.py:2676 -msgid "No functions have been registered yet!" +#: assistant\commands\admin.py:3758 +msgid "✅ Would not trigger — no category over its threshold and no trigger phrase matched." msgstr "" -#: assistant\commands\admin.py:2490 -msgid "Function List" +#: assistant\commands\admin.py:3760 +msgid "🚩 Tripped: {}" msgstr "" -#: assistant\commands\admin.py:2495 -msgid "Page {}/{} | {} enabled, {} disabled" +#: assistant\commands\admin.py:3765 +msgid "Simulation error: {}" +msgstr "" + +#: assistant\commands\admin.py:3768 +msgid "🧪 Model chose **no action**.\n" +"-# {}" +msgstr "" + +#: assistant\commands\admin.py:3768 +msgid "no reason given" +msgstr "" + +#: assistant\commands\admin.py:3770 +msgid "🧪 Model didn't reach a decision within the review turn limit." +msgstr "" + +#: assistant\commands\admin.py:3772 +msgid "🧪 Model **proposed** an action — see the dry-run panel above (buttons are no-ops)." msgstr "" -#: assistant\commands\admin.py:2511 +#: assistant\commands\admin.py:3788 #, docstring -msgid "Open the mobile-friendly AI tools manager." +msgid "Toggle a channel/category/role/member on the moderation ignore list. Omit to view." +msgstr "" + +#: assistant\commands\admin.py:3791 +msgid "Smartmod blacklist (ignored)" msgstr "" -#: assistant\commands\admin.py:2520 +#: assistant\commands\admin.py:3796 +msgid "{} removed from the smartmod blacklist." +msgstr "" + +#: assistant\commands\admin.py:3799 +msgid "{} added to the smartmod blacklist." +msgstr "" + +#: assistant\commands\admin.py:3816 #, docstring -msgid "List tool categories and their current enabled state." +msgid "Only moderate these channel/category/role/members (used only when the blacklist is empty). Omit to view." msgstr "" -#: assistant\commands\admin.py:2545 -msgid "Tool Categories" +#: assistant\commands\admin.py:3819 +msgid "Smartmod whitelist (only these)" msgstr "" -#: assistant\commands\admin.py:2547 -msgid "Page {}/{} | {} enabled of {} total" +#: assistant\commands\admin.py:3824 +msgid "{} removed from the smartmod whitelist." +msgstr "" + +#: assistant\commands\admin.py:3827 +msgid "{} added to the smartmod whitelist." msgstr "" -#: assistant\commands\admin.py:2572 +#: assistant\commands\admin.py:3832 #, docstring -msgid "Enable or disable all tools in one or more categories." +msgid "Toggle a role to ping (and authorize) when an action is proposed. Omit to view." msgstr "" -#: assistant\commands\admin.py:2589 -msgid "No valid category names provided!" +#: assistant\commands\admin.py:3835 +msgid "Smartmod staff ping roles" msgstr "" -#: assistant\commands\admin.py:2594 -msgid "The following categories do not exist: {}" +#: assistant\commands\admin.py:3840 +msgid "{} removed from the staff ping roles." msgstr "" -#: assistant\commands\admin.py:2616 -msgid "{} **Enabled Categories** ({}):\n" -"{}" +#: assistant\commands\admin.py:3843 +msgid "{} added to the staff ping roles." msgstr "" -#: assistant\commands\admin.py:2624 -msgid "{} **Disabled Categories** ({}):\n" -"{}" +#: assistant\commands\admin.py:3848 +#, docstring +msgid "Set how many messages of context to capture before/after a flagged message." +msgstr "" + +#: assistant\commands\admin.py:3853 +msgid "Context window set to {} before / {} after." msgstr "" -#: assistant\commands\admin.py:2647 +#: assistant\commands\admin.py:3861 #, docstring -msgid "\n" -" Enable or disable multiple functions at once\n\n" -" **Arguments**\n" -" - `enable`: True to enable, False to disable. Omit to toggle current state.\n" -" - `functions`: Comma-separated list of function names, or \"all\" to affect all functions\n\n" -" **Examples**\n" -" - `[p]togglefunctions get_time, get_weather` - Toggle these functions\n" -" - `[p]togglefunctions True all` - Enable all functions\n" -" - `[p]togglefunctions False get_time, get_weather` - Disable specific functions\n" -" " +msgid "Set how long the action panel stays interactive, in seconds (60-86400)." msgstr "" -#: assistant\commands\admin.py:2686 -msgid "No valid function names provided!" +#: assistant\commands\admin.py:3864 +msgid "Panel timeout set to {} seconds." msgstr "" -#: assistant\commands\admin.py:2692 -msgid "The following functions do not exist: {}" +#: assistant\commands\admin.py:3869 +#, docstring +msgid "Toggle whether the proposed action auto-executes when the panel times out." msgstr "" -#: assistant\commands\admin.py:2718 -msgid "✅ **Enabled** ({}):\n" -"{}" +#: assistant\commands\admin.py:3873 assistant\commands\admin.py:3883 +msgid "on" msgstr "" -#: assistant\commands\admin.py:2724 -msgid "❌ **Disabled** ({}):\n" -"{}" +#: assistant\commands\admin.py:3873 assistant\commands\admin.py:3883 +msgid "off" msgstr "" -#: assistant\commands\admin.py:2819 -#, docstring -msgid "\n" -" Add/Remove items from the blacklist\n\n" -" `channel_role_member` can be a member, role, channel, or category channel\n" -" " +#: assistant\commands\admin.py:3874 +msgid "Auto-action on timeout is now **{}**." msgstr "" -#: assistant\commands\admin.py:2827 -msgid "{} has been removed from the blacklist" +#: assistant\commands\admin.py:3879 +#, docstring +msgid "Toggle skipping moderation for members with ban/kick/manage-messages permissions." msgstr "" -#: assistant\commands\admin.py:2830 -msgid "{} has been added to the blacklist" +#: assistant\commands\admin.py:3883 +msgid "Exempt staff is now **{}**." msgstr "" -#: assistant\commands\admin.py:2843 +#: assistant\commands\admin.py:3888 #, docstring -msgid "\n" -" Add/Remove items from the planner list, or view current planners.\n\n" -" Users/roles in the planner list can use the `think_and_plan` tool for complex task breakdown.\n\n" -" If the planner list is empty, everyone can use the planning tool.\n" -" If the planner list has entries, only those users/roles can use it.\n\n" -" `role_or_member` can be a member or role. Omit to view the current list.\n" +msgid "Add or remove a trigger phrase that sends a message straight to moderation review.\n\n" +" A match fires the review pipeline **in place of** the OpenAI moderation scan — so\n" +" triggers work even with no OpenAI key set. Re-run with the exact same phrase to remove it.\n\n" +" Only `*` is a wildcard (it matches any run of characters); everything else is literal,\n" +" so pasting real regex is safe and can never lock the bot up. With no `*`, the phrase\n" +" matches on word boundaries (`idiot` hits the word \"idiot\" but not \"idiotic\"); add `*`\n" +" to loosen it: `idiot*` (prefix), `*idiot` (suffix), `*idiot*` (substring anywhere).\n" " " msgstr "" -#: assistant\commands\admin.py:2858 -msgid "The planner list is empty. Everyone can use the `think_and_plan` tool." +#: assistant\commands\admin.py:3903 +msgid "Removed smartmod trigger: `{}`" msgstr "" -#: assistant\commands\admin.py:2863 -msgid "**Planners:** {}" +#: assistant\commands\admin.py:3906 +msgid "A trigger needs at least one non-`*` character." msgstr "" -#: assistant\commands\admin.py:2865 -msgid "The planner list has invalid entries. Consider clearing it." +#: assistant\commands\admin.py:3908 +msgid "That trigger is too long (max {} characters)." msgstr "" -#: assistant\commands\admin.py:2870 -msgid "{} has been removed from the planner list" +#: assistant\commands\admin.py:3911 +msgid "Added smartmod trigger `{phrase}` (matches as `{regex}`)." msgstr "" -#: assistant\commands\admin.py:2873 -msgid "{} has been added to the planner list" +#: assistant\commands\admin.py:3919 +#, docstring +msgid "List the smartmod trigger phrases and the safe pattern each one compiles to." msgstr "" -#: assistant\commands\admin.py:2878 +#: assistant\commands\admin.py:3924 +msgid "No smartmod triggers set. Add one with `{p}assistant smartmod trigger `." +msgstr "" + +#: assistant\commands\admin.py:3935 #, docstring -msgid "\n" -" Override settings for specific roles\n\n" -" **NOTE**\n" -" If a user has two roles with override settings, override associated with the higher role will be used.\n" +msgid "Set a dedicated OpenAI key for the moderation scan (opens a secure modal).\n\n" +" Use this when your chat endpoint is a custom/non-OpenAI endpoint (OpenRouter, LM Studio,\n" +" etc.): the free OpenAI moderation scan still runs against api.openai.com with this key,\n" +" while the review LLM keeps using your configured endpoint. Enter `none` to clear it.\n" " " msgstr "" -#: assistant\commands\admin.py:2887 +#: assistant\commands\admin.py:3943 +msgid "Click to set the OpenAI key used for the smartmod moderation scan\n\n" +"To remove the key, enter `none`" +msgstr "" + +#: assistant\commands\admin.py:3950 +msgid "Smartmod OpenAI key has been removed!" +msgstr "" + +#: assistant\commands\admin.py:3955 +msgid "Smartmod OpenAI key has been set!" +msgstr "" + +#: assistant\commands\admin.py:3960 #, docstring msgid "\n" " Assign a role to use a model\n\n" @@ -1984,23 +2833,23 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:2899 +#: assistant\commands\admin.py:3974 msgid "Enter a model id supported by your custom endpoint. If it exposes `/v1/models`, you can copy one from there." msgstr "" -#: assistant\commands\admin.py:2916 +#: assistant\commands\admin.py:3991 msgid "Role override for {} removed!" msgstr "" -#: assistant\commands\admin.py:2919 +#: assistant\commands\admin.py:3994 msgid "Role override for {} overwritten!" msgstr "" -#: assistant\commands\admin.py:2922 +#: assistant\commands\admin.py:3997 msgid "Role override for {} added!" msgstr "" -#: assistant\commands\admin.py:2928 +#: assistant\commands\admin.py:4003 #, docstring msgid "\n" " Assign a max token override to a role\n\n" @@ -2008,19 +2857,19 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:2938 +#: assistant\commands\admin.py:4013 msgid "Max token override for {} removed!" msgstr "" -#: assistant\commands\admin.py:2941 +#: assistant\commands\admin.py:4016 msgid "Max token override for {} overwritten!" msgstr "" -#: assistant\commands\admin.py:2944 +#: assistant\commands\admin.py:4019 msgid "Max token override for {} added!" msgstr "" -#: assistant\commands\admin.py:2952 +#: assistant\commands\admin.py:4031 #, docstring msgid "\n" " Assign a max response token override to a role\n\n" @@ -2029,19 +2878,19 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:2964 +#: assistant\commands\admin.py:4043 msgid "Max response token override for {} removed!" msgstr "" -#: assistant\commands\admin.py:2967 +#: assistant\commands\admin.py:4046 msgid "Max response token override for {} overwritten!" msgstr "" -#: assistant\commands\admin.py:2970 +#: assistant\commands\admin.py:4049 msgid "Max response token override for {} added!" msgstr "" -#: assistant\commands\admin.py:2975 +#: assistant\commands\admin.py:4054 #, docstring msgid "\n" " Assign a max message retention override to a role\n\n" @@ -2049,19 +2898,19 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:2987 +#: assistant\commands\admin.py:4066 msgid "Max retention override for {} removed!" msgstr "" -#: assistant\commands\admin.py:2990 +#: assistant\commands\admin.py:4069 msgid "Max retention override for {} overwritten!" msgstr "" -#: assistant\commands\admin.py:2993 +#: assistant\commands\admin.py:4072 msgid "Max retention override for {} added!" msgstr "" -#: assistant\commands\admin.py:2998 +#: assistant\commands\admin.py:4077 #, docstring msgid "\n" " Assign a max retention time override to a role\n\n" @@ -2069,19 +2918,19 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:3010 +#: assistant\commands\admin.py:4089 msgid "Max retention time override for {} removed!" msgstr "" -#: assistant\commands\admin.py:3013 +#: assistant\commands\admin.py:4092 msgid "Max retention time override for {} overwritten!" msgstr "" -#: assistant\commands\admin.py:3016 +#: assistant\commands\admin.py:4095 msgid "Max retention time override for {} added!" msgstr "" -#: assistant\commands\admin.py:3021 +#: assistant\commands\admin.py:4100 #, docstring msgid "\n" " Assign a reasoning effort override to a role\n\n" @@ -2090,23 +2939,23 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:3031 +#: assistant\commands\admin.py:4110 msgid "Invalid effort level. Valid values: {}" msgstr "" -#: assistant\commands\admin.py:3038 +#: assistant\commands\admin.py:4117 msgid "Reasoning effort override for {} removed!" msgstr "" -#: assistant\commands\admin.py:3041 +#: assistant\commands\admin.py:4120 msgid "Reasoning effort override for {} overwritten!" msgstr "" -#: assistant\commands\admin.py:3044 +#: assistant\commands\admin.py:4123 msgid "Reasoning effort override for {} added!" msgstr "" -#: assistant\commands\admin.py:3049 +#: assistant\commands\admin.py:4128 #, docstring msgid "\n" " Switch verbosity level for gpt-5 model between low, medium, and high\n\n" @@ -2114,79 +2963,112 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:3057 +#: assistant\commands\admin.py:4136 msgid "Verbosity has been set to **Medium**" msgstr "" -#: assistant\commands\admin.py:3060 +#: assistant\commands\admin.py:4139 msgid "Verbosity has been set to **High**" msgstr "" -#: assistant\commands\admin.py:3063 +#: assistant\commands\admin.py:4142 msgid "Verbosity has been set to **Low**" msgstr "" -#: assistant\commands\admin.py:3075 +#: assistant\commands\admin.py:4154 +#, docstring +msgid "Set the global default chat model for guilds that haven't picked their own (owner).\n\n" +" Pairs with `[p]assistant api globalendpoint`: e.g. set `openrouter/free` so new servers\n" +" route to OpenRouter's free models instead of the built-in `gpt-5.4` default. Guilds that\n" +" chose their own model are unaffected. Omit to view; pass `none` to clear.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:4161 +msgid "(not set - guilds use their own model)" +msgstr "" + +#: assistant\commands\admin.py:4163 +msgid "Global default model: `{}`\n" +"Set with `{}assistant api globalmodel `." +msgstr "" + +#: assistant\commands\admin.py:4169 +msgid "Global default model cleared." +msgstr "" + +#: assistant\commands\admin.py:4173 +msgid "Global default model set to `{}`. Guilds without their own model will use it." +msgstr "" + +#: assistant\commands\admin.py:4180 #, docstring msgid "\n" -" Override the global OpenAI-compatible API base URL\n\n" -" Pass the full API base URL, including the scheme and the `/v1` suffix.\n\n" +" Set the global default endpoint URL (owner)\n\n" +" When set, every guild without its own endpoint override calls this\n" +" URL instead of OpenAI's default. Pass the full base URL including\n" +" the scheme and the `/v1` suffix.\n\n" " **Examples**\n" " - `http://127.0.0.1:1234/v1`\n" " - `http://localhost:5001/v1`\n" -" - `https://example.com/api/v1`\n\n" +" - `https://example.com/api/v1`\n" +" - `https://openrouter.ai/api/v1`\n\n" " **Notes**\n" -" - When set, all servers can use the assistant without needing their own API key\n" -" - Custom endpoints must be OpenAI-compatible\n" -" - This should be the SDK `base_url`, not a specific route like `/chat/completions`\n" -" - Use `[p]assistant endpointapikey` to set a global key for authenticated custom endpoints\n" +" - Endpoints must be OpenAI-compatible\n" +" - This is the SDK `base_url`, not a specific route like `/chat/completions`\n" +" - Use `[p]assistant api globalkey` to set the API key for this endpoint\n" +" - Router endpoints like OpenRouter accept special model aliases\n" +" (e.g. `openrouter/auto`, `openrouter/free`) via `[p]assistant set model`\n" " - Omit the argument to remove the override\n" " " msgstr "" -#: assistant\commands\admin.py:3097 +#: assistant\commands\admin.py:4206 msgid "Endpoint is already set to **{}**" msgstr "" -#: assistant\commands\admin.py:3101 +#: assistant\commands\admin.py:4210 msgid "Endpoint has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:3109 +#: assistant\commands\admin.py:4218 msgid "Endpoint has been changed from **{}** to **{}**" msgstr "" -#: assistant\commands\admin.py:3116 +#: assistant\commands\admin.py:4225 msgid "Endpoint override has been removed!" msgstr "" -#: assistant\commands\admin.py:3122 +#: assistant\commands\admin.py:4232 #, docstring -msgid "Probe the configured custom endpoint and cache its runtime model/capability profile" +msgid "Probe the active endpoint and refresh its cached model/capability profile\n\n" +" Checks the guild endpoint override first; if none is set, probes the\n" +" global endpoint override. Reports an error if no endpoint is configured.\n" +" " msgstr "" -#: assistant\commands\admin.py:3124 -msgid "No endpoint override is configured." +#: assistant\commands\admin.py:4240 +msgid "No endpoint override is configured for this guild or globally." msgstr "" -#: assistant\commands\admin.py:3130 -msgid "Failed to probe the configured endpoint." +#: assistant\commands\admin.py:4246 +msgid "Failed to probe `{}`." msgstr "" -#: assistant\commands\admin.py:3137 +#: assistant\commands\admin.py:4253 #, docstring msgid "Wipe all settings and data for entire cog" msgstr "" -#: assistant\commands\admin.py:3139 +#: assistant\commands\admin.py:4255 msgid "Not wiping cog" msgstr "" -#: assistant\commands\admin.py:3144 +#: assistant\commands\admin.py:4260 msgid "Cog has been wiped!" msgstr "" -#: assistant\commands\admin.py:3149 +#: assistant\commands\admin.py:4265 #, docstring msgid "\n" " Take a backup of the cog\n\n" @@ -2194,22 +3076,22 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:3167 +#: assistant\commands\admin.py:4283 msgid "Here is your export!" msgstr "" -#: assistant\commands\admin.py:3196 +#: assistant\commands\admin.py:4312 #, docstring msgid "\n" " Restore the cog from a backup\n" " " msgstr "" -#: assistant\commands\admin.py:3206 +#: assistant\commands\admin.py:4322 msgid "Cog has been restored!" msgstr "" -#: assistant\commands\admin.py:3212 +#: assistant\commands\admin.py:4328 #, docstring msgid "\n" " Wipe saved conversations for the assistant in all servers\n\n" @@ -2217,37 +3099,37 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:3221 +#: assistant\commands\admin.py:4337 msgid "Conversations have been wiped for all servers!" msgstr "" -#: assistant\commands\admin.py:3227 +#: assistant\commands\admin.py:4343 #, docstring msgid "Toggle persistent conversations" msgstr "" -#: assistant\commands\admin.py:3230 +#: assistant\commands\admin.py:4346 msgid "Persistent conversations have been **Disabled**" msgstr "" -#: assistant\commands\admin.py:3233 +#: assistant\commands\admin.py:4349 msgid "Persistent conversations have been **Enabled**" msgstr "" -#: assistant\commands\admin.py:3239 +#: assistant\commands\admin.py:4355 #, docstring msgid "Toggle whether reasoning/think blocks are uploaded as files globally" msgstr "" -#: assistant\commands\admin.py:3242 +#: assistant\commands\admin.py:4358 msgid "Reasoning blocks will now be stripped from replies without uploading think files." msgstr "" -#: assistant\commands\admin.py:3245 +#: assistant\commands\admin.py:4361 msgid "Reasoning blocks will now be uploaded as think files when present." msgstr "" -#: assistant\commands\admin.py:3251 +#: assistant\commands\admin.py:4367 #, docstring msgid "\n" " Wipe saved embeddings for all servers\n\n" @@ -2255,11 +3137,11 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:3261 +#: assistant\commands\admin.py:4377 msgid "All embedding data has been wiped for all servers!" msgstr "" -#: assistant\commands\admin.py:3267 +#: assistant\commands\admin.py:4383 #, docstring msgid "\n" " Toggle whether the assistant listens to other bots\n\n" @@ -2267,113 +3149,113 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:3274 +#: assistant\commands\admin.py:4390 msgid "Assistant will no longer listen to other bot messages" msgstr "" -#: assistant\commands\admin.py:3277 +#: assistant\commands\admin.py:4393 msgid "Assistant will listen to other bot messages" msgstr "" -#: assistant\commands\admin.py:3285 +#: assistant\commands\admin.py:4401 #, docstring msgid "View and manage all scheduled autonomous tasks in this server." msgstr "" -#: assistant\commands\admin.py:3288 +#: assistant\commands\admin.py:4404 msgid "No scheduled tasks in this server." msgstr "" -#: assistant\commands\admin.py:3307 +#: assistant\commands\admin.py:4423 msgid "Scheduled Tasks ({})" msgstr "" -#: assistant\commands\admin.py:3317 +#: assistant\commands\admin.py:4433 #, docstring msgid "Cancel a scheduled task by its ID (admin override)." msgstr "" -#: assistant\commands\admin.py:3320 +#: assistant\commands\admin.py:4436 msgid "No scheduled task found with ID `{}`." msgstr "" -#: assistant\commands\admin.py:3322 +#: assistant\commands\admin.py:4438 msgid "That task belongs to a different server." msgstr "" -#: assistant\commands\admin.py:3331 +#: assistant\commands\admin.py:4447 msgid "Scheduled task `{}` has been cancelled." msgstr "" -#: assistant\commands\admin.py:3337 +#: assistant\commands\admin.py:4453 #, docstring msgid "Clear all scheduled tasks in this server." msgstr "" -#: assistant\commands\admin.py:3339 +#: assistant\commands\admin.py:4455 msgid "Not clearing tasks." msgstr "" -#: assistant\commands\admin.py:3350 +#: assistant\commands\admin.py:4466 msgid "Cleared {} scheduled tasks." msgstr "" -#: assistant\commands\admin.py:3356 +#: assistant\commands\admin.py:4470 #, docstring msgid "Toggle LLM-based conversation compaction on or off" msgstr "" -#: assistant\commands\admin.py:3360 +#: assistant\commands\admin.py:4474 msgid "Conversation compaction is now **Disabled** (blind degradation will be used)" msgstr "" -#: assistant\commands\admin.py:3363 +#: assistant\commands\admin.py:4477 msgid "Conversation compaction is now **Enabled**" msgstr "" -#: assistant\commands\admin.py:3368 +#: assistant\commands\admin.py:4482 #, docstring msgid "Set the model used for compaction (leave blank to use the chat model)" msgstr "" -#: assistant\commands\admin.py:3372 +#: assistant\commands\admin.py:4487 msgid "Compaction model cleared, the main chat model will be used" msgstr "" -#: assistant\commands\admin.py:3377 +#: assistant\commands\admin.py:4492 msgid "Compaction model set to **{}**" msgstr "" -#: assistant\commands\admin.py:3382 +#: assistant\commands\admin.py:4497 #, docstring msgid "Set the token threshold at which compaction triggers\n\n" " When set, the bot will proactively compact conversations once they\n" " exceed this many tokens, even if the model's context window is larger.\n\n" " Set to **0** to only compact when hitting the model's max token limit.\n\n" " **Examples**\n" -" - `[p]assistant compactionthreshold 16000` - compact at 16k tokens\n" -" - `[p]assistant compactionthreshold 0` - reset to default behavior\n" +" - `[p]assistant compaction threshold 16000` - compact at 16k tokens\n" +" - `[p]assistant compaction threshold 0` - reset to default behavior\n" " " msgstr "" -#: assistant\commands\admin.py:3394 +#: assistant\commands\admin.py:4509 msgid "Token limit must be 0 or higher" msgstr "" -#: assistant\commands\admin.py:3398 +#: assistant\commands\admin.py:4513 msgid "Compaction will now trigger at **{}** tokens" msgstr "" -#: assistant\commands\admin.py:3400 +#: assistant\commands\admin.py:4515 msgid "Compaction threshold reset, will only compact at the model's max token limit" msgstr "" -#: assistant\commands\base.py:46 +#: assistant\commands\base.py:45 #, docstring msgid "Get help using assistant" msgstr "" -#: assistant\commands\base.py:48 +#: assistant\commands\base.py:47 msgid "\n" "# How to Use\n\n" "### Commands\n" @@ -2381,6 +3263,7 @@ msgid "\n" "`[p]convocontext` - detailed token breakdown of what's consuming your context window.\n" "`[p]convocompact` - intelligently summarize older messages to free up context space.\n" "`[p]clearconvo` - reset your conversation for the current channel/thread/forum.\n" +"`[p]unchat` - cancel the active assistant response for the current channel/thread/forum.\n" "`[p]showconvo` - get a json dump of your current conversation (this is mostly for debugging)\n" "`[p]chat` or `[p]ask` - command prefix for chatting with the bot outside of the live chat, or just @ it.\n\n" "### Chat Arguments\n" @@ -2407,42 +3290,38 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:109 +#: assistant\commands\base.py:110 msgid "The API key is not set up!" msgstr "" -#: assistant\commands\base.py:111 +#: assistant\commands\base.py:112 msgid "Image generation is disabled!" msgstr "" -#: assistant\commands\base.py:120 +#: assistant\commands\base.py:121 msgid "Generating image..." msgstr "" -#: assistant\commands\base.py:124 +#: assistant\commands\base.py:125 msgid "-# Size: {}\n" "-# Quality: {}\n" "-# Model: {}" msgstr "" -#: assistant\commands\base.py:126 +#: assistant\commands\base.py:127 msgid "\n" "-# Style: {}" msgstr "" -#: assistant\commands\base.py:145 -msgid "Cost: ${}" -msgstr "" - -#: assistant\commands\base.py:150 +#: assistant\commands\base.py:155 msgid "Revised Prompt" msgstr "" -#: assistant\commands\base.py:150 +#: assistant\commands\base.py:155 msgid "Continued" msgstr "" -#: assistant\commands\base.py:170 +#: assistant\commands\base.py:178 #, docstring msgid "\n" " Chat with [botname]!\n\n" @@ -2459,7 +3338,11 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:197 +#: assistant\commands\base.py:208 +msgid "There are too many pending messages for this conversation. Please wait for the current reply." +msgstr "" + +#: assistant\commands\base.py:214 #, docstring msgid "\n" " Check the token and message count of yourself or another user's conversation for this channel\n\n" @@ -2468,7 +3351,7 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:252 +#: assistant\commands\base.py:271 msgid "`Messages: `{}/{}\n" "`Context: `{}/{} ({:.1f}%)\n" "`Conversation:`{}\n" @@ -2477,126 +3360,126 @@ msgid "`Messages: `{}/{}\n" "`Model: `{}" msgstr "" -#: assistant\commands\base.py:271 +#: assistant\commands\base.py:290 msgid "\n" "`Tool Calls: `{}" msgstr "" -#: assistant\commands\base.py:273 +#: assistant\commands\base.py:292 msgid "\n" "`Compacted: `{} time(s)" msgstr "" -#: assistant\commands\base.py:275 +#: assistant\commands\base.py:294 msgid "*Collabroative conversations are enabled*" msgstr "" -#: assistant\commands\base.py:281 +#: assistant\commands\base.py:300 msgid "Conversation stats for {}" msgstr "" -#: assistant\commands\base.py:284 +#: assistant\commands\base.py:303 msgid "Context = conversation + overhead (prompts + function schemas)" msgstr "" -#: assistant\commands\base.py:289 +#: assistant\commands\base.py:308 msgid "System prompt override for this conversation" msgstr "" -#: assistant\commands\base.py:292 +#: assistant\commands\base.py:311 msgid "System prompt override for this channel" msgstr "" -#: assistant\commands\base.py:298 +#: assistant\commands\base.py:317 #, docstring msgid "Show a detailed token breakdown for your conversation context" msgstr "" -#: assistant\commands\base.py:334 +#: assistant\commands\base.py:353 msgid "`Max Context: `{} tokens\n" msgstr "" -#: assistant\commands\base.py:335 +#: assistant\commands\base.py:354 msgid "`Context Fill: `{:.1f}%\n" msgstr "" -#: assistant\commands\base.py:336 +#: assistant\commands\base.py:355 msgid "`Model: `{}\n" msgstr "" -#: assistant\commands\base.py:338 +#: assistant\commands\base.py:357 msgid "**Token Breakdown**\n" msgstr "" -#: assistant\commands\base.py:339 +#: assistant\commands\base.py:358 msgid "`System Prompt: `{}\n" msgstr "" -#: assistant\commands\base.py:340 +#: assistant\commands\base.py:359 msgid "`Initial Prompt: `{}\n" msgstr "" -#: assistant\commands\base.py:341 +#: assistant\commands\base.py:360 msgid "`Channel Prompt: `{}\n" msgstr "" -#: assistant\commands\base.py:342 +#: assistant\commands\base.py:361 msgid "`Function Schemas: `{} ({} functions)\n" msgstr "" -#: assistant\commands\base.py:345 +#: assistant\commands\base.py:364 msgid "`Conversation: `{}\n" msgstr "" -#: assistant\commands\base.py:346 +#: assistant\commands\base.py:365 msgid "`Total: `{}\n" msgstr "" -#: assistant\commands\base.py:348 +#: assistant\commands\base.py:367 msgid "**Message Breakdown**\n" msgstr "" -#: assistant\commands\base.py:349 +#: assistant\commands\base.py:368 msgid "`System/Developer: `{}\n" msgstr "" -#: assistant\commands\base.py:350 +#: assistant\commands\base.py:369 msgid "`User Messages: `{}\n" msgstr "" -#: assistant\commands\base.py:351 +#: assistant\commands\base.py:370 msgid "`Assistant Messages: `{}\n" msgstr "" -#: assistant\commands\base.py:352 +#: assistant\commands\base.py:371 msgid "`Tool Results: `{}\n" msgstr "" -#: assistant\commands\base.py:353 +#: assistant\commands\base.py:372 msgid "`Images: `{}\n" msgstr "" -#: assistant\commands\base.py:354 +#: assistant\commands\base.py:373 msgid "`Compaction Summaries:`{}\n" msgstr "" -#: assistant\commands\base.py:356 +#: assistant\commands\base.py:375 msgid "**Compaction**\n" msgstr "" -#: assistant\commands\base.py:357 +#: assistant\commands\base.py:376 msgid "`Times Compacted: `{}\n" msgstr "" -#: assistant\commands\base.py:367 +#: assistant\commands\base.py:386 msgid "Context Breakdown" msgstr "" -#: assistant\commands\base.py:372 +#: assistant\commands\base.py:391 msgid "Context for {}" msgstr "" -#: assistant\commands\base.py:380 +#: assistant\commands\base.py:399 #, docstring msgid "Compact your conversation using LLM summarization\n\n" " This summarizes older messages instead of deleting them, preserving\n" @@ -2607,35 +3490,35 @@ msgid "Compact your conversation using LLM summarization\n\n" " " msgstr "" -#: assistant\commands\base.py:391 +#: assistant\commands\base.py:411 msgid "No API key has been set!" msgstr "" -#: assistant\commands\base.py:393 +#: assistant\commands\base.py:413 msgid "Conversation compaction is disabled in this server." msgstr "" -#: assistant\commands\base.py:404 +#: assistant\commands\base.py:424 msgid "Only moderators can compact channel conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:409 +#: assistant\commands\base.py:429 msgid "You have no conversation history in this channel." msgstr "" -#: assistant\commands\base.py:414 +#: assistant\commands\base.py:434 msgid "Not enough messages to compact (need more than {})." msgstr "" -#: assistant\commands\base.py:434 +#: assistant\commands\base.py:453 msgid "Conversation compacted! ({} compactions total for this conversation)" msgstr "" -#: assistant\commands\base.py:439 +#: assistant\commands\base.py:458 msgid "Compaction was not needed or failed." msgstr "" -#: assistant\commands\base.py:444 +#: assistant\commands\base.py:463 #, docstring msgid "\n" " Reset your conversation with the bot\n\n" @@ -2643,112 +3526,129 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:457 +#: assistant\commands\base.py:476 msgid "Only moderators can clear channel conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:461 +#: assistant\commands\base.py:481 msgid "Your conversation in this channel has been reset!" msgstr "" -#: assistant\commands\base.py:467 +#: assistant\commands\base.py:486 +#, docstring +msgid "Cancel the active assistant response for this channel" +msgstr "" + +#: assistant\commands\base.py:494 +msgid "Only moderators can cancel channel conversations when collaborative conversations are enabled!" +msgstr "" + +#: assistant\commands\base.py:499 +msgid "There is no active assistant response to cancel in this channel." +msgstr "" + +#: assistant\commands\base.py:500 +msgid "The active assistant response for this channel has been cancelled." +msgstr "" + +#: assistant\commands\base.py:506 #, docstring msgid "\n" " Pop the last message from your conversation\n" " " msgstr "" -#: assistant\commands\base.py:478 +#: assistant\commands\base.py:517 msgid "Only moderators can pop messages from conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:482 assistant\commands\base.py:743 +#: assistant\commands\base.py:521 assistant\commands\base.py:788 msgid "There are no messages in this conversation yet!" msgstr "" -#: assistant\commands\base.py:487 +#: assistant\commands\base.py:526 msgid "Removed the last message from this conversation" msgstr "" -#: assistant\commands\base.py:507 +#: assistant\commands\base.py:546 #, docstring msgid "\n" " Get a summary of whats going on in a channel\n" " " msgstr "" -#: assistant\commands\base.py:513 +#: assistant\commands\base.py:552 msgid "Invalid timeframe! Please use a valid time format like `1h` for an hour" msgstr "" -#: assistant\commands\base.py:516 +#: assistant\commands\base.py:555 msgid "The maximum timeframe is 48 hours!" msgstr "" -#: assistant\commands\base.py:524 +#: assistant\commands\base.py:563 msgid "Only moderators can summarize conversations!" msgstr "" -#: assistant\commands\base.py:531 +#: assistant\commands\base.py:570 msgid "You don't have permission to view the channel!" msgstr "" -#: assistant\commands\base.py:538 +#: assistant\commands\base.py:577 msgid "I don't have permission to view the channel!" msgstr "" -#: assistant\commands\base.py:561 +#: assistant\commands\base.py:600 msgid "No messages found to summarize within that timeframe!" msgstr "" -#: assistant\commands\base.py:563 +#: assistant\commands\base.py:602 msgid "Not enough messages found to summarize within that timeframe!" msgstr "" -#: assistant\commands\base.py:664 +#: assistant\commands\base.py:706 msgid "The request timed out!" msgstr "" -#: assistant\commands\base.py:675 +#: assistant\commands\base.py:717 msgid "Failed to get response" msgstr "" -#: assistant\commands\base.py:678 +#: assistant\commands\base.py:720 msgid "No response was generated!" msgstr "" -#: assistant\commands\base.py:685 +#: assistant\commands\base.py:727 msgid "Timeframe: {}" msgstr "" -#: assistant\commands\base.py:692 assistant\commands\base.py:702 +#: assistant\commands\base.py:734 assistant\commands\base.py:744 msgid "Channel" msgstr "" -#: assistant\commands\base.py:724 +#: assistant\commands\base.py:769 #, docstring msgid "\n" " Copy the conversation to another channel, thread, or forum\n" " " msgstr "" -#: assistant\commands\base.py:735 +#: assistant\commands\base.py:780 msgid "Only moderators can copy conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:746 +#: assistant\commands\base.py:791 msgid "You cannot copy a conversation to a channel you can't see!" msgstr "" -#: assistant\commands\base.py:752 +#: assistant\commands\base.py:797 msgid "This conversation has been overwritten in {}" msgstr "" -#: assistant\commands\base.py:754 +#: assistant\commands\base.py:799 msgid "This conversation has been copied over to {}" msgstr "" -#: assistant\commands\base.py:764 +#: assistant\commands\base.py:809 #, docstring msgid "\n" " Set a system prompt for this conversation!\n\n" @@ -2757,28 +3657,28 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:773 +#: assistant\commands\base.py:818 msgid "Conversation system prompt overriding is **Disabled**." msgstr "" -#: assistant\commands\base.py:783 +#: assistant\commands\base.py:828 msgid "Only moderators can set conversation prompts when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:803 +#: assistant\commands\base.py:848 msgid "This prompt is uses {} tokens which is more than 90% of the maximum tokens allowed per conversation!\n" "Write a prompt using {} tokens or less to leave 10% of your token limit for responses" msgstr "" -#: assistant\commands\base.py:812 +#: assistant\commands\base.py:857 msgid "System prompt has been set for this conversation!" msgstr "" -#: assistant\commands\base.py:814 +#: assistant\commands\base.py:859 msgid "System prompt has been **Removed** for this conversation!" msgstr "" -#: assistant\commands\base.py:826 +#: assistant\commands\base.py:871 #, docstring msgid "\n" " View the current transcript of a conversation\n\n" @@ -2786,50 +3686,50 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:838 +#: assistant\commands\base.py:883 msgid "You have no conversation in this channel!" msgstr "" -#: assistant\commands\base.py:851 +#: assistant\commands\base.py:896 msgid "Here is your conversation transcript!" msgstr "" -#: assistant\commands\base.py:857 +#: assistant\commands\base.py:902 #, docstring msgid "\n" " Import a conversation from a file\n" " " msgstr "" -#: assistant\commands\base.py:862 +#: assistant\commands\base.py:907 msgid "Please attach a file to import the conversation from!" msgstr "" -#: assistant\commands\base.py:864 +#: assistant\commands\base.py:909 msgid "Please only attach one file to import the conversation from!" msgstr "" -#: assistant\commands\base.py:867 +#: assistant\commands\base.py:912 msgid "Please upload a valid JSON file." msgstr "" -#: assistant\commands\base.py:872 +#: assistant\commands\base.py:917 msgid "Failed to parse conversation file." msgstr "" -#: assistant\commands\base.py:878 +#: assistant\commands\base.py:923 msgid "The conversation file is not in the correct format. It should be a list of messages." msgstr "" -#: assistant\commands\base.py:888 +#: assistant\commands\base.py:933 msgid "You do not have permission to import conversations." msgstr "" -#: assistant\commands\base.py:893 +#: assistant\commands\base.py:938 msgid "Conversation has been imported successfully!" msgstr "" -#: assistant\commands\base.py:899 +#: assistant\commands\base.py:944 #, docstring msgid "\n" " Fetch related embeddings according to the current topn setting along with their scores\n\n" @@ -2837,31 +3737,31 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:906 +#: assistant\commands\base.py:951 msgid "You do not have any embeddings configured!" msgstr "" -#: assistant\commands\base.py:908 +#: assistant\commands\base.py:953 msgid "Top N is set to 0 so no embeddings will be returned" msgstr "" -#: assistant\commands\base.py:914 +#: assistant\commands\base.py:959 msgid "Failed to get embedding for your query" msgstr "" -#: assistant\commands\base.py:923 +#: assistant\commands\base.py:968 msgid "No embeddings could be related to this query with the current settings" msgstr "" -#: assistant\commands\base.py:927 +#: assistant\commands\base.py:972 msgid "`Entry Name: `{}\n" msgstr "" -#: assistant\commands\base.py:928 +#: assistant\commands\base.py:973 msgid "`Relatedness: `{}\n" msgstr "" -#: assistant\commands\base.py:929 +#: assistant\commands\base.py:974 msgid "`Dimensions: `{}\n" msgstr "" From 54bbf81755fd76ac136df677b525de224c76a611 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Mon, 1 Jun 2026 11:10:51 -0400 Subject: [PATCH 055/104] New translations messages.pot (Turkish) [ci skip] --- assistant/commands/locales/tr-TR.po | 2688 ++++++++++++++++++--------- 1 file changed, 1790 insertions(+), 898 deletions(-) diff --git a/assistant/commands/locales/tr-TR.po b/assistant/commands/locales/tr-TR.po index 7ba83d8e1..893e13424 100644 --- a/assistant/commands/locales/tr-TR.po +++ b/assistant/commands/locales/tr-TR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-20 01:28\n" +"POT-Creation-Date: 2026-06-01 09:46-0400\n" +"PO-Revision-Date: 2026-06-01 15:10\n" "Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" @@ -17,19 +17,19 @@ msgstr "" "X-Crowdin-File-ID: 53\n" "Language: tr_TR\n" -#: assistant\commands\admin.py:67 +#: assistant\commands\admin.py:89 msgid "Endpoint override must be a full base URL, for example `http://127.0.0.1:1234/v1` or `https://example.com/api/v1`." msgstr "" -#: assistant\commands\admin.py:72 +#: assistant\commands\admin.py:94 msgid "Endpoint override must point at the OpenAI-compatible API base path ending in `/v1`. Do not include routes like `/chat/completions` or `/models`." msgstr "" -#: assistant\commands\admin.py:81 +#: assistant\commands\admin.py:103 msgid "Empty" msgstr "" -#: assistant\commands\admin.py:90 +#: assistant\commands\admin.py:112 #, docstring msgid "\n" " Setup the assistant\n\n" @@ -37,69 +37,166 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:133 +#: assistant\commands\admin.py:122 +#, docstring +msgid "Manage API keys and endpoint URLs" +msgstr "" + +#: assistant\commands\admin.py:127 +#, docstring +msgid "Per-guild endpoint and key overrides (chat + embeddings)" +msgstr "" + +#: assistant\commands\admin.py:132 +#, docstring +msgid "Configure general guild settings" +msgstr "" + +#: assistant\commands\admin.py:137 +#, docstring +msgid "Configure assistant prompts" +msgstr "" + +#: assistant\commands\admin.py:142 +#, docstring +msgid "Configure feature toggles" +msgstr "" + +#: assistant\commands\admin.py:147 +#, docstring +msgid "Configure auto-answer settings" +msgstr "" + +#: assistant\commands\admin.py:152 +#, docstring +msgid "Configure trigger phrase system" +msgstr "" + +#: assistant\commands\admin.py:157 +#, docstring +msgid "Configure content filtering" +msgstr "" + +#: assistant\commands\admin.py:162 +#, docstring +msgid "Configure token and retention limits" +msgstr "" + +#: assistant\commands\admin.py:167 +#, docstring +msgid "Configure model behavior parameters" +msgstr "" + +#: assistant\commands\admin.py:172 +#, docstring +msgid "Configure embeddings and RAG settings" +msgstr "" + +#: assistant\commands\admin.py:177 +#, docstring +msgid "Admin maintenance commands" +msgstr "" + +#: assistant\commands\admin.py:183 +#, docstring +msgid "Configure OpenRouter response & prompt caching." +msgstr "" + +#: assistant\commands\admin.py:188 +#, docstring +msgid "Manage role-based overrides" +msgstr "" + +#: assistant\commands\admin.py:193 +#, docstring +msgid "Manage scheduled autonomous tasks" +msgstr "" + +#: assistant\commands\admin.py:198 +#, docstring +msgid "Configure conversation compaction" +msgstr "" + +#: assistant\commands\admin.py:203 +#, docstring +msgid "AI moderation: scan messages, review flagged ones, and propose staff actions." +msgstr "" + +#: assistant\commands\admin.py:244 msgid "... and {} more" msgstr "" -#: assistant\commands\admin.py:143 +#: assistant\commands\admin.py:255 msgid "Configured chat model" msgstr "" -#: assistant\commands\admin.py:144 +#: assistant\commands\admin.py:256 msgid "{}: **{}**" msgstr "" -#: assistant\commands\admin.py:147 assistant\commands\admin.py:180 +#: assistant\commands\admin.py:259 assistant\commands\admin.py:294 msgid "No endpoint model cache is available yet. Run `{}` to refresh it, or enter a model id manually." msgstr "" -#: assistant\commands\admin.py:154 +#: assistant\commands\admin.py:266 msgid "Runtime chat model: **{}**" msgstr "" -#: assistant\commands\admin.py:159 +#: assistant\commands\admin.py:271 msgid "Discovered chat models:\n" "{}" msgstr "" -#: assistant\commands\admin.py:165 +#: assistant\commands\admin.py:277 msgid "No chat models were discovered from this endpoint yet. You can still enter a model id manually." msgstr "" -#: assistant\commands\admin.py:169 assistant\commands\admin.py:204 +#: assistant\commands\admin.py:281 assistant\commands\admin.py:318 msgid "Use this command again with one of these model ids, or enter another id manually if your endpoint supports it." msgstr "" -#: assistant\commands\admin.py:177 +#: assistant\commands\admin.py:291 msgid "Configured embedding model: **{}**" msgstr "" -#: assistant\commands\admin.py:187 +#: assistant\commands\admin.py:301 msgid "Runtime embedding model: **{}**" msgstr "" -#: assistant\commands\admin.py:192 +#: assistant\commands\admin.py:306 msgid "Discovered embedding models:\n" "{}" msgstr "" -#: assistant\commands\admin.py:198 +#: assistant\commands\admin.py:312 msgid "No embedding models were discovered from this endpoint yet. You can still enter a model id manually." msgstr "" -#: assistant\commands\admin.py:217 +#: assistant\commands\admin.py:332 msgid "embedding" msgstr "" -#: assistant\commands\admin.py:217 +#: assistant\commands\admin.py:332 msgid "chat" msgstr "" -#: assistant\commands\admin.py:220 -msgid "Note: `{}` is not in the endpoint's discovered {} model list. Requests will currently resolve to `{}` unless the endpoint starts advertising or returning that model." +#: assistant\commands\admin.py:351 +msgid "Note: `{}` is not in the endpoint's discovered {} model list. Requests on this endpoint will automatically use `{}` instead." msgstr "" -#: assistant\commands\admin.py:228 +#: assistant\commands\admin.py:354 +msgid "Note: `{}` is not in the endpoint's discovered {} model list. The cog will still try to use it directly, but the endpoint may reject it." +msgstr "" + +#: assistant\commands\admin.py:400 +msgid "Warning: stored embeddings currently use mixed dimensions ({}). Run `{}` to resync them with `{}`." +msgstr "" + +#: assistant\commands\admin.py:412 +msgid "Warning: stored embeddings are `{}` dimensions, but `{}` returns `{}` dimensions. Run `{}` to resync them after switching models." +msgstr "" + +#: assistant\commands\admin.py:443 #, docstring msgid "\n" " View current settings\n\n" @@ -109,537 +206,656 @@ msgstr "\n" " Geçerli ayarları görüntüle\n\n" " Geçerli kanalda göndermek için `[p]assistant view false` kullanın " -#: assistant\commands\admin.py:248 +#: assistant\commands\admin.py:468 msgid "`OpenAI Version: `{}\n" msgstr "`OpenAI Sürümü: `{}\n" -#: assistant\commands\admin.py:249 +#: assistant\commands\admin.py:469 msgid "`OpenAI API Status: `{}\n" msgstr "" -#: assistant\commands\admin.py:250 +#: assistant\commands\admin.py:470 msgid "`Draw Command: `{}\n" msgstr "" -#: assistant\commands\admin.py:250 assistant\commands\admin.py:295 -#: assistant\commands\admin.py:302 assistant\commands\admin.py:312 -#: assistant\commands\admin.py:396 assistant\commands\admin.py:1346 +#: assistant\commands\admin.py:470 assistant\commands\admin.py:525 +#: assistant\commands\admin.py:532 assistant\commands\admin.py:542 +#: assistant\commands\admin.py:679 assistant\commands\admin.py:1695 msgid "Enabled" msgstr "" -#: assistant\commands\admin.py:250 assistant\commands\admin.py:295 -#: assistant\commands\admin.py:302 assistant\commands\admin.py:312 -#: assistant\commands\admin.py:396 assistant\commands\admin.py:1346 +#: assistant\commands\admin.py:470 assistant\commands\admin.py:525 +#: assistant\commands\admin.py:532 assistant\commands\admin.py:542 +#: assistant\commands\admin.py:604 assistant\commands\admin.py:679 +#: assistant\commands\admin.py:1695 msgid "Disabled" msgstr "" -#: assistant\commands\admin.py:251 +#: assistant\commands\admin.py:471 msgid "`Model: `{}\n" msgstr "`Model: `{}\n" -#: assistant\commands\admin.py:252 +#: assistant\commands\admin.py:472 msgid "`Embed Model: `{}\n" msgstr "" -#: assistant\commands\admin.py:253 +#: assistant\commands\admin.py:473 msgid "`Enabled: `{}\n" msgstr "`Etkin: `{}\n" -#: assistant\commands\admin.py:254 +#: assistant\commands\admin.py:474 msgid "`Timezone: `{}\n" msgstr "`Zaman Dilimi: `{}\n" -#: assistant\commands\admin.py:255 +#: assistant\commands\admin.py:475 msgid "`Channel: `{}\n" msgstr "`Kanal: `{}\n" -#: assistant\commands\admin.py:255 assistant\commands\admin.py:405 -#: assistant\commands\admin.py:412 +#: assistant\commands\admin.py:475 assistant\commands\admin.py:688 +#: assistant\commands\admin.py:695 msgid "Not Set" msgstr "Ayarlanmamış" -#: assistant\commands\admin.py:256 +#: assistant\commands\admin.py:476 msgid "`? Required: `{}\n" msgstr "`? Gerekli: `{}\n" -#: assistant\commands\admin.py:257 +#: assistant\commands\admin.py:477 msgid "`Question Mode: `{}\n" msgstr "" -#: assistant\commands\admin.py:258 +#: assistant\commands\admin.py:478 msgid "`Mention on Reply: `{}\n" msgstr "" -#: assistant\commands\admin.py:259 +#: assistant\commands\admin.py:479 msgid "`Respond to Mentions: `{}\n" msgstr "" -#: assistant\commands\admin.py:260 +#: assistant\commands\admin.py:480 msgid "`Collaborative Mode: `{}\n" msgstr "" -#: assistant\commands\admin.py:262 +#: assistant\commands\admin.py:481 msgid "`Max Retention: `{}\n" msgstr "`Maksimum Tutma: `{}\n" -#: assistant\commands\admin.py:263 +#: assistant\commands\admin.py:482 msgid "`Retention Expire: `{}s\n" msgstr "`Gözaltı Süresi Doldu: `{}s\n" -#: assistant\commands\admin.py:264 +#: assistant\commands\admin.py:483 msgid "`Max Tokens: `{}\n" msgstr "`Maksimum Jeton: `{}\n" -#: assistant\commands\admin.py:265 +#: assistant\commands\admin.py:484 msgid "`Max Response Tokens: `{}\n" msgstr "`Maksimum Yanıt Belirteçleri: `{}\n" -#: assistant\commands\admin.py:266 +#: assistant\commands\admin.py:485 msgid "`Min Length: `{}\n" msgstr "`Min Uzunluk: `{}\n" -#: assistant\commands\admin.py:267 +#: assistant\commands\admin.py:486 msgid "`Temperature: `{}\n" msgstr "`Sıcaklık: `{}\n" -#: assistant\commands\admin.py:268 +#: assistant\commands\admin.py:487 msgid "`Frequency Penalty: `{}\n" msgstr "" -#: assistant\commands\admin.py:269 +#: assistant\commands\admin.py:488 msgid "`Presence Penalty: `{}\n" msgstr "" -#: assistant\commands\admin.py:270 +#: assistant\commands\admin.py:489 msgid "`Seed: `{}\n" msgstr "" -#: assistant\commands\admin.py:271 +#: assistant\commands\admin.py:490 msgid "`Vision Resolution: `{}\n" msgstr "" -#: assistant\commands\admin.py:272 +#: assistant\commands\admin.py:491 msgid "`Reasoning Effort: `{}\n" msgstr "" -#: assistant\commands\admin.py:273 +#: assistant\commands\admin.py:492 msgid "`Verbosity: `{}\n" msgstr "" -#: assistant\commands\admin.py:274 +#: assistant\commands\admin.py:493 msgid "`System Prompt: `{} tokens\n" msgstr "" -#: assistant\commands\admin.py:275 +#: assistant\commands\admin.py:494 msgid "`User Prompt: `{} tokens\n" msgstr "" -#: assistant\commands\admin.py:276 +#: assistant\commands\admin.py:495 msgid "`Endpoint Override: `{}\n" msgstr "" -#: assistant\commands\admin.py:280 +#: assistant\commands\admin.py:495 assistant\commands\admin.py:496 +#: assistant\commands\admin.py:3518 +msgid "Not set" +msgstr "" + +#: assistant\commands\admin.py:496 +msgid "`Guild Endpoint: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:500 +msgid "`Effective Model: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:502 +msgid "`Effective Embed: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:505 msgid "Assistant Settings" msgstr "Asistan Ayarları" -#: assistant\commands\admin.py:288 +#: assistant\commands\admin.py:515 assistant\commands\admin.py:978 +#: assistant\commands\admin.py:1062 msgid "Endpoint Runtime" msgstr "" -#: assistant\commands\admin.py:290 +#: assistant\commands\admin.py:520 msgid "Auto Answer" msgstr "" -#: assistant\commands\admin.py:291 +#: assistant\commands\admin.py:521 msgid "Auto-answer will trigger the bot outside of the assistant channel if a question is detected and an embedding is not found.\n" msgstr "" -#: assistant\commands\admin.py:294 +#: assistant\commands\admin.py:524 msgid "`Model: `{}\n" msgstr "" -#: assistant\commands\admin.py:295 assistant\commands\admin.py:302 +#: assistant\commands\admin.py:525 assistant\commands\admin.py:532 msgid "`Status: `{}\n" msgstr "" -#: assistant\commands\admin.py:296 +#: assistant\commands\admin.py:526 msgid "`Threshold: `{}\n" msgstr "" -#: assistant\commands\admin.py:297 assistant\commands\admin.py:304 +#: assistant\commands\admin.py:527 assistant\commands\admin.py:534 msgid "`Ignored: `{}\n" msgstr "" -#: assistant\commands\admin.py:300 +#: assistant\commands\admin.py:530 msgid "Trigger Words" msgstr "" -#: assistant\commands\admin.py:301 +#: assistant\commands\admin.py:531 msgid "Trigger words allow the bot to respond to messages containing specific keywords or regex patterns.\n" msgstr "" -#: assistant\commands\admin.py:303 +#: assistant\commands\admin.py:533 msgid "`Phrases: `{}\n" msgstr "" -#: assistant\commands\admin.py:305 +#: assistant\commands\admin.py:535 assistant\commands\admin.py:3515 msgid "None" msgstr "" -#: assistant\commands\admin.py:307 +#: assistant\commands\admin.py:537 msgid "`Has Prompt:`{}\n" msgstr "" -#: assistant\commands\admin.py:307 +#: assistant\commands\admin.py:537 msgid "Yes" msgstr "" -#: assistant\commands\admin.py:307 +#: assistant\commands\admin.py:537 msgid "No" msgstr "" -#: assistant\commands\admin.py:310 +#: assistant\commands\admin.py:540 msgid "Think Tags" msgstr "" -#: assistant\commands\admin.py:311 +#: assistant\commands\admin.py:541 msgid "Reasoning blocks wrapped in these tags are removed from chat output.\n" msgstr "" -#: assistant\commands\admin.py:312 +#: assistant\commands\admin.py:542 msgid "`Upload as Files:`{}\n" msgstr "" -#: assistant\commands\admin.py:313 +#: assistant\commands\admin.py:543 msgid "Prefix\n" "{}\n" "Suffix\n" "{}" msgstr "" -#: assistant\commands\admin.py:320 +#: assistant\commands\admin.py:550 msgid "System prompt override is **Allowed**, users can set a personal system prompt per convo." msgstr "" -#: assistant\commands\admin.py:322 +#: assistant\commands\admin.py:552 msgid "System prompt override is **Disabled**, users cannot set a personal system prompt per convo." msgstr "" -#: assistant\commands\admin.py:323 +#: assistant\commands\admin.py:553 msgid "\n" "*This will be restricted to mods if collaborative conversations are enabled!*" msgstr "" -#: assistant\commands\admin.py:324 +#: assistant\commands\admin.py:554 msgid "System Prompt Overriding" msgstr "" -#: assistant\commands\admin.py:332 +#: assistant\commands\admin.py:562 msgid "Channel Prompt Overrides" msgstr "" -#: assistant\commands\admin.py:343 +#: assistant\commands\admin.py:578 +msgid "• System prompt - `{}`" +msgstr "" + +#: assistant\commands\admin.py:581 +msgid "• Initial prompt - `{}`" +msgstr "" + +#: assistant\commands\admin.py:586 +msgid "• <#{}> - `{}`" +msgstr "" + +#: assistant\commands\admin.py:589 +msgid "⚠️ Cache Warning" +msgstr "" + +#: assistant\commands\admin.py:590 +msgid "These prompts contain dynamic variable placeholders that break prompt prefix caching on every request. Use `{prefix}floatingcontext` to move them to the floating context block instead.\n" +msgstr "" + +#: assistant\commands\admin.py:602 +msgid "Enabled ({}s TTL)" +msgstr "" + +#: assistant\commands\admin.py:607 +msgid "Off" +msgstr "" + +#: assistant\commands\admin.py:608 +msgid "5 minutes" +msgstr "" + +#: assistant\commands\admin.py:609 +msgid "1 hour" +msgstr "" + +#: assistant\commands\admin.py:612 +msgid "OpenRouter Caching" +msgstr "" + +#: assistant\commands\admin.py:614 +msgid "`Response Cache: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:615 +msgid "`Provider Prompt Cache: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:626 msgid "Auto-Reply Channels" msgstr "" -#: assistant\commands\admin.py:352 +#: assistant\commands\admin.py:635 msgid "Mixed (Please Refresh!)" msgstr "Karışık (Lütfen Yenileyin!)" -#: assistant\commands\admin.py:354 +#: assistant\commands\admin.py:637 msgid "Synced!" msgstr "Senkronize!" -#: assistant\commands\admin.py:356 +#: assistant\commands\admin.py:639 msgid "N/A" msgstr "N/A" -#: assistant\commands\admin.py:359 +#: assistant\commands\admin.py:642 msgid "`Top N Embeddings: `{}\n" msgstr "`En İyi N Gömme: `{}\\n\n" -#: assistant\commands\admin.py:360 +#: assistant\commands\admin.py:643 msgid "`Min Relatedness: `{}\n" msgstr "`Min Akrabalık: `{}\n" -#: assistant\commands\admin.py:361 +#: assistant\commands\admin.py:644 msgid "`Encodings: `{}" msgstr "" -#: assistant\commands\admin.py:365 +#: assistant\commands\admin.py:648 msgid "Embeddings ({})" msgstr "Gömüler ({})" -#: assistant\commands\admin.py:373 +#: assistant\commands\admin.py:656 msgid "The following roles/users can use the `think_and_plan` tool: " msgstr "" -#: assistant\commands\admin.py:378 +#: assistant\commands\admin.py:661 msgid "`Function Calling: `{}\n" msgstr "`Fonksiyon Çağrısı: `{}\\n\n" -#: assistant\commands\admin.py:379 +#: assistant\commands\admin.py:662 msgid "`Maximum Recursion: `{}\n" msgstr "`Maksimum Yineleme: `{}\n" -#: assistant\commands\admin.py:380 +#: assistant\commands\admin.py:663 msgid "`Function Tokens: `{}\n" msgstr "`Fonksiyon Belirteçleri: `{}\n" -#: assistant\commands\admin.py:384 +#: assistant\commands\admin.py:667 msgid "The following cogs also have functions registered with the assistant\n" "{}" msgstr "Aşağıdaki çarkların da asistana kayıtlı işlevleri vardır\n" "{}" -#: assistant\commands\admin.py:389 +#: assistant\commands\admin.py:672 msgid "Custom Functions ({})" msgstr "Özel İşlevler ({})" -#: assistant\commands\admin.py:394 +#: assistant\commands\admin.py:677 msgid "Max tokens" msgstr "" -#: assistant\commands\admin.py:396 +#: assistant\commands\admin.py:679 msgid "`Compaction: `{}\n" msgstr "" -#: assistant\commands\admin.py:397 +#: assistant\commands\admin.py:680 msgid "`Compaction Model: `{}\n" msgstr "" -#: assistant\commands\admin.py:397 +#: assistant\commands\admin.py:680 msgid "Same as chat" msgstr "" -#: assistant\commands\admin.py:398 +#: assistant\commands\admin.py:681 msgid "`Threshold: `{}\n" msgstr "" -#: assistant\commands\admin.py:400 +#: assistant\commands\admin.py:683 msgid "Context Compaction" msgstr "" -#: assistant\commands\admin.py:404 +#: assistant\commands\admin.py:687 msgid "API Key" msgstr "" -#: assistant\commands\admin.py:411 +#: assistant\commands\admin.py:694 msgid "Endpoint Override API Key" msgstr "" -#: assistant\commands\admin.py:419 +#: assistant\commands\admin.py:702 msgid "Regex Blacklist" msgstr "Regex Kara Listesi" -#: assistant\commands\admin.py:421 +#: assistant\commands\admin.py:704 msgid "Regex Failure Blocking" msgstr "Regex Hata Engelleme" -#: assistant\commands\admin.py:422 +#: assistant\commands\admin.py:705 msgid "Block reply if regex replacement fails: **{}**" msgstr "Regex değiştirme başarısız olursa yanıtı engelleyin: **{}**" -#: assistant\commands\admin.py:427 +#: assistant\commands\admin.py:710 msgid "Conversations are stored persistently" msgstr "Görüşmeler kalıcı olarak saklanır" -#: assistant\commands\admin.py:429 +#: assistant\commands\admin.py:712 msgid "conversations are stored in memory until reboot or reload" msgstr "Konuşmalar yeniden başlatma veya yeniden yüklemeye kadar bellekte saklanır" -#: assistant\commands\admin.py:431 +#: assistant\commands\admin.py:714 msgid "Persistent Conversations" msgstr "Kalıcı Görüşmeler" -#: assistant\commands\admin.py:445 +#: assistant\commands\admin.py:728 msgid "Blacklist" msgstr "Kara Liste" -#: assistant\commands\admin.py:457 +#: assistant\commands\admin.py:740 msgid "Model Role Overrides" msgstr "Model Rol Geçersiz Kılmaları" -#: assistant\commands\admin.py:468 +#: assistant\commands\admin.py:751 msgid "Max Token Role Overrides" msgstr "Maksimum Belirteç Rol Geçersiz Kılmaları" -#: assistant\commands\admin.py:479 +#: assistant\commands\admin.py:763 msgid "Max Message Retention Role Overrides" msgstr "Maksimum Mesaj Saklama Rol Geçersiz Kılmaları" -#: assistant\commands\admin.py:491 +#: assistant\commands\admin.py:778 msgid "Max Message Retention Time Role Overrides" msgstr "Maksimum Mesaj Saklama Süresi Rol Geçersiz Kılmaları" -#: assistant\commands\admin.py:505 +#: assistant\commands\admin.py:793 msgid "Max Response Token Role Overrides" msgstr "Maksimum Yanıt Belirteci Rol Geçersiz Kılmaları" -#: assistant\commands\admin.py:516 +#: assistant\commands\admin.py:808 msgid "Reasoning Effort Role Overrides" msgstr "" -#: assistant\commands\admin.py:520 +#: assistant\commands\admin.py:815 msgid "Your Brave websearch API key is set!" msgstr "" -#: assistant\commands\admin.py:522 +#: assistant\commands\admin.py:817 msgid "Enables the use of the `search_web_brave` function\n" "Get your API key **[Here](https://brave.com/search/api/)**\n" msgstr "" -#: assistant\commands\admin.py:526 +#: assistant\commands\admin.py:821 msgid "Brave Websearch API key" msgstr "" -#: assistant\commands\admin.py:528 +#: assistant\commands\admin.py:823 msgid "Showing settings for {}" msgstr "{} için ayarlar gösteriliyor" -#: assistant\commands\admin.py:534 +#: assistant\commands\admin.py:829 msgid "SystemPrompt" msgstr "Sistem İsteği" -#: assistant\commands\admin.py:540 +#: assistant\commands\admin.py:835 msgid "InitialPrompt" msgstr "Başlangıç İsteği" -#: assistant\commands\admin.py:550 +#: assistant\commands\admin.py:845 msgid "Sent your current settings for this server in DMs!" msgstr "Bu sunucu için mevcut ayarlarınızı DM'lerde gönderin!" -#: assistant\commands\admin.py:552 +#: assistant\commands\admin.py:847 msgid "You need to allow DMs so I can message you!" msgstr "Size mesaj gönderebilmem için DM'lere izin vermelisiniz!" -#: assistant\commands\admin.py:559 -#, docstring -msgid "View the token usage stats for this server" -msgstr "Bu sunucunun belirteç kullanım istatistiklerini görüntüleyin" - -#: assistant\commands\admin.py:562 -msgid "There is no usage data yet!" -msgstr "Henüz kullanım verisi yok!" - -#: assistant\commands\admin.py:593 -msgid "`Total: `{} (${} @ ${}/1k tokens)" -msgstr "`Toplam: `{} (${} @ ${}/1k belirteç)" - -#: assistant\commands\admin.py:600 -msgid "Free/Self-Hosted" -msgstr "Ücretsiz/Self-Hosted" - -#: assistant\commands\admin.py:604 -msgid "`Input: `{} (${} @ ${}/1k tokens)\n" -"`Output: `{} (${} @ ${}/1k tokens)\n" -"`Total: `{} (${})" -msgstr "`Girdi: `{} (${} @ ${}/1k belirteç)\n" -"`Çıktı: `{} (${} @ ${}/1k belirteç)\n" -"`Toplam: `{} (${})" - -#: assistant\commands\admin.py:618 -msgid "**Overall Token Usage and Cost**\n" -"`Input: `{} (${})\n" -"`Output: `{} (${})\n" -"`Total: `{} (${})\n" -"`Tool Calls: `{}\n" -msgstr "" - -#: assistant\commands\admin.py:639 -#, docstring -msgid "Reset the token usage stats for this server" -msgstr "Bu sunucu için belirteç kullanım istatistiklerini sıfırlayın" - -#: assistant\commands\admin.py:642 -msgid "Token usage stats have been reset!" -msgstr "Token kullanım istatistikleri sıfırlandı!" - -#: assistant\commands\admin.py:648 +#: assistant\commands\admin.py:854 #, docstring msgid "\n" -" Set this server's API key\n" +" Set this server's API key\n\n" +" Used for all requests from this guild - whether routing to OpenAI\n" +" directly, the guild's endpoint override, or the global endpoint\n" +" override. If not set, the global endpoint key is used as a fallback.\n" " " msgstr "" -#: assistant\commands\admin.py:654 +#: assistant\commands\admin.py:864 msgid "Click to set this server's API key\n\n" "To remove your key, enter `none`" msgstr "" -#: assistant\commands\admin.py:663 +#: assistant\commands\admin.py:873 msgid "API key has been removed!" msgstr "" -#: assistant\commands\admin.py:666 assistant\commands\admin.py:695 -#: assistant\commands\admin.py:723 +#: assistant\commands\admin.py:876 assistant\commands\admin.py:905 +#: assistant\commands\admin.py:938 assistant\commands\admin.py:3952 msgid "No API key was entered!" msgstr "API anahtarı girilmedi!" -#: assistant\commands\admin.py:669 +#: assistant\commands\admin.py:879 msgid "API key has been set!" msgstr "" -#: assistant\commands\admin.py:679 +#: assistant\commands\admin.py:889 #, docstring msgid "\n" -" Enables use of the `search_web_brave` function\n\n" -" Get your API key **[Here](https://brave.com/search/api/)**\n" +" Set the Brave Search API key (owner) - used by the web-search tool\n\n" +" Get your API key **[here](https://brave.com/search/api/)**.\n" " " msgstr "" -#: assistant\commands\admin.py:685 +#: assistant\commands\admin.py:895 msgid "Click to set your API key\n\n" "To remove your keys, enter `none`" msgstr "" -#: assistant\commands\admin.py:693 +#: assistant\commands\admin.py:903 msgid "Brave API key has been removed!" msgstr "" -#: assistant\commands\admin.py:698 +#: assistant\commands\admin.py:908 msgid "Brave API key has been set!" msgstr "" -#: assistant\commands\admin.py:706 +#: assistant\commands\admin.py:916 #, docstring msgid "\n" -" Set the global API key used for the custom endpoint override\n\n" -" This key is only used when an endpoint override is configured and a guild\n" +" Set the global API key for the default endpoint override (owner)\n\n" +" This key is only used when a global endpoint override is set\n" +" (see `[p]assistant api globalendpoint`) and the requesting guild\n" " has not provided its own API key.\n" " " msgstr "" -#: assistant\commands\admin.py:713 +#: assistant\commands\admin.py:924 msgid "Click to set the API key used for the endpoint override\n\n" "To remove the key, enter `none`" msgstr "" -#: assistant\commands\admin.py:721 +#: assistant\commands\admin.py:933 msgid "Endpoint override API key has been removed!" msgstr "" -#: assistant\commands\admin.py:726 +#: assistant\commands\admin.py:942 msgid "Endpoint override API key has been set!" msgstr "" -#: assistant\commands\admin.py:732 +#: assistant\commands\admin.py:952 +#, docstring +msgid "\n" +" Set this guild's endpoint URL (used for both chat and embeddings)\n\n" +" The endpoint must be a full base URL ending in `/v1`, for example:\n" +" `https://openrouter.ai/api/v1`\n\n" +" Set the API key for this endpoint with `[p]assistant api key`.\n\n" +" After setting, use `[p]assistant set model` (no args) to open an\n" +" interactive model picker. Router endpoints like OpenRouter also\n" +" accept special aliases like `openrouter/auto` or `openrouter/free`.\n\n" +" Run without arguments to view the current guild endpoint.\n" +" Use `none` to remove the guild endpoint override.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:972 +msgid "Guild Endpoint Override" +msgstr "" + +#: assistant\commands\admin.py:973 +msgid "Current endpoint: `{}`" +msgstr "" + +#: assistant\commands\admin.py:983 +msgid "No guild endpoint override is set." +msgstr "" + +#: assistant\commands\admin.py:990 +msgid "Guild endpoint override has been removed!" +msgstr "" + +#: assistant\commands\admin.py:993 +msgid "No guild endpoint override was set." +msgstr "" + +#: assistant\commands\admin.py:1002 +msgid "Guild endpoint override set to `{}`" +msgstr "" + +#: assistant\commands\admin.py:1009 +msgid "Endpoint probed successfully!\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:1024 +msgid "Could not probe the endpoint automatically. You can still use it, but model discovery may be limited." +msgstr "" + +#: assistant\commands\admin.py:1032 +#, docstring +msgid "Clear this guild's endpoint override (URL and cached profile)" +msgstr "" + +#: assistant\commands\admin.py:1035 +msgid "No per-guild endpoint override is set." +msgstr "" + +#: assistant\commands\admin.py:1038 +msgid "Guild endpoint override has been cleared!" +msgstr "" + +#: assistant\commands\admin.py:1044 +#, docstring +msgid "Show this guild's API key and endpoint override status" +msgstr "" + +#: assistant\commands\admin.py:1047 +msgid "Guild API Overrides" +msgstr "" + +#: assistant\commands\admin.py:1051 +msgid "Guild API Key" +msgstr "" + +#: assistant\commands\admin.py:1052 +msgid "Set" +msgstr "" + +#: assistant\commands\admin.py:1052 +msgid "Not set (using global key)" +msgstr "" + +#: assistant\commands\admin.py:1056 +msgid "Endpoint Override" +msgstr "" + +#: assistant\commands\admin.py:1057 +msgid "Not set (using global)" +msgstr "" + +#: assistant\commands\admin.py:1070 #, docstring msgid "Set the timezone used for prompt placeholders" msgstr "Bilgi istemi yer tutucuları için kullanılan saat dilimini ayarlayın" -#: assistant\commands\admin.py:738 +#: assistant\commands\admin.py:1080 msgid "Invalid Timezone, did you mean `{}`?" msgstr "Geçersiz Zaman Dilimi, `{}` mi demek istediniz?" -#: assistant\commands\admin.py:740 +#: assistant\commands\admin.py:1082 msgid "Timezone set to **{}** (`{}`)" msgstr "Saat dilimi **{}** (`{}`) olarak ayarlandı" -#: assistant\commands\admin.py:747 +#: assistant\commands\admin.py:1089 #, docstring msgid "\n" -" Set the initial prompt for GPT to use\n\n" +" Set the system prompt for GPT to use\n\n" " Check out [This Guide](https://platform.openai.com/docs/guides/prompt-engineering) for prompting help.\n\n" " **Placeholders**\n" " - **botname**: [botname]\n" @@ -678,72 +894,80 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:792 assistant\commands\admin.py:859 -#: assistant\commands\admin.py:941 assistant\commands\admin.py:998 -#: assistant\commands\admin.py:1275 assistant\commands\admin.py:1406 -#: assistant\commands\admin.py:1448 assistant\commands\base.py:791 +#: assistant\commands\admin.py:1134 assistant\commands\admin.py:1191 +#: assistant\commands\admin.py:1285 assistant\commands\admin.py:1356 +#: assistant\commands\admin.py:1622 assistant\commands\admin.py:1718 +#: assistant\commands\admin.py:1760 assistant\commands\base.py:836 msgid "Failed to read `{}`, bot owner can use `{}` for more information" msgstr "`{}` okunamadı, bot sahibi daha fazla bilgi için `{}` kullanabilir" -#: assistant\commands\admin.py:810 assistant\commands\admin.py:882 -#: assistant\commands\admin.py:959 +#: assistant\commands\admin.py:1152 assistant\commands\admin.py:1303 +#: assistant\commands\admin.py:1379 msgid "Your system and initial prompt combined will use {} tokens!\n" "Write a prompt combination using {} tokens or less to leave 10% of your configured max tokens for your response." msgstr "Sisteminiz ve başlangıç ​​istemi birlikte {} belirteç kullanacak!\n" "Yanıtınız için yapılandırılan maksimum belirteçlerin %10'unu bırakmak için {} belirteç veya daha azını kullanarak bir istem kombinasyonu yazın." -#: assistant\commands\admin.py:818 -msgid "The initial prompt has been removed!" -msgstr "İlk komut istemi kaldırıldı!" +#: assistant\commands\admin.py:1160 +msgid "The system prompt has been removed!" +msgstr "Sistem istemi kaldırıldı!" -#: assistant\commands\admin.py:821 -msgid "Please include an initial prompt or .txt file!\n" +#: assistant\commands\admin.py:1163 +msgid "Please include a system prompt or .txt file!\n" "Use `{}` to view details for this command" -msgstr "Lütfen bir başlangıç istemi veya .txt dosyası ekleyin!\n" +msgstr "Lütfen bir sistem istemi veya .txt dosyası ekleyin!\n" "Bu komutun ayrıntılarını görüntülemek için `{}` kullanın" -#: assistant\commands\admin.py:827 -msgid "The initial prompt has been overwritten!" -msgstr "İlk bilgi istemi üzerine yazıldı!" +#: assistant\commands\admin.py:1169 +msgid "The system prompt has been overwritten!" +msgstr "Sistem istemi üzerine yazıldı!" -#: assistant\commands\admin.py:830 -msgid "Initial prompt has been set!" -msgstr "İlk istem ayarlandı!" +#: assistant\commands\admin.py:1172 +msgid "System prompt has been set!" +msgstr "Sistem istemi ayarlandı!" -#: assistant\commands\admin.py:837 +#: assistant\commands\admin.py:1179 #, docstring -msgid "Show the channel specific system prompt" +msgid "\n" +" Set the global default system prompt used by servers that inherit the default prompt\n\n" +" - Run without arguments to view the current global default prompt\n" +" - Use `none` to reset to the built-in default prompt\n" +" - Servers with a custom system prompt keep using their custom prompt\n" +" " msgstr "" -#: assistant\commands\admin.py:840 -msgid "No channel prompt set for {}" +#: assistant\commands\admin.py:1203 +msgid "Current global default system prompt for servers using the default or an unset system prompt:" msgstr "" -#: assistant\commands\admin.py:852 -#, docstring -msgid "Set a channel specific system prompt" +#: assistant\commands\admin.py:1204 +msgid "Servers with a custom system prompt are unchanged." msgstr "" -#: assistant\commands\admin.py:869 -msgid "Channel prompt has been removed from {}!" +#: assistant\commands\admin.py:1207 +msgid "This is currently using the built-in default prompt." msgstr "" -#: assistant\commands\admin.py:872 -msgid "No channel prompt set for {}!" +#: assistant\commands\admin.py:1209 +msgid "This is currently using a custom default prompt." msgstr "" -#: assistant\commands\admin.py:888 -msgid "Channel prompt has been overwritten for {}!" +#: assistant\commands\admin.py:1215 +msgid "Please include a system prompt or .txt file, or use `none` to reset to the built-in default." msgstr "" -#: assistant\commands\admin.py:890 -msgid "Channel prompt has been set for {}!" +#: assistant\commands\admin.py:1221 +msgid "The global default system prompt has been reset to the built-in default. Servers using the default or an unset system prompt will use it immediately." +msgstr "" + +#: assistant\commands\admin.py:1231 +msgid "The global default system prompt has been updated. Servers using the default or an unset system prompt will use it immediately." msgstr "" -#: assistant\commands\admin.py:896 +#: assistant\commands\admin.py:1240 #, docstring msgid "\n" -" Set the system prompt for GPT to use\n\n" +" Set the initial prompt for GPT to use\n\n" " Check out [This Guide](https://platform.openai.com/docs/guides/prompt-engineering) for prompting help.\n\n" " **Placeholders**\n" " - **botname**: [botname]\n" @@ -782,213 +1006,205 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:967 -msgid "The system prompt has been removed!" -msgstr "Sistem istemi kaldırıldı!" +#: assistant\commands\admin.py:1311 +msgid "The initial prompt has been removed!" +msgstr "İlk komut istemi kaldırıldı!" -#: assistant\commands\admin.py:970 -msgid "Please include a system prompt or .txt file!\n" +#: assistant\commands\admin.py:1314 +msgid "Please include an initial prompt or .txt file!\n" "Use `{}` to view details for this command" -msgstr "Lütfen bir sistem istemi veya .txt dosyası ekleyin!\n" +msgstr "Lütfen bir başlangıç istemi veya .txt dosyası ekleyin!\n" "Bu komutun ayrıntılarını görüntülemek için `{}` kullanın" -#: assistant\commands\admin.py:976 -msgid "The system prompt has been overwritten!" -msgstr "Sistem istemi üzerine yazıldı!" +#: assistant\commands\admin.py:1320 +msgid "The initial prompt has been overwritten!" +msgstr "İlk bilgi istemi üzerine yazıldı!" -#: assistant\commands\admin.py:979 -msgid "System prompt has been set!" -msgstr "Sistem istemi ayarlandı!" +#: assistant\commands\admin.py:1323 +msgid "Initial prompt has been set!" +msgstr "İlk istem ayarlandı!" -#: assistant\commands\admin.py:986 +#: assistant\commands\admin.py:1334 #, docstring -msgid "\n" -" Set the global default system prompt used by servers that inherit the default prompt\n\n" -" - Run without arguments to view the current global default prompt\n" -" - Use `none` to reset to the built-in default prompt\n" -" - Servers with a custom system prompt keep using their custom prompt\n" -" " -msgstr "" - -#: assistant\commands\admin.py:1010 -msgid "Current global default system prompt for servers using the default or an unset system prompt:" +msgid "Show the channel specific system prompt" msgstr "" -#: assistant\commands\admin.py:1011 -msgid "Servers with a custom system prompt are unchanged." +#: assistant\commands\admin.py:1337 +msgid "No channel prompt set for {}" msgstr "" -#: assistant\commands\admin.py:1014 -msgid "This is currently using the built-in default prompt." +#: assistant\commands\admin.py:1349 +#, docstring +msgid "Set a channel specific system prompt" msgstr "" -#: assistant\commands\admin.py:1016 -msgid "This is currently using a custom default prompt." +#: assistant\commands\admin.py:1366 +msgid "Channel prompt has been removed from {}!" msgstr "" -#: assistant\commands\admin.py:1022 -msgid "Please include a system prompt or .txt file, or use `none` to reset to the built-in default." +#: assistant\commands\admin.py:1369 +msgid "No channel prompt set for {}!" msgstr "" -#: assistant\commands\admin.py:1028 -msgid "The global default system prompt has been reset to the built-in default. Servers using the default or an unset system prompt will use it immediately." +#: assistant\commands\admin.py:1385 +msgid "Channel prompt has been overwritten for {}!" msgstr "" -#: assistant\commands\admin.py:1038 -msgid "The global default system prompt has been updated. Servers using the default or an unset system prompt will use it immediately." +#: assistant\commands\admin.py:1387 +msgid "Channel prompt has been set for {}!" msgstr "" -#: assistant\commands\admin.py:1051 +#: assistant\commands\admin.py:1397 #, docstring msgid "Set the main auto-response channel for the assistant" msgstr "" -#: assistant\commands\admin.py:1056 +#: assistant\commands\admin.py:1402 msgid "Assistant channel has been removed" msgstr "Asistan kanalı kaldırıldı" -#: assistant\commands\admin.py:1059 +#: assistant\commands\admin.py:1405 msgid "Assistant channel has been overwritten" msgstr "Yardımcı kanalın üzerine yazıldı" -#: assistant\commands\admin.py:1062 +#: assistant\commands\admin.py:1408 msgid "Channel id has been set" msgstr "Kanal kimliği ayarlandı" -#: assistant\commands\admin.py:1068 +#: assistant\commands\admin.py:1414 #, docstring msgid "Toggle this channel as an auto-response channel" msgstr "" -#: assistant\commands\admin.py:1071 +#: assistant\commands\admin.py:1417 msgid "This channel is already set as the assistant channel!" msgstr "" -#: assistant\commands\admin.py:1074 +#: assistant\commands\admin.py:1420 msgid "I will no longer auto-respond to messages in this channel!" msgstr "" -#: assistant\commands\admin.py:1077 +#: assistant\commands\admin.py:1423 msgid "I will now auto-respond to messages in this channel!" msgstr "" -#: assistant\commands\admin.py:1082 +#: assistant\commands\admin.py:1428 #, docstring msgid "Toggle allowing per-conversation system prompt overriding" msgstr "" -#: assistant\commands\admin.py:1086 +#: assistant\commands\admin.py:1432 msgid "System prompt overriding **Disabled**, users cannot set per-convo system prompts" msgstr "" -#: assistant\commands\admin.py:1089 +#: assistant\commands\admin.py:1435 msgid "System prompt overriding **Enabled**, users can now set per-convo system prompts" msgstr "" -#: assistant\commands\admin.py:1094 +#: assistant\commands\admin.py:1440 #, docstring msgid "Toggle the assistant on or off" msgstr "Asistanı aç veya kapat" -#: assistant\commands\admin.py:1098 +#: assistant\commands\admin.py:1444 msgid "The assistant is now **Disabled**" msgstr "Asistan artık **Devre Dışı**" -#: assistant\commands\admin.py:1101 +#: assistant\commands\admin.py:1447 msgid "The assistant is now **Enabled**" msgstr "Asistan şimdi **Etkin**" -#: assistant\commands\admin.py:1106 +#: assistant\commands\admin.py:1452 #, docstring msgid "Toggle the draw command on or off" msgstr "" -#: assistant\commands\admin.py:1110 +#: assistant\commands\admin.py:1456 msgid "The draw command is now **Disabled**" msgstr "" -#: assistant\commands\admin.py:1113 +#: assistant\commands\admin.py:1459 msgid "The draw command is now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1118 +#: assistant\commands\admin.py:1464 #, docstring msgid "Toggle the auto-answer feature on or off" msgstr "" -#: assistant\commands\admin.py:1122 +#: assistant\commands\admin.py:1468 msgid "Auto-answer has been **Disabled**" msgstr "" -#: assistant\commands\admin.py:1125 +#: assistant\commands\admin.py:1471 msgid "Auto-answer has been **Enabled**" msgstr "" -#: assistant\commands\admin.py:1130 +#: assistant\commands\admin.py:1476 #, docstring msgid "Set the auto-answer threshold for the bot" msgstr "" -#: assistant\commands\admin.py:1133 +#: assistant\commands\admin.py:1479 msgid "Auto-answer threshold has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1140 +#: assistant\commands\admin.py:1488 #, docstring msgid "Ignore a channel for auto-answer" msgstr "" -#: assistant\commands\admin.py:1151 +#: assistant\commands\admin.py:1499 msgid "Auto-answer will no longer ignore {}" msgstr "" -#: assistant\commands\admin.py:1154 assistant\commands\admin.py:1321 +#: assistant\commands\admin.py:1502 assistant\commands\admin.py:1670 msgid "Channel not found!" msgstr "" -#: assistant\commands\admin.py:1156 +#: assistant\commands\admin.py:1504 msgid "Auto-answer will now ignore {}" msgstr "" -#: assistant\commands\admin.py:1161 +#: assistant\commands\admin.py:1509 #, docstring msgid "Set the model used for auto-answer" msgstr "" -#: assistant\commands\admin.py:1168 +#: assistant\commands\admin.py:1517 msgid "Configured auto-answer model" msgstr "" -#: assistant\commands\admin.py:1171 assistant\commands\admin.py:1791 -#: assistant\commands\admin.py:1832 assistant\commands\admin.py:1834 -#: assistant\commands\admin.py:2903 +#: assistant\commands\admin.py:1520 assistant\commands\admin.py:2139 +#: assistant\commands\admin.py:2213 assistant\commands\admin.py:2215 +#: assistant\commands\admin.py:3978 msgid "Valid models are:\n" "{}" msgstr "Geçerli modeller şunlardır:\n" "{}" -#: assistant\commands\admin.py:1173 assistant\commands\admin.py:3374 +#: assistant\commands\admin.py:1522 assistant\commands\admin.py:4489 msgid "Invalid model, valid models are: {}" msgstr "" -#: assistant\commands\admin.py:1175 +#: assistant\commands\admin.py:1524 msgid "Auto-answer model has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1186 +#: assistant\commands\admin.py:1533 #, docstring msgid "Toggle the trigger word feature on or off" msgstr "" -#: assistant\commands\admin.py:1190 +#: assistant\commands\admin.py:1537 msgid "Trigger word feature has been **Disabled**" msgstr "" -#: assistant\commands\admin.py:1193 +#: assistant\commands\admin.py:1540 msgid "Trigger word feature has been **Enabled**" msgstr "" -#: assistant\commands\admin.py:1198 +#: assistant\commands\admin.py:1545 #, docstring msgid "\n" " Add or remove a trigger phrase (supports regex)\n\n" @@ -1001,23 +1217,23 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1212 +#: assistant\commands\admin.py:1559 msgid "That regex pattern is invalid!" msgstr "" -#: assistant\commands\admin.py:1217 +#: assistant\commands\admin.py:1564 msgid "⚠️ Warning: `{}` is a very broad pattern that may match most messages!" msgstr "" -#: assistant\commands\admin.py:1222 +#: assistant\commands\admin.py:1569 msgid "Trigger phrase `{}` has been **Removed**" msgstr "" -#: assistant\commands\admin.py:1225 +#: assistant\commands\admin.py:1572 msgid "Trigger phrase `{}` has been **Added**" msgstr "" -#: assistant\commands\admin.py:1230 +#: assistant\commands\admin.py:1577 #, docstring msgid "\n" " Set the prompt to use when a trigger phrase is matched\n\n" @@ -1059,100 +1275,66 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1287 +#: assistant\commands\admin.py:1634 msgid "The trigger prompt has been removed!" msgstr "" -#: assistant\commands\admin.py:1290 +#: assistant\commands\admin.py:1637 msgid "Please include a trigger prompt or .txt file!\n" "Use `{}` to view details for this command" msgstr "" -#: assistant\commands\admin.py:1296 +#: assistant\commands\admin.py:1643 msgid "The trigger prompt has been overwritten!" msgstr "" -#: assistant\commands\admin.py:1299 +#: assistant\commands\admin.py:1646 msgid "Trigger prompt has been set!" msgstr "" -#: assistant\commands\admin.py:1307 +#: assistant\commands\admin.py:1656 #, docstring msgid "Ignore a channel or category for trigger phrases" msgstr "" -#: assistant\commands\admin.py:1318 +#: assistant\commands\admin.py:1667 msgid "Trigger phrases will no longer ignore {}" msgstr "" -#: assistant\commands\admin.py:1323 +#: assistant\commands\admin.py:1672 msgid "Trigger phrases will now ignore {}" msgstr "" -#: assistant\commands\admin.py:1329 +#: assistant\commands\admin.py:1678 #, docstring msgid "View configured trigger phrases" msgstr "" -#: assistant\commands\admin.py:1332 +#: assistant\commands\admin.py:1681 msgid "No trigger phrases configured!" msgstr "" -#: assistant\commands\admin.py:1335 +#: assistant\commands\admin.py:1684 msgid "Trigger Phrases" msgstr "" -#: assistant\commands\admin.py:1336 +#: assistant\commands\admin.py:1685 msgid "The following phrases will trigger a response:\n" msgstr "" -#: assistant\commands\admin.py:1342 +#: assistant\commands\admin.py:1691 msgid "Patterns" msgstr "" -#: assistant\commands\admin.py:1345 +#: assistant\commands\admin.py:1694 msgid "Status" msgstr "" -#: assistant\commands\admin.py:1352 +#: assistant\commands\admin.py:1701 msgid "Ignored Channels" msgstr "" -#: assistant\commands\admin.py:1358 -#, docstring -msgid "Switch vision resolution between high and low for relevant GPT-4-Turbo models" -msgstr "" - -#: assistant\commands\admin.py:1362 -msgid "Vision resolution has been set to **Low**" -msgstr "" - -#: assistant\commands\admin.py:1365 -msgid "Vision resolution has been set to **High**" -msgstr "" - -#: assistant\commands\admin.py:1368 -msgid "Vision resolution has been set to **Auto**" -msgstr "" - -#: assistant\commands\admin.py:1373 -#, docstring -msgid "Switch reasoning effort between none, minimal, low, medium, high, and xhigh\n\n" -" Not all models support every level. Unsupported levels are automatically mapped to the closest supported value.\n" -" - **none**: No reasoning (gpt-5.4 only, skipped for other models)\n" -" - **minimal**: Minimal reasoning (gpt-5 only, mapped to low for o-series)\n" -" - **low**: Low reasoning effort\n" -" - **medium**: Medium reasoning effort\n" -" - **high**: High reasoning effort\n" -" - **xhigh**: Maximum reasoning (gpt-5.4 only, mapped to high for other models)\n" -" " -msgstr "" - -#: assistant\commands\admin.py:1390 -msgid "Reasoning effort has been set to **{}**" -msgstr "" - -#: assistant\commands\admin.py:1395 +#: assistant\commands\admin.py:1707 #, docstring msgid "\n" " Set the prefix used to detect model thinking blocks\n\n" @@ -1161,29 +1343,29 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1417 +#: assistant\commands\admin.py:1729 msgid "Think tag prefix is already set to the default value." msgstr "" -#: assistant\commands\admin.py:1420 +#: assistant\commands\admin.py:1732 msgid "Think tag prefix reset to default:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1426 +#: assistant\commands\admin.py:1738 msgid "Think tag prefix cannot be empty." msgstr "" -#: assistant\commands\admin.py:1429 +#: assistant\commands\admin.py:1741 msgid "Think tag prefix is already set to that value." msgstr "" -#: assistant\commands\admin.py:1432 +#: assistant\commands\admin.py:1744 msgid "Think tag prefix has been set to:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1437 +#: assistant\commands\admin.py:1749 #, docstring msgid "\n" " Set the suffix used to detect model thinking blocks\n\n" @@ -1192,68 +1374,68 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1459 +#: assistant\commands\admin.py:1771 msgid "Think tag suffix is already set to the default value." msgstr "" -#: assistant\commands\admin.py:1462 +#: assistant\commands\admin.py:1774 msgid "Think tag suffix reset to default:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1468 +#: assistant\commands\admin.py:1780 msgid "Think tag suffix cannot be empty." msgstr "" -#: assistant\commands\admin.py:1471 +#: assistant\commands\admin.py:1783 msgid "Think tag suffix is already set to that value." msgstr "" -#: assistant\commands\admin.py:1474 +#: assistant\commands\admin.py:1786 msgid "Think tag suffix has been set to:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1479 +#: assistant\commands\admin.py:1791 #, docstring msgid "Toggle whether questions need to end with **__?__**" msgstr "Soruların **__?__** ile bitmesi gerekip gerekmediğini değiştirin" -#: assistant\commands\admin.py:1483 +#: assistant\commands\admin.py:1795 msgid "Questions will be answered regardless of if they end with **?**" msgstr "Sorular **?** ile bitse de bitmese de yanıtlanacaktır" -#: assistant\commands\admin.py:1486 +#: assistant\commands\admin.py:1798 msgid "Questions must end in **?** to be answered" msgstr "Soruların cevaplanabilmesi için **?** ile bitmesi gerekir" -#: assistant\commands\admin.py:1491 +#: assistant\commands\admin.py:1803 #, docstring msgid "Toggle whether the bot responds to mentions in any channel" msgstr "" -#: assistant\commands\admin.py:1495 +#: assistant\commands\admin.py:1807 msgid "The bot will no longer respond to mentions" msgstr "" -#: assistant\commands\admin.py:1498 +#: assistant\commands\admin.py:1810 msgid "The bot will now respond to mentions" msgstr "" -#: assistant\commands\admin.py:1503 +#: assistant\commands\admin.py:1815 #, docstring msgid "Toggle whether to ping the user on replies" msgstr "Yanıtlarda kullanıcıya ping atılıp atılmayacağını değiştir" -#: assistant\commands\admin.py:1507 +#: assistant\commands\admin.py:1819 msgid "Mentions are now **Disabled**" msgstr "Mansiyonlar artık **Devre Dışı**" -#: assistant\commands\admin.py:1510 +#: assistant\commands\admin.py:1822 msgid "Mentions are now **Enabled**" msgstr "Mansiyonlar artık **Etkin**" -#: assistant\commands\admin.py:1515 +#: assistant\commands\admin.py:1827 #, docstring msgid "\n" " Toggle collaborative conversations\n\n" @@ -1261,45 +1443,39 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1523 +#: assistant\commands\admin.py:1835 msgid "Collaborative conversations are now **Disabled**" msgstr "" -#: assistant\commands\admin.py:1526 +#: assistant\commands\admin.py:1838 msgid "Collaborative conversations are now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1556 +#: assistant\commands\admin.py:1843 #, docstring msgid "\n" " Set the max messages for a conversation\n\n" " Conversation retention is cached and gets reset when the bot restarts or the cog reloads.\n\n" " Regardless of this number, the initial prompt and internal system message are always included,\n" " this only applies to any conversation between the user and bot after that.\n\n" -" Set to 0 to disable conversation retention\n\n" +" Set to 0 for unlimited conversation retention\n\n" " **Note:** *actual message count may exceed the max retention during an API call*\n" " " -msgstr "\n" -"Bir konuşma için maksimum mesaj sayısını ayarlayın.\n\n" -"Konuşma saklama önbelleğe alınır ve bot yeniden başlatıldığında veya dişli yeniden yüklendiğinde sıfırlanır.\n\n" -"Bu sayıya bakılmaksızın, ilk istem ve dahili sistem mesajı her zaman dahil edilir,\n" -"bu sadece kullanıcı ve bot arasındaki herhangi bir konuşmadan sonra geçerlidir.\n\n" -"Görüşme saklama özelliğini devre dışı bırakmak için 0 olarak ayarlayın.\n\n" -"**Not:** *API çağrısı sırasında gerçek mesaj sayısı maksimum saklama süresini aşabilir* " - -#: assistant\commands\admin.py:1569 assistant\commands\admin.py:2981 +msgstr "" + +#: assistant\commands\admin.py:1856 assistant\commands\admin.py:4060 msgid "Max retention needs to be at least 0 or higher" msgstr "Maksimum tutma süresi en az 0 veya daha yüksek olmalıdır" -#: assistant\commands\admin.py:1573 -msgid "Conversation retention has been disabled" -msgstr "Görüşme saklama devre dışı bırakıldı" +#: assistant\commands\admin.py:1860 +msgid "Message retention is now **unlimited**" +msgstr "" -#: assistant\commands\admin.py:1575 +#: assistant\commands\admin.py:1862 msgid "Conversations can now retain up to **{}** messages" msgstr "Konuşmalar artık **{}** mesaja kadar saklanabilir" -#: assistant\commands\admin.py:1580 +#: assistant\commands\admin.py:1867 #, docstring msgid "\n" " Set the conversation expiration time\n\n" @@ -1313,19 +1489,59 @@ msgstr "\n" " bu sadece bundan sonra kullanıcı ve bot arasındaki herhangi bir konuşma için geçerlidir.\n\n" " Konuşmaları süresiz olarak veya bot yeniden başlatılana ya da dişli yeniden yüklenene kadar saklamak için 0 olarak ayarlayın " -#: assistant\commands\admin.py:1589 assistant\commands\admin.py:3004 +#: assistant\commands\admin.py:1876 assistant\commands\admin.py:4083 msgid "Max retention time needs to be at least 0 or higher" msgstr "Maksimum alıkoyma süresi en azından 0 veya daha yüksek olmalıdır" -#: assistant\commands\admin.py:1593 +#: assistant\commands\admin.py:1880 msgid "Conversations will be stored until the bot restarts or the cog is reloaded" msgstr "Konuşmalar, bot yeniden başlatılana veya dişli yeniden yüklenene kadar saklanacaktır" -#: assistant\commands\admin.py:1595 +#: assistant\commands\admin.py:1882 msgid "Conversations will be considered active for **{}** seconds" msgstr "Görüşmeler **{}** saniye boyunca aktif olarak kabul edilecektir" -#: assistant\commands\admin.py:1600 +#: assistant\commands\admin.py:1887 +#, docstring +msgid "\n" +" Set maximum tokens a convo can consume\n\n" +" Set to 0 for dynamic token usage\n\n" +" **Tips**\n" +" - Max tokens are a soft cap, sometimes messages can be a little over\n" +" - If you set max tokens too high the cog will auto-adjust to 100 less than the models natural cap\n" +" - Ideally set max to 500 less than that models maximum, to allow adequate responses\n\n" +" Using more than the model can handle will raise exceptions.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:1902 +msgid "The maximum amount of tokens sent in a payload will be {}.\n" +"*Note that models with token limits lower than this will still be trimmed*" +msgstr "Bir yük içinde gönderilen maksimum belirteç miktarı {} olacaktır.\n" +"*Belirteç sınırları bundan daha düşük olan modellerin yine de kırpılacağını unutmayın*" + +#: assistant\commands\admin.py:1907 +msgid "The maximum amount of tokens sent in a payload will be dynamic" +msgstr "" + +#: assistant\commands\admin.py:1913 +#, docstring +msgid "\n" +" Set the max response tokens the model can respond with\n\n" +" Set to 0 for response tokens to be dynamic\n" +" " +msgstr " Modelin yanıt verebileceği maksimum yanıt belirteçlerini ayarlayın\n\n" +" Yanıt belirteçlerinin dinamik olması için 0 olarak ayarlayın " + +#: assistant\commands\admin.py:1921 +msgid "The maximum amount of tokens in the models responses will be {}." +msgstr "Model yanıtlarındaki maksimum belirteç miktarı {} olacaktır." + +#: assistant\commands\admin.py:1923 +msgid "Response tokens will now be dynamic" +msgstr "Yanıt belirteçleri artık dinamik olacak" + +#: assistant\commands\admin.py:1929 #, docstring msgid "\n" " Set the temperature for the model (0.0 - 2.0)\n" @@ -1334,15 +1550,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1607 +#: assistant\commands\admin.py:1936 msgid "Temperature must be between **0.0** and **2.0**" msgstr "Sıcaklık **0.0** ile **2.0** arasında olmalıdır" -#: assistant\commands\admin.py:1612 +#: assistant\commands\admin.py:1941 msgid "Temperature has been set to **{}**" msgstr "Sıcaklık **{}** olarak ayarlandı" -#: assistant\commands\admin.py:1616 +#: assistant\commands\admin.py:1945 #, docstring msgid "\n" " Set the frequency penalty for the model (-2.0 to 2.0)\n" @@ -1351,15 +1567,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1623 +#: assistant\commands\admin.py:1952 msgid "Frequency penalty must be between **-2.0** and **2.0**" msgstr "" -#: assistant\commands\admin.py:1628 +#: assistant\commands\admin.py:1957 msgid "Frequency penalty has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1632 +#: assistant\commands\admin.py:1961 #, docstring msgid "\n" " Set the presence penalty for the model (-2.0 to 2.0)\n" @@ -1368,15 +1584,49 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1639 +#: assistant\commands\admin.py:1968 msgid "Presence penalty must be between **-2.0** and **2.0**" msgstr "" -#: assistant\commands\admin.py:1644 +#: assistant\commands\admin.py:1973 msgid "Presence penalty has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1648 +#: assistant\commands\admin.py:1977 +#, docstring +msgid "Switch vision resolution between high and low for relevant GPT-4-Turbo models" +msgstr "" + +#: assistant\commands\admin.py:1981 +msgid "Vision resolution has been set to **Low**" +msgstr "" + +#: assistant\commands\admin.py:1984 +msgid "Vision resolution has been set to **High**" +msgstr "" + +#: assistant\commands\admin.py:1987 +msgid "Vision resolution has been set to **Auto**" +msgstr "" + +#: assistant\commands\admin.py:1992 +#, docstring +msgid "Switch reasoning effort between none, minimal, low, medium, high, and xhigh\n\n" +" Not all models support every level. Unsupported levels are automatically mapped to the closest supported value.\n" +" - **none**: No reasoning (gpt-5.4 only, skipped for other models)\n" +" - **minimal**: Minimal reasoning (gpt-5 only, mapped to low for o-series)\n" +" - **low**: Low reasoning effort\n" +" - **medium**: Medium reasoning effort\n" +" - **high**: High reasoning effort\n" +" - **xhigh**: Maximum reasoning (gpt-5.4 only, mapped to high for other models)\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2009 +msgid "Reasoning effort has been set to **{}**" +msgstr "" + +#: assistant\commands\admin.py:2014 #, docstring msgid "\n" " Make the model more deterministic by setting a seed for the model.\n" @@ -1385,15 +1635,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1655 +#: assistant\commands\admin.py:2021 msgid "Seed must be a positive integer" msgstr "" -#: assistant\commands\admin.py:1659 +#: assistant\commands\admin.py:2025 msgid "The seed has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1663 +#: assistant\commands\admin.py:2032 #, docstring msgid "\n" " Refresh embedding weights\n\n" @@ -1402,47 +1652,43 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1676 +#: assistant\commands\admin.py:2045 msgid "{} embeddings have been updated" msgstr "{} katıştırmaları güncellendi" -#: assistant\commands\admin.py:1678 +#: assistant\commands\admin.py:2047 msgid "No embeddings needed to be refreshed" msgstr "Yerleştirmelerin yenilenmesine gerek yok" -#: assistant\commands\admin.py:1682 +#: assistant\commands\admin.py:2051 #, docstring msgid "Toggle whether GPT can call functions" msgstr "" -#: assistant\commands\admin.py:1686 +#: assistant\commands\admin.py:2055 msgid "Assistant will not call functions" msgstr "Asistan fonksiyonları çağırmayacak" -#: assistant\commands\admin.py:1689 +#: assistant\commands\admin.py:2058 msgid "Assistant will now call functions as needed" msgstr "Asistan artık gerektiğinde fonksiyonları çağıracak" -#: assistant\commands\admin.py:1694 +#: assistant\commands\admin.py:2063 #, docstring msgid "Set the maximum function calls allowed in a row\n\n" -" This sets how many times the model can call functions in a row\n\n" -" Only the following models can call functions at the moment\n" -" - gpt-4o-mini\n" -" - gpt-4o\n" -" - ect..\n" +" This sets how many times the model can call functions in a row\n" " " msgstr "" -#: assistant\commands\admin.py:1706 +#: assistant\commands\admin.py:2070 msgid "Function calls will not be used since recursion is 0" msgstr "Özyineleme 0 olduğu için fonksiyon çağrıları kullanılmayacaktır" -#: assistant\commands\admin.py:1708 +#: assistant\commands\admin.py:2072 msgid "The model can now call various functions up to {} times before returning a response" msgstr "Model artık bir yanıt döndürmeden önce çeşitli işlevleri {} defa çağırabilir" -#: assistant\commands\admin.py:1714 +#: assistant\commands\admin.py:2078 #, docstring msgid "\n" " set min character length for questions\n\n" @@ -1452,87 +1698,64 @@ msgstr "\n" " sorular için minimum karakter uzunluğunu ayarlayın\n\n" " Herhangi bir şeye yanıt vermek için 0 olarak ayarlayın " -#: assistant\commands\admin.py:1720 +#: assistant\commands\admin.py:2084 msgid "Minimum length needs to be at least 0 or higher" msgstr "Minimum uzunluğun en az 0 veya daha yüksek olması gerekir" -#: assistant\commands\admin.py:1724 +#: assistant\commands\admin.py:2088 msgid "{} will respond regardless of message length" msgstr "{} mesaj uzunluğuna bakılmaksızın yanıt verecektir" -#: assistant\commands\admin.py:1727 +#: assistant\commands\admin.py:2091 msgid "{} will respond to messages with more than **{}** characters" msgstr "{} **{}** karakterden daha fazla karakter içeren mesajlara yanıt verecektir" -#: assistant\commands\admin.py:1735 +#: assistant\commands\admin.py:2099 #, docstring msgid "\n" -" Set maximum tokens a convo can consume\n\n" -" Set to 0 for dynamic token usage\n\n" -" **Tips**\n" -" - Max tokens are a soft cap, sometimes messages can be a little over\n" -" - If you set max tokens too high the cog will auto-adjust to 100 less than the models natural cap\n" -" - Ideally set max to 500 less than that models maximum, to allow adequate responses\n\n" -" Using more than the model can handle will raise exceptions.\n" +" Set the chat model to use\n\n" +" Run without arguments to open an interactive picker that lists every\n" +" model your endpoint advertises, grouped by provider. The picker also\n" +" accepts manual entry - useful for router aliases like\n" +" `openrouter/auto` or `openrouter/free`.\n" " " msgstr "" -#: assistant\commands\admin.py:1750 -msgid "The maximum amount of tokens sent in a payload will be {}.\n" -"*Note that models with token limits lower than this will still be trimmed*" -msgstr "Bir yük içinde gönderilen maksimum belirteç miktarı {} olacaktır.\n" -"*Belirteç sınırları bundan daha düşük olan modellerin yine de kırpılacağını unutmayın*" - -#: assistant\commands\admin.py:1755 -msgid "The maximum amount of tokens sent in a payload will be dynamic" -msgstr "" - -#: assistant\commands\admin.py:1761 -#, docstring -msgid "\n" -" Set the max response tokens the model can respond with\n\n" -" Set to 0 for response tokens to be dynamic\n" -" " -msgstr " Modelin yanıt verebileceği maksimum yanıt belirteçlerini ayarlayın\n\n" -" Yanıt belirteçlerinin dinamik olması için 0 olarak ayarlayın " - -#: assistant\commands\admin.py:1769 -msgid "The maximum amount of tokens in the models responses will be {}." -msgstr "Model yanıtlarındaki maksimum belirteç miktarı {} olacaktır." - -#: assistant\commands\admin.py:1771 -msgid "Response tokens will now be dynamic" -msgstr "Yanıt belirteçleri artık dinamik olacak" - -#: assistant\commands\admin.py:1777 -#, docstring -msgid "\n" -" Set the OpenAI model to use\n" -" " +#: assistant\commands\admin.py:2121 +msgid "Could not probe `{}` to discover available models. Try setting a model id manually, e.g. `{}assistant set model openrouter/auto`." msgstr "" -#: assistant\commands\admin.py:1798 assistant\commands\admin.py:2910 +#: assistant\commands\admin.py:2146 assistant\commands\admin.py:3985 msgid "Error: {}" msgstr "" -#: assistant\commands\admin.py:1802 +#: assistant\commands\admin.py:2150 msgid "The **{}** model will now be used" msgstr "Artık **{}** modeli kullanılacaktır" -#: assistant\commands\admin.py:1809 +#: assistant\commands\admin.py:2157 msgid "**Note**: Starting with `o1-2024-12-17`, reasoning models in the API will avoid generating responses with markdown formatting. To signal to the model when you do want markdown formatting in the response, include the string `Formatting re-enabled` on the first line of your system message." msgstr "" -#: assistant\commands\admin.py:1818 +#: assistant\commands\admin.py:2166 #, docstring -msgid "Set the OpenAI Embedding model to use" +msgid "\n" +" Set the embedding model to use\n\n" +" Run without arguments to open an interactive picker that lists\n" +" every embedding model your endpoint advertises, grouped by provider.\n" +" Embeddings use the same endpoint as chat.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2192 +msgid "Could not probe `{}` to discover available embedding models. Try setting an id manually, e.g. `{}assistant embed model text-embedding-3-small`." msgstr "" -#: assistant\commands\admin.py:1836 +#: assistant\commands\admin.py:2217 msgid "The **{}** model will now be used for embeddings" msgstr "" -#: assistant\commands\admin.py:1845 +#: assistant\commands\admin.py:2225 #, docstring msgid "\n" " Wipe saved embeddings for the assistant\n\n" @@ -1542,15 +1765,15 @@ msgstr "\n" " Asistan için kaydedilmiş katıştırmaları silme\n\n" " Bu işlem asistan için kaydedilmiş tüm gömme eğitim verilerini silecektir " -#: assistant\commands\admin.py:1851 assistant\commands\admin.py:3257 +#: assistant\commands\admin.py:2231 assistant\commands\admin.py:4373 msgid "Not wiping embedding data" msgstr "Yerleştirme verilerini silmemek" -#: assistant\commands\admin.py:1855 +#: assistant\commands\admin.py:2235 msgid "All embedding data has been wiped!" msgstr "Tüm yerleştirme verileri silindi!" -#: assistant\commands\admin.py:1860 +#: assistant\commands\admin.py:2240 #, docstring msgid "\n" " Wipe saved conversations for the assistant in this server\n\n" @@ -1560,15 +1783,15 @@ msgstr "\n" "Bu sunucudaki asistan için kaydedilmiş konuşmaları silin\n\n" "Bu işlem asistan için kaydedilmiş tüm konuşmaları silecektir " -#: assistant\commands\admin.py:1866 assistant\commands\admin.py:3218 +#: assistant\commands\admin.py:2246 assistant\commands\admin.py:4334 msgid "Not wiping conversations" msgstr "Konuşmaları silmemek" -#: assistant\commands\admin.py:1870 +#: assistant\commands\admin.py:2250 msgid "Conversations have been wiped in this server!" msgstr "Bu sunucuda konuşmalar silindi!" -#: assistant\commands\admin.py:1875 +#: assistant\commands\admin.py:2255 #, docstring msgid "\n" " Set the embedding inclusion amout\n\n" @@ -1576,19 +1799,19 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1881 +#: assistant\commands\admin.py:2261 msgid "Top N must be between 0 and 10" msgstr "Üst N 0 ile 10 arasında olmalıdır" -#: assistant\commands\admin.py:1885 +#: assistant\commands\admin.py:2265 msgid "Embeddings will not be pulled during conversations" msgstr "Yerleştirmeler konuşmalar sırasında çekilmeyecek" -#: assistant\commands\admin.py:1887 +#: assistant\commands\admin.py:2267 msgid "Up to **{}** embeddings will be pulled for each interaction" msgstr "Her etkileşim için **{}** adede kadar gömme çekilecektir" -#: assistant\commands\admin.py:1892 +#: assistant\commands\admin.py:2272 #, docstring msgid "\n" " Set the minimum relatedness an embedding must be to include with the prompt\n\n" @@ -1602,32 +1825,32 @@ msgstr "\n" " Sorular gömülere dönüştürülür ve en alakalı olanları çekmek için depolanan gömülerle karşılaştırılır, bu karşılaştırmadan elde edilen puandır\n\n" " **İpucu**: 1'e ne kadar yaklaşırsanız, sonuçlar o kadar deterministik ve doğru olabilir, sadece *çok katı* olmayın, aksi takdirde herhangi bir sonuç olmayacaktır " -#: assistant\commands\admin.py:1902 +#: assistant\commands\admin.py:2282 msgid "Minimum relatedness must be between 0 and 1" msgstr "Minimum akrabalık 0 ile 1 arasında olmalıdır" -#: assistant\commands\admin.py:1905 +#: assistant\commands\admin.py:2285 msgid "Minimum relatedness has been set to **{}**" msgstr "Minimum akrabalık **{}** olarak ayarlanmıştır" -#: assistant\commands\admin.py:1910 +#: assistant\commands\admin.py:2290 #, docstring msgid "Remove certain words/phrases in the bot's responses" msgstr "Bot'un yanıtlarında belirli kelimeleri/ifadeleri kaldırın" -#: assistant\commands\admin.py:1914 +#: assistant\commands\admin.py:2294 msgid "That regex is invalid" msgstr "Bu regex geçersizdir" -#: assistant\commands\admin.py:1918 +#: assistant\commands\admin.py:2298 msgid "`{}` has been **Removed** from the blacklist" msgstr "`{}` kara listeden **Çıkarıldı**" -#: assistant\commands\admin.py:1921 +#: assistant\commands\admin.py:2301 msgid "`{}` has been **Added** to the blacklist" msgstr "`{}` kara listeye **Eklendi**" -#: assistant\commands\admin.py:1926 +#: assistant\commands\admin.py:2306 #, docstring msgid "\n" " Toggle whether failed regex blocks the assistant's reply\n\n" @@ -1639,15 +1862,15 @@ msgstr "\n" " Bazı regexler [felaket bir şekilde geri izleme](https://www.rexegg.com/regex-explosive-quantifiers.html)'ye neden olabilir\n" " Bot bu durumda güvenli bir şekilde işlem yapabilir ve ya devam eder ya da yanıtı engeller " -#: assistant\commands\admin.py:1935 +#: assistant\commands\admin.py:2315 msgid "If a regex blacklist fails, the bots reply will be blocked" msgstr "Eğer bir regex kara listesi başarısız olursa, botların yanıtı engellenir" -#: assistant\commands\admin.py:1938 +#: assistant\commands\admin.py:2318 msgid "If a reges blacklist fails, the bot will still reply" msgstr "Bir reges kara listesi başarısız olursa, bot yine de yanıt verecektir" -#: assistant\commands\admin.py:1943 +#: assistant\commands\admin.py:2323 #, docstring msgid "\n" " Toggle question mode\n\n" @@ -1655,15 +1878,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1951 +#: assistant\commands\admin.py:2331 msgid "Question mode is now **Disabled**" msgstr "" -#: assistant\commands\admin.py:1954 +#: assistant\commands\admin.py:2334 msgid "Question mode is now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1959 +#: assistant\commands\admin.py:2339 #, docstring msgid "Import embeddings to use with the assistant\n\n" " Args:\n" @@ -1675,360 +1898,978 @@ msgstr "Asistan ile kullanmak için katıştırmaları içe aktarın\n\n" " overwrite (bool): mevcut giriş adlarıyla katıştırmaları üzerine yaz\n\n" " Bu ayrıca excel dosyalarını okuyacak " -#: assistant\commands\admin.py:1972 +#: assistant\commands\admin.py:2352 msgid "You must attach **.csv** files to this command or reference a message that has them!" msgstr "Bu komuta **.csv** dosyaları eklemeli veya bu dosyaları içeren bir mesaja referans vermelisiniz!" -#: assistant\commands\admin.py:1985 assistant\commands\admin.py:2062 -#: assistant\commands\admin.py:2122 +#: assistant\commands\admin.py:2365 assistant\commands\admin.py:2442 +#: assistant\commands\admin.py:2505 msgid "Error reading **{}**: {}" msgstr "**{}** okunurken hata oluştu: {}" -#: assistant\commands\admin.py:1990 +#: assistant\commands\admin.py:2370 msgid "**{}** contains invalid formatting, columns must be " msgstr "**{}** geçersiz biçimlendirme içeriyor, sütunlar şu şekilde olmalıdır " -#: assistant\commands\admin.py:1998 +#: assistant\commands\admin.py:2378 msgid "There are no valid files to import!" msgstr "İçe aktırılacak geçerli dosya bulunmamaktadır!" -#: assistant\commands\admin.py:2000 assistant\commands\admin.py:2137 +#: assistant\commands\admin.py:2380 assistant\commands\admin.py:2520 msgid "Processing the following files in the background\n" "{}" msgstr "Arka planda aşağıdaki dosyalar işleniyor\n" "{}" -#: assistant\commands\admin.py:2014 assistant\commands\admin.py:2148 +#: assistant\commands\admin.py:2394 assistant\commands\admin.py:2531 msgid "processing" msgstr "işleme" -#: assistant\commands\admin.py:2016 assistant\commands\admin.py:2150 +#: assistant\commands\admin.py:2396 assistant\commands\admin.py:2533 msgid "overwriting" msgstr "üzerine yazma" -#: assistant\commands\admin.py:2024 assistant\commands\admin.py:2158 +#: assistant\commands\admin.py:2404 assistant\commands\admin.py:2541 msgid "{}\n" "`Currently {}: `**{}** ({}/{})" msgstr "{}\n" "`Şu anda {}: `**{}** ({}/{})" -#: assistant\commands\admin.py:2030 assistant\commands\admin.py:2165 +#: assistant\commands\admin.py:2410 assistant\commands\admin.py:2551 msgid "Failed to process embedding: `{}`" msgstr "Gömme işlemi başarısız oldu: `{}`" -#: assistant\commands\admin.py:2035 assistant\commands\admin.py:2178 -#: assistant\commands\admin.py:2182 +#: assistant\commands\admin.py:2415 assistant\commands\admin.py:2564 +#: assistant\commands\admin.py:2568 msgid "{}\n" "**COMPLETE**" msgstr "{}\n" "**TAMAMLANDI**" -#: assistant\commands\admin.py:2036 assistant\commands\admin.py:2179 -msgid "Successfully imported {} embeddings!" -msgstr "{} katıştırmaları başarıyla içe aktarıldı!" +#: assistant\commands\admin.py:2416 assistant\commands\admin.py:2565 +msgid "Successfully imported {} embeddings!" +msgstr "{} katıştırmaları başarıyla içe aktarıldı!" + +#: assistant\commands\admin.py:2421 +#, docstring +msgid "Import embeddings to use with the assistant\n\n" +" Args:\n" +" overwrite (bool): overwrite embeddings with existing entry names\n" +" " +msgstr "Asistan ile kullanmak için katıştırmaları içe aktarın\n\n" +" Args:\n" +" overwrite (bool): mevcut giriş adlarıyla katıştırmaların üzerine yazın " + +#: assistant\commands\admin.py:2430 assistant\commands\admin.py:4318 +msgid "You must attach **.json** files to this command or reference a message that has them!" +msgstr "Bu komuta **.json** dosyalarını eklemeli veya bu dosyaları içeren bir mesaja referans vermelisiniz!" + +#: assistant\commands\admin.py:2469 +msgid "Failed to import **{}** because it contains invalid formatting!" +msgstr "Geçersiz biçimlendirme içerdiği için **{}** içe aktarılamadı!" + +#: assistant\commands\admin.py:2474 +msgid "Imported the following files: `{}`\n" +"{} embeddings imported" +msgstr "Aşağıdaki dosyalar içe aktarıldı: `{}`\n" +"{} gömüler içe aktarıldı" + +#: assistant\commands\admin.py:2482 +#, docstring +msgid "Import embeddings from an .xlsx file\n\n" +" Args:\n" +" overwrite (bool): overwrite embeddings with existing entry names\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2491 +msgid "You must attach **.xlsx** files to this command or reference a message that has them!" +msgstr "" + +#: assistant\commands\admin.py:2512 +msgid "{} is invalid! Must contain the following columns: {}" +msgstr "" + +#: assistant\commands\admin.py:2569 +msgid "No embeddings needed to be updated!" +msgstr "" + +#: assistant\commands\admin.py:2574 +#, docstring +msgid "\n" +" Export embeddings to an .xlsx file\n\n" +" **Note:** csv exports do not include the embedding values\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2581 assistant\commands\admin.py:2627 +#: assistant\commands\admin.py:2671 +msgid "There are no embeddings to export!" +msgstr "Dışa aktarılacak gömme yok!" + +#: assistant\commands\admin.py:2621 +#, docstring +msgid "Export embeddings to a .csv file\n\n" +" **Note:** csv exports do not include the embedding values\n" +" " +msgstr "Yerleştirmeleri bir .csv dosyasına aktarın\n\n" +" **Not:** csv dışa aktarımları gömme değerlerini içermez " + +#: assistant\commands\admin.py:2640 assistant\commands\admin.py:2660 +#: assistant\commands\admin.py:2679 assistant\commands\admin.py:2699 +#: assistant\commands\admin.py:4304 +msgid "Here is your embeddings export!" +msgstr "İşte yerleştirmelerinizin dışa aktarımı!" + +#: assistant\commands\admin.py:2643 assistant\commands\admin.py:2682 +#: assistant\commands\admin.py:4286 +msgid "File too large, attempting to compress..." +msgstr "Dosya çok büyük, sıkıştırılmaya çalışılıyor..." + +#: assistant\commands\admin.py:2663 assistant\commands\admin.py:2702 +#: assistant\commands\admin.py:4307 +msgid "File is still too large even with compression!" +msgstr "Dosya sıkıştırma ile bile hala çok büyük!" + +#: assistant\commands\admin.py:2668 +#, docstring +msgid "Export embeddings to a json file" +msgstr "Yerleştirmeleri bir json dosyasına aktarın" + +#: assistant\commands\admin.py:2710 +#, docstring +msgid "\n" +" Manage embeddings for training\n\n" +" Embeddings are used to optimize training of the assistant and minimize token usage.\n\n" +" By using this the bot can store vast amounts of contextual information without going over the token limit.\n\n" +" **Note**\n" +" You can enter a search query with this command to bring up the menu and go directly to that embedding selection.\n" +" " +msgstr "\n" +" Eğitim için yerleştirmeleri yönetme\n\n" +" Yerleştirmeler, asistanın eğitimini optimize etmek ve belirteç kullanımını en aza indirmek için kullanılır.\n\n" +" Bunu kullanarak bot, token sınırını aşmadan büyük miktarda bağlamsal bilgi depolayabilir.\n\n" +" **Not**\n" +" Bu komutla bir arama sorgusu girerek menüyü getirebilir ve doğrudan o yerleştirme seçimine gidebilirsiniz " + +#: assistant\commands\admin.py:2760 +#, docstring +msgid "\n" +" Add custom function calls for Assistant to use\n\n" +" **READ**\n" +" - [Function Call Docs](https://platform.openai.com/docs/guides/gpt/function-calling)\n" +" - [OpenAI Cookbook](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_call_functions_with_chat_models.ipynb)\n" +" - [JSON Schema Reference](https://json-schema.org/understanding-json-schema/)\n\n" +" The following objects are passed by default as keyword arguments.\n" +" - **user**: the user currently chatting with the bot (discord.Member)\n" +" - **channel**: channel the user is chatting in (TextChannel|Thread|ForumChannel)\n" +" - **guild**: current guild (discord.Guild)\n" +" - **bot**: the bot object (Red)\n" +" - **conf**: the config model for Assistant (GuildSettings)\n" +" - All functions **MUST** include `*args, **kwargs` in the params and return a string\n" +" ```python\n" +" # Can be either sync or async\n" +" async def func(*args, **kwargs) -> str:\n" +" ```\n" +" Only bot owner can manage this, guild owners can see descriptions but not code\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2800 +#, docstring +msgid "List custom prompt context variables registered by other cogs." +msgstr "" + +#: assistant\commands\admin.py:2802 +msgid "3rd party docs: {}" +msgstr "" + +#: assistant\commands\admin.py:2804 +msgid "No custom context variables have been registered yet!\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:2818 +msgid "Custom Variables" +msgstr "" + +#: assistant\commands\admin.py:2823 +msgid "Page {}/{} | {} variables" +msgstr "" + +#: assistant\commands\admin.py:2836 +#, docstring +msgid "\n" +" List all available functions and their enabled/disabled status\n\n" +" This provides a quick overview of all custom functions and 3rd party\n" +" registered functions without having to navigate through the full menu.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2849 assistant\commands\admin.py:3142 +#: assistant\commands\admin.py:3198 assistant\commands\admin.py:3295 +msgid "No functions have been registered yet!" +msgstr "" + +#: assistant\commands\admin.py:2876 +msgid "Function List" +msgstr "" + +#: assistant\commands\admin.py:2881 +msgid "Page {}/{} | {} enabled, {} disabled" +msgstr "" + +#: assistant\commands\admin.py:2897 +#, docstring +msgid "Open the mobile-friendly AI tools manager." +msgstr "" + +#: assistant\commands\admin.py:2905 +#, docstring +msgid "Open the floating context block manager.\n\n" +" Toggled variables are appended to a trailing payload-only user\n" +" message after conversation history. Because that message rides\n" +" after the cached prefix, putting dynamic (per-request) values\n" +" there keeps the prompt prefix stable across requests so\n" +" provider-side prompt caching can hit.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2920 +#, docstring +msgid "Show prompt-cache stats from the most recent API call." +msgstr "" + +#: assistant\commands\admin.py:2924 +msgid "No cache stats yet - make a request first." +msgstr "" + +#: assistant\commands\admin.py:2928 +msgid "Unknown" +msgstr "" + +#: assistant\commands\admin.py:2932 +msgid "Last API call: **{cached}**/**{total}** prompt tokens cached ({pct:.0f}%) · **{write}** cache-write tokens · model `{model}`" +msgstr "" + +#: assistant\commands\admin.py:2948 +msgid "\n" +"💡 This model requires at least **{min_tokens}** prompt tokens before the provider will cache. Your prompt was only **{total}** tokens - below the threshold, so no cache write or read occurred. A longer system prompt, more conversation history, or enabling variables in the `[p]floatingcontext` block will push it over." +msgstr "" + +#: assistant\commands\admin.py:2963 +msgid "\n" +"ℹ️ This provider uses automatic prompt caching. A **0** cache-write count does not necessarily mean caching is disabled, because some automatic-cache providers do not charge for or clearly expose cache writes. The more useful signal is whether similar follow-up turns start showing non-zero cached tokens. Also note that the relevant threshold is the repeated stable prefix, not the full prompt length, so a large request can still miss if most of its tokens are in the changing tail of the payload." +msgstr "" + +#: assistant\commands\admin.py:2978 +msgid "\n" +"ℹ️ `gpt-oss` is a reasoning model running over Chat Completions. Cache reuse can be weaker than on non-reasoning chat models because not all reasoning state is preserved between turns." +msgstr "" + +#: assistant\commands\admin.py:2988 +msgid "\n" +"⚠️ **Cache writes occurred but no reads.** This means the provider cached your prompt prefix, but the next request didn't match it - the prefix changed between calls. Common causes include dynamic variables like `{{time}}`, `{{date}}`, or `{{username}}` being substituted into your prompt prefix, per-turn context being injected before the cacheable tail, or tool definitions changing between calls. Use `[p]floatingcontext` to move dynamic context out of the prompt prefix." +msgstr "" + +#: assistant\commands\admin.py:3004 +#, docstring +msgid "Enable OpenRouter response caching (Mode A)." +msgstr "" + +#: assistant\commands\admin.py:3008 +msgid "OpenRouter response caching **enabled** (TTL: {}s)." +msgstr "" + +#: assistant\commands\admin.py:3012 +#, docstring +msgid "Disable OpenRouter response caching (Mode A)." +msgstr "" + +#: assistant\commands\admin.py:3016 +msgid "OpenRouter response caching **disabled**." +msgstr "" + +#: assistant\commands\admin.py:3020 +#, docstring +msgid "Set the OpenRouter response cache TTL in seconds (1–86400)." +msgstr "" + +#: assistant\commands\admin.py:3022 +msgid "TTL must be between 1 and 86400 seconds (24 hours)." +msgstr "" + +#: assistant\commands\admin.py:3026 +msgid "OpenRouter response cache TTL set to **{}** seconds." +msgstr "" + +#: assistant\commands\admin.py:3030 +#, docstring +msgid "Set the OpenRouter provider prompt cache TTL.\n\n" +" Choices: `off`, `5m`, `1h`. Applies to Anthropic / Gemini / Qwen\n" +" models routed via OpenRouter.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3037 +msgid "Mode must be one of: `off`, `5m`, `1h`." +msgstr "" + +#: assistant\commands\admin.py:3041 +msgid "OpenRouter provider prompt cache set to **{}**." +msgstr "" + +#: assistant\commands\admin.py:3050 +#, docstring +msgid "Configure OpenRouter provider routing and model slug preferences." +msgstr "" + +#: assistant\commands\admin.py:3055 +#, docstring +msgid "Show current OpenRouter provider routing settings." +msgstr "" + +#: assistant\commands\admin.py:3059 +msgid "not set" +msgstr "" + +#: assistant\commands\admin.py:3062 +msgid "not set (OR default)" +msgstr "" + +#: assistant\commands\admin.py:3064 +msgid "OpenRouter Provider Settings" +msgstr "" + +#: assistant\commands\admin.py:3065 +msgid "Model suffix" +msgstr "" + +#: assistant\commands\admin.py:3066 +msgid "Allow fallbacks" +msgstr "" + +#: assistant\commands\admin.py:3067 +msgid "Provider order" +msgstr "" + +#: assistant\commands\admin.py:3068 +msgid "Tip: `providers Fireworks` + `fallbacks false` hard-pins to that provider." +msgstr "" + +#: assistant\commands\admin.py:3073 +#, docstring +msgid "Set a guild-wide model slug suffix applied to every OpenRouter request.\n\n" +" Valid values: `:nitro` (throughput priority), `:floor` (price priority),\n" +" `:extended`, `clear` (remove suffix).\n" +" The suffix is appended after model resolution and replaces any per-model suffix.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3083 +msgid "OpenRouter model suffix cleared." +msgstr "" + +#: assistant\commands\admin.py:3086 +msgid "Invalid suffix `{}`. Valid: {}." +msgstr "" + +#: assistant\commands\admin.py:3090 +msgid "OpenRouter model suffix set to `{}`." +msgstr "" + +#: assistant\commands\admin.py:3094 +#, docstring +msgid "Set the ordered list of providers OpenRouter should use (space-separated).\n\n" +" Pass `clear` to reset. Combined with `fallbacks false` this hard-pins routing\n" +" to only the listed providers in order.\n" +" Example: `providers Fireworks Together`\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3104 +msgid "OpenRouter provider list cleared." +msgstr "" + +#: assistant\commands\admin.py:3108 +msgid "OpenRouter will try providers in order: {}." +msgstr "" + +#: assistant\commands\admin.py:3113 +#, docstring +msgid "Set whether OpenRouter may fall back to other providers.\n\n" +" Values: `true`, `false`, `clear` (restore OR default which is true).\n" +" Set to `false` with `providers` to hard-pin routing to those providers only.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3123 +msgid "OpenRouter fallbacks reset to OR default (enabled)." +msgstr "" + +#: assistant\commands\admin.py:3125 +msgid "Value must be `true`, `false`, or `clear`." +msgstr "" + +#: assistant\commands\admin.py:3128 +msgid "OpenRouter fallbacks set to `{}`." +msgstr "" + +#: assistant\commands\admin.py:3135 +#, docstring +msgid "List tool categories and their current enabled state." +msgstr "" + +#: assistant\commands\admin.py:3161 +msgid "Tool Categories" +msgstr "" + +#: assistant\commands\admin.py:3166 +msgid "Page {}/{} | {} enabled of {} total" +msgstr "" + +#: assistant\commands\admin.py:3191 +#, docstring +msgid "Enable or disable all tools in one or more categories." +msgstr "" + +#: assistant\commands\admin.py:3208 +msgid "No valid category names provided!" +msgstr "" + +#: assistant\commands\admin.py:3213 +msgid "The following categories do not exist: {}" +msgstr "" + +#: assistant\commands\admin.py:3235 +msgid "{} **Enabled Categories** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3243 +msgid "{} **Disabled Categories** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3266 +#, docstring +msgid "\n" +" Enable or disable multiple functions at once\n\n" +" **Arguments**\n" +" - `enable`: True to enable, False to disable. Omit to toggle current state.\n" +" - `functions`: Comma-separated list of function names, or \"all\" to affect all functions\n\n" +" **Examples**\n" +" - `[p]togglefunctions get_time, get_weather` - Toggle these functions\n" +" - `[p]togglefunctions True all` - Enable all functions\n" +" - `[p]togglefunctions False get_time, get_weather` - Disable specific functions\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3305 +msgid "No valid function names provided!" +msgstr "" + +#: assistant\commands\admin.py:3311 +msgid "The following functions do not exist: {}" +msgstr "" + +#: assistant\commands\admin.py:3337 +msgid "✅ **Enabled** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3344 +msgid "❌ **Disabled** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3440 +#, docstring +msgid "\n" +" Add/Remove items from the blacklist\n\n" +" `channel_role_member` can be a member, role, channel, or category channel\n" +" " +msgstr "\n" +" Kara listeden öğe ekleme/kaldırma\n\n" +" `channel_role_member` bir üye, rol, kanal veya kategori kanalı olabilir\n" +" " + +#: assistant\commands\admin.py:3448 +msgid "{} has been removed from the blacklist" +msgstr "{} kara listeden çıkarıldı" + +#: assistant\commands\admin.py:3451 +msgid "{} has been added to the blacklist" +msgstr "{} kara listeye eklendi" + +#: assistant\commands\admin.py:3464 +#, docstring +msgid "\n" +" Add/Remove items from the planner list, or view current planners.\n\n" +" Users/roles in the planner list can use the `think_and_plan` tool for complex task breakdown.\n\n" +" If the planner list is empty, everyone can use the planning tool.\n" +" If the planner list has entries, only those users/roles can use it.\n\n" +" `role_or_member` can be a member or role. Omit to view the current list.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3479 +msgid "The planner list is empty. Everyone can use the `think_and_plan` tool." +msgstr "" + +#: assistant\commands\admin.py:3484 +msgid "**Planners:** {}" +msgstr "" + +#: assistant\commands\admin.py:3486 +msgid "The planner list has invalid entries. Consider clearing it." +msgstr "" + +#: assistant\commands\admin.py:3491 +msgid "{} has been removed from the planner list" +msgstr "" + +#: assistant\commands\admin.py:3494 +msgid "{} has been added to the planner list" +msgstr "" + +#: assistant\commands\admin.py:3500 +msgid "**{}:** empty" +msgstr "" + +#: assistant\commands\admin.py:3506 +msgid "**{}:** {}" +msgstr "" + +#: assistant\commands\admin.py:3510 +#, docstring +msgid "Show the current smartmod configuration." +msgstr "" + +#: assistant\commands\admin.py:3517 +msgid "`Enabled: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3518 +msgid "`Report channel:`{}\n" +msgstr "" + +#: assistant\commands\admin.py:3519 +msgid "`OpenAI key: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3519 +msgid "OK" +msgstr "" + +#: assistant\commands\admin.py:3519 +msgid "Missing" +msgstr "" + +#: assistant\commands\admin.py:3520 +msgid "`Review model: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3520 +msgid "(default)" +msgstr "" + +#: assistant\commands\admin.py:3521 +msgid "`Context: `{} before / {} after\n" +msgstr "" + +#: assistant\commands\admin.py:3522 +msgid "`Panel timeout: `{}s\n" +msgstr "" + +#: assistant\commands\admin.py:3523 +msgid "`Auto-action: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3524 +msgid "`Exempt staff: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3525 +msgid "`Staff ping: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3526 +msgid "`Blacklist: `{} items\n" +msgstr "" + +#: assistant\commands\admin.py:3527 +msgid "`Whitelist: `{} items\n" +msgstr "" + +#: assistant\commands\admin.py:3528 +msgid "`Triggers: `{} phrases" +msgstr "" + +#: assistant\commands\admin.py:3530 +msgid "Smartmod (AI Moderation)" +msgstr "" + +#: assistant\commands\admin.py:3535 +#, docstring +msgid "Enable or disable AI moderation. Omit the state to flip it." +msgstr "" + +#: assistant\commands\admin.py:3541 +msgid "\n" +"⚠️ No OpenAI key for the scan. Set one with `{p}assistant smartmod key`." +msgstr "" + +#: assistant\commands\admin.py:3545 +msgid "\n" +"⚠️ No report channel set. Set one with `{p}assistant smartmod channel`." +msgstr "" + +#: assistant\commands\admin.py:3548 +msgid "Smartmod is now **{}**." +msgstr "" + +#: assistant\commands\admin.py:3548 +msgid "enabled" +msgstr "" + +#: assistant\commands\admin.py:3548 +msgid "disabled" +msgstr "" + +#: assistant\commands\admin.py:3553 +#, docstring +msgid "Set the channel where moderation proposals are posted. Omit to clear." +msgstr "" + +#: assistant\commands\admin.py:3556 +msgid "set to {}" +msgstr "" + +#: assistant\commands\admin.py:3556 +msgid "cleared" +msgstr "" -#: assistant\commands\admin.py:2041 +#: assistant\commands\admin.py:3557 +msgid "Report channel {}." +msgstr "" + +#: assistant\commands\admin.py:3562 #, docstring -msgid "Import embeddings to use with the assistant\n\n" -" Args:\n" -" overwrite (bool): overwrite embeddings with existing entry names\n" +msgid "Set the smartmod review model (empty = use the server's default chat model).\n\n" +" Run with no model to open the interactive model picker — endpoint-discovered models when a\n" +" custom endpoint is set, otherwise the built-in OpenAI list.\n" " " -msgstr "Asistan ile kullanmak için katıştırmaları içe aktarın\n\n" -" Args:\n" -" overwrite (bool): mevcut giriş adlarıyla katıştırmaların üzerine yazın " +msgstr "" -#: assistant\commands\admin.py:2050 assistant\commands\admin.py:3202 -msgid "You must attach **.json** files to this command or reference a message that has them!" -msgstr "Bu komuta **.json** dosyalarını eklemeli veya bu dosyaları içeren bir mesaja referans vermelisiniz!" +#: assistant\commands\admin.py:3571 +msgid "Review model set to `{}`." +msgstr "" -#: assistant\commands\admin.py:2086 -msgid "Failed to import **{}** because it contains invalid formatting!" -msgstr "Geçersiz biçimlendirme içerdiği için **{}** içe aktarılamadı!" +#: assistant\commands\admin.py:3582 +msgid "Could not probe `{}` to discover models. Set one manually with `{}assistant smartmod model `." +msgstr "" -#: assistant\commands\admin.py:2091 -msgid "Imported the following files: `{}`\n" -"{} embeddings imported" -msgstr "Aşağıdaki dosyalar içe aktarıldı: `{}`\n" -"{} gömüler içe aktarıldı" +#: assistant\commands\admin.py:3602 +msgid "The review model uses the server's default chat model unless set. Valid OpenAI models:\n" +"{}\n" +"Set one with `{}assistant smartmod model `." +msgstr "" -#: assistant\commands\admin.py:2099 +#: assistant\commands\admin.py:3610 #, docstring -msgid "Import embeddings from an .xlsx file\n\n" -" Args:\n" -" overwrite (bool): overwrite embeddings with existing entry names\n" +msgid "Set the moderation review prompt.\n\n" +" Supports the {flagged_categories} placeholder plus the same standard prompt variables\n" +" as the main system prompt (server name, channel name, display name, custom cog\n" +" variables, etc.).\n\n" +" Run with no text to view the current prompt. Use `defaultprompt` to grab the built-in\n" +" default to customize, and `resetprompt` to restore it.\n" " " msgstr "" -#: assistant\commands\admin.py:2108 -msgid "You must attach **.xlsx** files to this command or reference a message that has them!" +#: assistant\commands\admin.py:3622 +msgid "Current moderation prompt (edit and re-set with `{p}assistant smartmod prompt `):" msgstr "" -#: assistant\commands\admin.py:2129 -msgid "{} is invalid! Must contain the following columns: {}" +#: assistant\commands\admin.py:3629 +msgid "Moderation prompt updated." msgstr "" -#: assistant\commands\admin.py:2183 -msgid "No embeddings needed to be updated!" +#: assistant\commands\admin.py:3634 +#, docstring +msgid "Get the built-in default moderation prompt to copy and customize." +msgstr "" + +#: assistant\commands\admin.py:3636 +msgid "Default moderation prompt - copy, edit, then set with `{p}assistant smartmod prompt `:" msgstr "" -#: assistant\commands\admin.py:2188 +#: assistant\commands\admin.py:3644 #, docstring -msgid "\n" -" Export embeddings to an .xlsx file\n\n" -" **Note:** csv exports do not include the embedding values\n" -" " +msgid "Reset the moderation review prompt to the built-in default." msgstr "" -#: assistant\commands\admin.py:2195 assistant\commands\admin.py:2241 -#: assistant\commands\admin.py:2285 -msgid "There are no embeddings to export!" -msgstr "Dışa aktarılacak gömme yok!" +#: assistant\commands\admin.py:3647 +msgid "Moderation prompt reset to default." +msgstr "" -#: assistant\commands\admin.py:2235 +#: assistant\commands\admin.py:3652 #, docstring -msgid "Export embeddings to a .csv file\n\n" -" **Note:** csv exports do not include the embedding values\n" +msgid "Set a category's flag threshold (0.0-1.0), e.g. `harassment 0.4`.\n\n" +" Run with no arguments to list every moderation category and its current threshold.\n" " " -msgstr "Yerleştirmeleri bir .csv dosyasına aktarın\n\n" -" **Not:** csv dışa aktarımları gömme değerlerini içermez " +msgstr "" -#: assistant\commands\admin.py:2254 assistant\commands\admin.py:2274 -#: assistant\commands\admin.py:2293 assistant\commands\admin.py:2313 -#: assistant\commands\admin.py:3188 -msgid "Here is your embeddings export!" -msgstr "İşte yerleştirmelerinizin dışa aktarımı!" +#: assistant\commands\admin.py:3661 +msgid "Set one with `{p}assistant smartmod threshold <0.0-1.0>`:\n" +"{box}" +msgstr "" -#: assistant\commands\admin.py:2257 assistant\commands\admin.py:2296 -#: assistant\commands\admin.py:3170 -msgid "File too large, attempting to compress..." -msgstr "Dosya çok büyük, sıkıştırılmaya çalışılıyor..." +#: assistant\commands\admin.py:3669 +msgid "Unknown category. Valid categories:\n" +"{}" +msgstr "" -#: assistant\commands\admin.py:2277 assistant\commands\admin.py:2316 -#: assistant\commands\admin.py:3191 -msgid "File is still too large even with compression!" -msgstr "Dosya sıkıştırma ile bile hala çok büyük!" +#: assistant\commands\admin.py:3672 +msgid "Value must be between 0.0 and 1.0." +msgstr "" -#: assistant\commands\admin.py:2282 -#, docstring -msgid "Export embeddings to a json file" -msgstr "Yerleştirmeleri bir json dosyasına aktarın" +#: assistant\commands\admin.py:3675 +msgid "Threshold for `{}` set to `{}`." +msgstr "" -#: assistant\commands\admin.py:2324 +#: assistant\commands\admin.py:3680 #, docstring -msgid "\n" -" Manage embeddings for training\n\n" -" Embeddings are used to optimize training of the assistant and minimize token usage.\n\n" -" By using this the bot can store vast amounts of contextual information without going over the token limit.\n\n" -" **Note**\n" -" You can enter a search query with this command to bring up the menu and go directly to that embedding selection.\n" -" " -msgstr "\n" -" Eğitim için yerleştirmeleri yönetme\n\n" -" Yerleştirmeler, asistanın eğitimini optimize etmek ve belirteç kullanımını en aza indirmek için kullanılır.\n\n" -" Bunu kullanarak bot, token sınırını aşmadan büyük miktarda bağlamsal bilgi depolayabilir.\n\n" -" **Not**\n" -" Bu komutla bir arama sorgusu girerek menüyü getirebilir ve doğrudan o yerleştirme seçimine gidebilirsiniz " +msgid "View the effective per-category flag thresholds." +msgstr "" -#: assistant\commands\admin.py:2374 +#: assistant\commands\admin.py:3687 #, docstring -msgid "\n" -" Add custom function calls for Assistant to use\n\n" -" **READ**\n" -" - [Function Call Docs](https://platform.openai.com/docs/guides/gpt/function-calling)\n" -" - [OpenAI Cookbook](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_call_functions_with_chat_models.ipynb)\n" -" - [JSON Schema Reference](https://json-schema.org/understanding-json-schema/)\n\n" -" The following objects are passed by default as keyword arguments.\n" -" - **user**: the user currently chatting with the bot (discord.Member)\n" -" - **channel**: channel the user is chatting in (TextChannel|Thread|ForumChannel)\n" -" - **guild**: current guild (discord.Guild)\n" -" - **bot**: the bot object (Red)\n" -" - **conf**: the config model for Assistant (GuildSettings)\n" -" - All functions **MUST** include `*args, **kwargs` in the params and return a string\n" -" ```python\n" -" # Can be either sync or async\n" -" async def func(*args, **kwargs) -> str:\n" -" ```\n" -" Only bot owner can manage this, guild owners can see descriptions but not code\n" -" " +msgid "Return (flagged_categories, formatted_table_lines) comparing each score to its threshold." msgstr "" -#: assistant\commands\admin.py:2414 +#: assistant\commands\admin.py:3701 #, docstring -msgid "List custom prompt context variables registered by other cogs." +msgid "Preview a sample message: which trigger phrases match plus each moderation score vs its threshold." msgstr "" -#: assistant\commands\admin.py:2416 -msgid "3rd party docs: {}" +#: assistant\commands\admin.py:3707 assistant\commands\admin.py:3741 +msgid "No OpenAI key available for the scan. Set one with `{p}assistant smartmod key`." msgstr "" -#: assistant\commands\admin.py:2418 -msgid "No custom context variables have been registered yet!\n" -"{}" +#: assistant\commands\admin.py:3716 assistant\commands\admin.py:3750 +msgid "Moderation scan failed — check the key or the bot logs." msgstr "" -#: assistant\commands\admin.py:2432 -msgid "Custom Variables" +#: assistant\commands\admin.py:3719 +msgid "🚩 **Would trigger review**" msgstr "" -#: assistant\commands\admin.py:2437 -msgid "Page {}/{} | {} variables" +#: assistant\commands\admin.py:3719 +msgid "✅ **Would not trigger**" +msgstr "" + +#: assistant\commands\admin.py:3721 +msgid "Matched triggers: {}" +msgstr "" + +#: assistant\commands\admin.py:3723 +msgid "Scan flagged: {}" msgstr "" -#: assistant\commands\admin.py:2450 +#: assistant\commands\admin.py:3730 #, docstring -msgid "\n" -" List all available functions and their enabled/disabled status\n\n" -" This provides a quick overview of all custom functions and 3rd party\n" -" registered functions without having to navigate through the full menu.\n" +msgid "Dry-run the FULL pipeline on sample text: scan / triggers -> review model -> action panel.\n\n" +" The review model runs for real (tools, embeddings, this channel's recent context) with you as\n" +" the simulated offender, but the panel's buttons take no real action. The review runs if a\n" +" category trips its threshold OR a trigger phrase matches (same as production).\n" " " msgstr "" -#: assistant\commands\admin.py:2463 assistant\commands\admin.py:2527 -#: assistant\commands\admin.py:2579 assistant\commands\admin.py:2676 -msgid "No functions have been registered yet!" +#: assistant\commands\admin.py:3758 +msgid "✅ Would not trigger — no category over its threshold and no trigger phrase matched." msgstr "" -#: assistant\commands\admin.py:2490 -msgid "Function List" +#: assistant\commands\admin.py:3760 +msgid "🚩 Tripped: {}" msgstr "" -#: assistant\commands\admin.py:2495 -msgid "Page {}/{} | {} enabled, {} disabled" +#: assistant\commands\admin.py:3765 +msgid "Simulation error: {}" +msgstr "" + +#: assistant\commands\admin.py:3768 +msgid "🧪 Model chose **no action**.\n" +"-# {}" +msgstr "" + +#: assistant\commands\admin.py:3768 +msgid "no reason given" msgstr "" -#: assistant\commands\admin.py:2511 +#: assistant\commands\admin.py:3770 +msgid "🧪 Model didn't reach a decision within the review turn limit." +msgstr "" + +#: assistant\commands\admin.py:3772 +msgid "🧪 Model **proposed** an action — see the dry-run panel above (buttons are no-ops)." +msgstr "" + +#: assistant\commands\admin.py:3788 #, docstring -msgid "Open the mobile-friendly AI tools manager." +msgid "Toggle a channel/category/role/member on the moderation ignore list. Omit to view." +msgstr "" + +#: assistant\commands\admin.py:3791 +msgid "Smartmod blacklist (ignored)" +msgstr "" + +#: assistant\commands\admin.py:3796 +msgid "{} removed from the smartmod blacklist." +msgstr "" + +#: assistant\commands\admin.py:3799 +msgid "{} added to the smartmod blacklist." msgstr "" -#: assistant\commands\admin.py:2520 +#: assistant\commands\admin.py:3816 #, docstring -msgid "List tool categories and their current enabled state." +msgid "Only moderate these channel/category/role/members (used only when the blacklist is empty). Omit to view." msgstr "" -#: assistant\commands\admin.py:2545 -msgid "Tool Categories" +#: assistant\commands\admin.py:3819 +msgid "Smartmod whitelist (only these)" msgstr "" -#: assistant\commands\admin.py:2547 -msgid "Page {}/{} | {} enabled of {} total" +#: assistant\commands\admin.py:3824 +msgid "{} removed from the smartmod whitelist." +msgstr "" + +#: assistant\commands\admin.py:3827 +msgid "{} added to the smartmod whitelist." msgstr "" -#: assistant\commands\admin.py:2572 +#: assistant\commands\admin.py:3832 #, docstring -msgid "Enable or disable all tools in one or more categories." +msgid "Toggle a role to ping (and authorize) when an action is proposed. Omit to view." msgstr "" -#: assistant\commands\admin.py:2589 -msgid "No valid category names provided!" +#: assistant\commands\admin.py:3835 +msgid "Smartmod staff ping roles" msgstr "" -#: assistant\commands\admin.py:2594 -msgid "The following categories do not exist: {}" +#: assistant\commands\admin.py:3840 +msgid "{} removed from the staff ping roles." msgstr "" -#: assistant\commands\admin.py:2616 -msgid "{} **Enabled Categories** ({}):\n" -"{}" +#: assistant\commands\admin.py:3843 +msgid "{} added to the staff ping roles." msgstr "" -#: assistant\commands\admin.py:2624 -msgid "{} **Disabled Categories** ({}):\n" -"{}" +#: assistant\commands\admin.py:3848 +#, docstring +msgid "Set how many messages of context to capture before/after a flagged message." msgstr "" -#: assistant\commands\admin.py:2647 +#: assistant\commands\admin.py:3853 +msgid "Context window set to {} before / {} after." +msgstr "" + +#: assistant\commands\admin.py:3861 #, docstring -msgid "\n" -" Enable or disable multiple functions at once\n\n" -" **Arguments**\n" -" - `enable`: True to enable, False to disable. Omit to toggle current state.\n" -" - `functions`: Comma-separated list of function names, or \"all\" to affect all functions\n\n" -" **Examples**\n" -" - `[p]togglefunctions get_time, get_weather` - Toggle these functions\n" -" - `[p]togglefunctions True all` - Enable all functions\n" -" - `[p]togglefunctions False get_time, get_weather` - Disable specific functions\n" -" " +msgid "Set how long the action panel stays interactive, in seconds (60-86400)." msgstr "" -#: assistant\commands\admin.py:2686 -msgid "No valid function names provided!" +#: assistant\commands\admin.py:3864 +msgid "Panel timeout set to {} seconds." msgstr "" -#: assistant\commands\admin.py:2692 -msgid "The following functions do not exist: {}" +#: assistant\commands\admin.py:3869 +#, docstring +msgid "Toggle whether the proposed action auto-executes when the panel times out." msgstr "" -#: assistant\commands\admin.py:2718 -msgid "✅ **Enabled** ({}):\n" -"{}" +#: assistant\commands\admin.py:3873 assistant\commands\admin.py:3883 +msgid "on" msgstr "" -#: assistant\commands\admin.py:2724 -msgid "❌ **Disabled** ({}):\n" -"{}" +#: assistant\commands\admin.py:3873 assistant\commands\admin.py:3883 +msgid "off" msgstr "" -#: assistant\commands\admin.py:2819 -#, docstring -msgid "\n" -" Add/Remove items from the blacklist\n\n" -" `channel_role_member` can be a member, role, channel, or category channel\n" -" " -msgstr "\n" -" Kara listeden öğe ekleme/kaldırma\n\n" -" `channel_role_member` bir üye, rol, kanal veya kategori kanalı olabilir\n" -" " +#: assistant\commands\admin.py:3874 +msgid "Auto-action on timeout is now **{}**." +msgstr "" -#: assistant\commands\admin.py:2827 -msgid "{} has been removed from the blacklist" -msgstr "{} kara listeden çıkarıldı" +#: assistant\commands\admin.py:3879 +#, docstring +msgid "Toggle skipping moderation for members with ban/kick/manage-messages permissions." +msgstr "" -#: assistant\commands\admin.py:2830 -msgid "{} has been added to the blacklist" -msgstr "{} kara listeye eklendi" +#: assistant\commands\admin.py:3883 +msgid "Exempt staff is now **{}**." +msgstr "" -#: assistant\commands\admin.py:2843 +#: assistant\commands\admin.py:3888 #, docstring -msgid "\n" -" Add/Remove items from the planner list, or view current planners.\n\n" -" Users/roles in the planner list can use the `think_and_plan` tool for complex task breakdown.\n\n" -" If the planner list is empty, everyone can use the planning tool.\n" -" If the planner list has entries, only those users/roles can use it.\n\n" -" `role_or_member` can be a member or role. Omit to view the current list.\n" +msgid "Add or remove a trigger phrase that sends a message straight to moderation review.\n\n" +" A match fires the review pipeline **in place of** the OpenAI moderation scan — so\n" +" triggers work even with no OpenAI key set. Re-run with the exact same phrase to remove it.\n\n" +" Only `*` is a wildcard (it matches any run of characters); everything else is literal,\n" +" so pasting real regex is safe and can never lock the bot up. With no `*`, the phrase\n" +" matches on word boundaries (`idiot` hits the word \"idiot\" but not \"idiotic\"); add `*`\n" +" to loosen it: `idiot*` (prefix), `*idiot` (suffix), `*idiot*` (substring anywhere).\n" " " msgstr "" -#: assistant\commands\admin.py:2858 -msgid "The planner list is empty. Everyone can use the `think_and_plan` tool." +#: assistant\commands\admin.py:3903 +msgid "Removed smartmod trigger: `{}`" msgstr "" -#: assistant\commands\admin.py:2863 -msgid "**Planners:** {}" +#: assistant\commands\admin.py:3906 +msgid "A trigger needs at least one non-`*` character." msgstr "" -#: assistant\commands\admin.py:2865 -msgid "The planner list has invalid entries. Consider clearing it." +#: assistant\commands\admin.py:3908 +msgid "That trigger is too long (max {} characters)." msgstr "" -#: assistant\commands\admin.py:2870 -msgid "{} has been removed from the planner list" +#: assistant\commands\admin.py:3911 +msgid "Added smartmod trigger `{phrase}` (matches as `{regex}`)." msgstr "" -#: assistant\commands\admin.py:2873 -msgid "{} has been added to the planner list" +#: assistant\commands\admin.py:3919 +#, docstring +msgid "List the smartmod trigger phrases and the safe pattern each one compiles to." msgstr "" -#: assistant\commands\admin.py:2878 +#: assistant\commands\admin.py:3924 +msgid "No smartmod triggers set. Add one with `{p}assistant smartmod trigger `." +msgstr "" + +#: assistant\commands\admin.py:3935 #, docstring -msgid "\n" -" Override settings for specific roles\n\n" -" **NOTE**\n" -" If a user has two roles with override settings, override associated with the higher role will be used.\n" +msgid "Set a dedicated OpenAI key for the moderation scan (opens a secure modal).\n\n" +" Use this when your chat endpoint is a custom/non-OpenAI endpoint (OpenRouter, LM Studio,\n" +" etc.): the free OpenAI moderation scan still runs against api.openai.com with this key,\n" +" while the review LLM keeps using your configured endpoint. Enter `none` to clear it.\n" " " msgstr "" -#: assistant\commands\admin.py:2887 +#: assistant\commands\admin.py:3943 +msgid "Click to set the OpenAI key used for the smartmod moderation scan\n\n" +"To remove the key, enter `none`" +msgstr "" + +#: assistant\commands\admin.py:3950 +msgid "Smartmod OpenAI key has been removed!" +msgstr "" + +#: assistant\commands\admin.py:3955 +msgid "Smartmod OpenAI key has been set!" +msgstr "" + +#: assistant\commands\admin.py:3960 #, docstring msgid "\n" " Assign a role to use a model\n\n" @@ -2038,23 +2879,23 @@ msgstr "\n" " Bir modeli kullanmak için bir rol atama\n\n" " *Geçersiz kılmayı kaldırmak için aynı rolü ve modeli belirtin* " -#: assistant\commands\admin.py:2899 +#: assistant\commands\admin.py:3974 msgid "Enter a model id supported by your custom endpoint. If it exposes `/v1/models`, you can copy one from there." msgstr "" -#: assistant\commands\admin.py:2916 +#: assistant\commands\admin.py:3991 msgid "Role override for {} removed!" msgstr "{} için rol geçersiz kılma kaldırıldı!" -#: assistant\commands\admin.py:2919 +#: assistant\commands\admin.py:3994 msgid "Role override for {} overwritten!" msgstr "{} için rol geçersiz kılma üzerine yazıldı!" -#: assistant\commands\admin.py:2922 +#: assistant\commands\admin.py:3997 msgid "Role override for {} added!" msgstr "{} için rol geçersiz kılma eklendi!" -#: assistant\commands\admin.py:2928 +#: assistant\commands\admin.py:4003 #, docstring msgid "\n" " Assign a max token override to a role\n\n" @@ -2064,19 +2905,19 @@ msgstr "\n" " Bir role maksimum belirteç geçersiz kılma atama\n\n" " *Geçersiz kılmayı kaldırmak için aynı rolü ve belirteç sayısını belirtin* " -#: assistant\commands\admin.py:2938 +#: assistant\commands\admin.py:4013 msgid "Max token override for {} removed!" msgstr "{} için maksimum belirteç geçersiz kılma kaldırıldı!" -#: assistant\commands\admin.py:2941 +#: assistant\commands\admin.py:4016 msgid "Max token override for {} overwritten!" msgstr "{} için maksimum belirteç geçersiz kılma üzerine yazıldı!" -#: assistant\commands\admin.py:2944 +#: assistant\commands\admin.py:4019 msgid "Max token override for {} added!" msgstr "{} için maksimum belirteç geçersiz kılma eklendi!" -#: assistant\commands\admin.py:2952 +#: assistant\commands\admin.py:4031 #, docstring msgid "\n" " Assign a max response token override to a role\n\n" @@ -2087,19 +2928,19 @@ msgstr " Bir role maksimum yanıt belirteci geçersiz kılma atama\n\n" " Yanıt belirteçlerinin dinamik olması için 0 olarak ayarlayın\n\n" " *Geçersiz kılmayı kaldırmak için aynı rolü ve belirteç sayısını belirtin* " -#: assistant\commands\admin.py:2964 +#: assistant\commands\admin.py:4043 msgid "Max response token override for {} removed!" msgstr "{} için maksimum yanıt belirteci geçersiz kılma kaldırıldı!" -#: assistant\commands\admin.py:2967 +#: assistant\commands\admin.py:4046 msgid "Max response token override for {} overwritten!" msgstr "{} için maksimum yanıt belirteci geçersiz kılma üzerine yazıldı!" -#: assistant\commands\admin.py:2970 +#: assistant\commands\admin.py:4049 msgid "Max response token override for {} added!" msgstr "{} için maksimum yanıt belirteci geçersiz kılma eklendi!" -#: assistant\commands\admin.py:2975 +#: assistant\commands\admin.py:4054 #, docstring msgid "\n" " Assign a max message retention override to a role\n\n" @@ -2109,19 +2950,19 @@ msgstr "\n" " Bir role maksimum ileti saklama geçersiz kılma atama\n\n" " *Geçersiz kılmayı kaldırmak için aynı rolü ve saklama miktarını belirtin* " -#: assistant\commands\admin.py:2987 +#: assistant\commands\admin.py:4066 msgid "Max retention override for {} removed!" msgstr "{} için maksimum tutma geçersiz kılma kaldırıldı!" -#: assistant\commands\admin.py:2990 +#: assistant\commands\admin.py:4069 msgid "Max retention override for {} overwritten!" msgstr "{} için maksimum bekletme geçersiz kılma üzerine yazıldı!" -#: assistant\commands\admin.py:2993 +#: assistant\commands\admin.py:4072 msgid "Max retention override for {} added!" msgstr "{} için maksimum tutma geçersiz kılma eklendi!" -#: assistant\commands\admin.py:2998 +#: assistant\commands\admin.py:4077 #, docstring msgid "\n" " Assign a max retention time override to a role\n\n" @@ -2131,19 +2972,19 @@ msgstr "\n" " Bir role maksimum saklama süresi geçersiz kılma atama\n\n" " *Geçersiz kılmayı kaldırmak için aynı rolü ve zamanı belirtin* " -#: assistant\commands\admin.py:3010 +#: assistant\commands\admin.py:4089 msgid "Max retention time override for {} removed!" msgstr "{} için maksimum saklama süresi geçersiz kılma kaldırıldı!" -#: assistant\commands\admin.py:3013 +#: assistant\commands\admin.py:4092 msgid "Max retention time override for {} overwritten!" msgstr "{} için maksimum saklama süresi geçersiz kılındı!" -#: assistant\commands\admin.py:3016 +#: assistant\commands\admin.py:4095 msgid "Max retention time override for {} added!" msgstr "{} için maksimum saklama süresi geçersiz kılma eklendi!" -#: assistant\commands\admin.py:3021 +#: assistant\commands\admin.py:4100 #, docstring msgid "\n" " Assign a reasoning effort override to a role\n\n" @@ -2152,23 +2993,23 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:3031 +#: assistant\commands\admin.py:4110 msgid "Invalid effort level. Valid values: {}" msgstr "" -#: assistant\commands\admin.py:3038 +#: assistant\commands\admin.py:4117 msgid "Reasoning effort override for {} removed!" msgstr "" -#: assistant\commands\admin.py:3041 +#: assistant\commands\admin.py:4120 msgid "Reasoning effort override for {} overwritten!" msgstr "" -#: assistant\commands\admin.py:3044 +#: assistant\commands\admin.py:4123 msgid "Reasoning effort override for {} added!" msgstr "" -#: assistant\commands\admin.py:3049 +#: assistant\commands\admin.py:4128 #, docstring msgid "\n" " Switch verbosity level for gpt-5 model between low, medium, and high\n\n" @@ -2176,79 +3017,112 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:3057 +#: assistant\commands\admin.py:4136 msgid "Verbosity has been set to **Medium**" msgstr "" -#: assistant\commands\admin.py:3060 +#: assistant\commands\admin.py:4139 msgid "Verbosity has been set to **High**" msgstr "" -#: assistant\commands\admin.py:3063 +#: assistant\commands\admin.py:4142 msgid "Verbosity has been set to **Low**" msgstr "" -#: assistant\commands\admin.py:3075 +#: assistant\commands\admin.py:4154 +#, docstring +msgid "Set the global default chat model for guilds that haven't picked their own (owner).\n\n" +" Pairs with `[p]assistant api globalendpoint`: e.g. set `openrouter/free` so new servers\n" +" route to OpenRouter's free models instead of the built-in `gpt-5.4` default. Guilds that\n" +" chose their own model are unaffected. Omit to view; pass `none` to clear.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:4161 +msgid "(not set - guilds use their own model)" +msgstr "" + +#: assistant\commands\admin.py:4163 +msgid "Global default model: `{}`\n" +"Set with `{}assistant api globalmodel `." +msgstr "" + +#: assistant\commands\admin.py:4169 +msgid "Global default model cleared." +msgstr "" + +#: assistant\commands\admin.py:4173 +msgid "Global default model set to `{}`. Guilds without their own model will use it." +msgstr "" + +#: assistant\commands\admin.py:4180 #, docstring msgid "\n" -" Override the global OpenAI-compatible API base URL\n\n" -" Pass the full API base URL, including the scheme and the `/v1` suffix.\n\n" +" Set the global default endpoint URL (owner)\n\n" +" When set, every guild without its own endpoint override calls this\n" +" URL instead of OpenAI's default. Pass the full base URL including\n" +" the scheme and the `/v1` suffix.\n\n" " **Examples**\n" " - `http://127.0.0.1:1234/v1`\n" " - `http://localhost:5001/v1`\n" -" - `https://example.com/api/v1`\n\n" +" - `https://example.com/api/v1`\n" +" - `https://openrouter.ai/api/v1`\n\n" " **Notes**\n" -" - When set, all servers can use the assistant without needing their own API key\n" -" - Custom endpoints must be OpenAI-compatible\n" -" - This should be the SDK `base_url`, not a specific route like `/chat/completions`\n" -" - Use `[p]assistant endpointapikey` to set a global key for authenticated custom endpoints\n" +" - Endpoints must be OpenAI-compatible\n" +" - This is the SDK `base_url`, not a specific route like `/chat/completions`\n" +" - Use `[p]assistant api globalkey` to set the API key for this endpoint\n" +" - Router endpoints like OpenRouter accept special model aliases\n" +" (e.g. `openrouter/auto`, `openrouter/free`) via `[p]assistant set model`\n" " - Omit the argument to remove the override\n" " " msgstr "" -#: assistant\commands\admin.py:3097 +#: assistant\commands\admin.py:4206 msgid "Endpoint is already set to **{}**" msgstr "" -#: assistant\commands\admin.py:3101 +#: assistant\commands\admin.py:4210 msgid "Endpoint has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:3109 +#: assistant\commands\admin.py:4218 msgid "Endpoint has been changed from **{}** to **{}**" msgstr "" -#: assistant\commands\admin.py:3116 +#: assistant\commands\admin.py:4225 msgid "Endpoint override has been removed!" msgstr "" -#: assistant\commands\admin.py:3122 +#: assistant\commands\admin.py:4232 #, docstring -msgid "Probe the configured custom endpoint and cache its runtime model/capability profile" +msgid "Probe the active endpoint and refresh its cached model/capability profile\n\n" +" Checks the guild endpoint override first; if none is set, probes the\n" +" global endpoint override. Reports an error if no endpoint is configured.\n" +" " msgstr "" -#: assistant\commands\admin.py:3124 -msgid "No endpoint override is configured." +#: assistant\commands\admin.py:4240 +msgid "No endpoint override is configured for this guild or globally." msgstr "" -#: assistant\commands\admin.py:3130 -msgid "Failed to probe the configured endpoint." +#: assistant\commands\admin.py:4246 +msgid "Failed to probe `{}`." msgstr "" -#: assistant\commands\admin.py:3137 +#: assistant\commands\admin.py:4253 #, docstring msgid "Wipe all settings and data for entire cog" msgstr "Tüm çark için tüm ayarları ve verileri silme" -#: assistant\commands\admin.py:3139 +#: assistant\commands\admin.py:4255 msgid "Not wiping cog" msgstr "Çark silinmiyor" -#: assistant\commands\admin.py:3144 +#: assistant\commands\admin.py:4260 msgid "Cog has been wiped!" msgstr "Cog silindi!" -#: assistant\commands\admin.py:3149 +#: assistant\commands\admin.py:4265 #, docstring msgid "\n" " Take a backup of the cog\n\n" @@ -2258,11 +3132,11 @@ msgstr "\n" " Çarkın yedeğini alın\n\n" " - Bu, konuşma verilerini yedeklemez " -#: assistant\commands\admin.py:3167 +#: assistant\commands\admin.py:4283 msgid "Here is your export!" msgstr "İşte ihracatınız!" -#: assistant\commands\admin.py:3196 +#: assistant\commands\admin.py:4312 #, docstring msgid "\n" " Restore the cog from a backup\n" @@ -2270,11 +3144,11 @@ msgid "\n" msgstr "\n" " Çarkı bir yedekten geri yükleme " -#: assistant\commands\admin.py:3206 +#: assistant\commands\admin.py:4322 msgid "Cog has been restored!" msgstr "Cog restore edildi!" -#: assistant\commands\admin.py:3212 +#: assistant\commands\admin.py:4328 #, docstring msgid "\n" " Wipe saved conversations for the assistant in all servers\n\n" @@ -2284,37 +3158,37 @@ msgstr "\n" " Tüm sunucularda asistan için kayıtlı konuşmaları silme\n\n" " Bu işlem asistan için kaydedilmiş tüm konuşmaları silecektir " -#: assistant\commands\admin.py:3221 +#: assistant\commands\admin.py:4337 msgid "Conversations have been wiped for all servers!" msgstr "Konuşmalar tüm sunucular için silindi!" -#: assistant\commands\admin.py:3227 +#: assistant\commands\admin.py:4343 #, docstring msgid "Toggle persistent conversations" msgstr "Kalıcı konuşmaları aç / kapat" -#: assistant\commands\admin.py:3230 +#: assistant\commands\admin.py:4346 msgid "Persistent conversations have been **Disabled**" msgstr "Kalıcı konuşmalar **Devre Dışı** bırakıldı" -#: assistant\commands\admin.py:3233 +#: assistant\commands\admin.py:4349 msgid "Persistent conversations have been **Enabled**" msgstr "Kalıcı konuşmalar **Etkinleştirildi**" -#: assistant\commands\admin.py:3239 +#: assistant\commands\admin.py:4355 #, docstring msgid "Toggle whether reasoning/think blocks are uploaded as files globally" msgstr "" -#: assistant\commands\admin.py:3242 +#: assistant\commands\admin.py:4358 msgid "Reasoning blocks will now be stripped from replies without uploading think files." msgstr "" -#: assistant\commands\admin.py:3245 +#: assistant\commands\admin.py:4361 msgid "Reasoning blocks will now be uploaded as think files when present." msgstr "" -#: assistant\commands\admin.py:3251 +#: assistant\commands\admin.py:4367 #, docstring msgid "\n" " Wipe saved embeddings for all servers\n\n" @@ -2324,11 +3198,11 @@ msgstr "\n" " Tüm sunucular için kayıtlı katıştırmaları sil\n\n" " Bu işlem asistan için kaydedilmiş tüm gömme eğitim verilerini silecektir " -#: assistant\commands\admin.py:3261 +#: assistant\commands\admin.py:4377 msgid "All embedding data has been wiped for all servers!" msgstr "Tüm sunucular için tüm gömme verileri silindi!" -#: assistant\commands\admin.py:3267 +#: assistant\commands\admin.py:4383 #, docstring msgid "\n" " Toggle whether the assistant listens to other bots\n\n" @@ -2338,113 +3212,113 @@ msgstr "\n" " Asistanın diğer botları dinleyip dinlemediğini değiştirme\n\n" " **HALKA AÇIK BOTLAR IÇIN ÖNERILMEZ!** " -#: assistant\commands\admin.py:3274 +#: assistant\commands\admin.py:4390 msgid "Assistant will no longer listen to other bot messages" msgstr "Asistan artık diğer bot mesajlarını dinlemeyecek" -#: assistant\commands\admin.py:3277 +#: assistant\commands\admin.py:4393 msgid "Assistant will listen to other bot messages" msgstr "Asistan diğer bot mesajlarını dinleyecek" -#: assistant\commands\admin.py:3285 +#: assistant\commands\admin.py:4401 #, docstring msgid "View and manage all scheduled autonomous tasks in this server." msgstr "" -#: assistant\commands\admin.py:3288 +#: assistant\commands\admin.py:4404 msgid "No scheduled tasks in this server." msgstr "" -#: assistant\commands\admin.py:3307 +#: assistant\commands\admin.py:4423 msgid "Scheduled Tasks ({})" msgstr "" -#: assistant\commands\admin.py:3317 +#: assistant\commands\admin.py:4433 #, docstring msgid "Cancel a scheduled task by its ID (admin override)." msgstr "" -#: assistant\commands\admin.py:3320 +#: assistant\commands\admin.py:4436 msgid "No scheduled task found with ID `{}`." msgstr "" -#: assistant\commands\admin.py:3322 +#: assistant\commands\admin.py:4438 msgid "That task belongs to a different server." msgstr "" -#: assistant\commands\admin.py:3331 +#: assistant\commands\admin.py:4447 msgid "Scheduled task `{}` has been cancelled." msgstr "" -#: assistant\commands\admin.py:3337 +#: assistant\commands\admin.py:4453 #, docstring msgid "Clear all scheduled tasks in this server." msgstr "" -#: assistant\commands\admin.py:3339 +#: assistant\commands\admin.py:4455 msgid "Not clearing tasks." msgstr "" -#: assistant\commands\admin.py:3350 +#: assistant\commands\admin.py:4466 msgid "Cleared {} scheduled tasks." msgstr "" -#: assistant\commands\admin.py:3356 +#: assistant\commands\admin.py:4470 #, docstring msgid "Toggle LLM-based conversation compaction on or off" msgstr "" -#: assistant\commands\admin.py:3360 +#: assistant\commands\admin.py:4474 msgid "Conversation compaction is now **Disabled** (blind degradation will be used)" msgstr "" -#: assistant\commands\admin.py:3363 +#: assistant\commands\admin.py:4477 msgid "Conversation compaction is now **Enabled**" msgstr "" -#: assistant\commands\admin.py:3368 +#: assistant\commands\admin.py:4482 #, docstring msgid "Set the model used for compaction (leave blank to use the chat model)" msgstr "" -#: assistant\commands\admin.py:3372 +#: assistant\commands\admin.py:4487 msgid "Compaction model cleared, the main chat model will be used" msgstr "" -#: assistant\commands\admin.py:3377 +#: assistant\commands\admin.py:4492 msgid "Compaction model set to **{}**" msgstr "" -#: assistant\commands\admin.py:3382 +#: assistant\commands\admin.py:4497 #, docstring msgid "Set the token threshold at which compaction triggers\n\n" " When set, the bot will proactively compact conversations once they\n" " exceed this many tokens, even if the model's context window is larger.\n\n" " Set to **0** to only compact when hitting the model's max token limit.\n\n" " **Examples**\n" -" - `[p]assistant compactionthreshold 16000` - compact at 16k tokens\n" -" - `[p]assistant compactionthreshold 0` - reset to default behavior\n" +" - `[p]assistant compaction threshold 16000` - compact at 16k tokens\n" +" - `[p]assistant compaction threshold 0` - reset to default behavior\n" " " msgstr "" -#: assistant\commands\admin.py:3394 +#: assistant\commands\admin.py:4509 msgid "Token limit must be 0 or higher" msgstr "" -#: assistant\commands\admin.py:3398 +#: assistant\commands\admin.py:4513 msgid "Compaction will now trigger at **{}** tokens" msgstr "" -#: assistant\commands\admin.py:3400 +#: assistant\commands\admin.py:4515 msgid "Compaction threshold reset, will only compact at the model's max token limit" msgstr "" -#: assistant\commands\base.py:46 +#: assistant\commands\base.py:45 #, docstring msgid "Get help using assistant" msgstr "" -#: assistant\commands\base.py:48 +#: assistant\commands\base.py:47 msgid "\n" "# How to Use\n\n" "### Commands\n" @@ -2452,6 +3326,7 @@ msgid "\n" "`[p]convocontext` - detailed token breakdown of what's consuming your context window.\n" "`[p]convocompact` - intelligently summarize older messages to free up context space.\n" "`[p]clearconvo` - reset your conversation for the current channel/thread/forum.\n" +"`[p]unchat` - cancel the active assistant response for the current channel/thread/forum.\n" "`[p]showconvo` - get a json dump of your current conversation (this is mostly for debugging)\n" "`[p]chat` or `[p]ask` - command prefix for chatting with the bot outside of the live chat, or just @ it.\n\n" "### Chat Arguments\n" @@ -2478,42 +3353,38 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:109 +#: assistant\commands\base.py:110 msgid "The API key is not set up!" msgstr "" -#: assistant\commands\base.py:111 +#: assistant\commands\base.py:112 msgid "Image generation is disabled!" msgstr "" -#: assistant\commands\base.py:120 +#: assistant\commands\base.py:121 msgid "Generating image..." msgstr "" -#: assistant\commands\base.py:124 +#: assistant\commands\base.py:125 msgid "-# Size: {}\n" "-# Quality: {}\n" "-# Model: {}" msgstr "" -#: assistant\commands\base.py:126 +#: assistant\commands\base.py:127 msgid "\n" "-# Style: {}" msgstr "" -#: assistant\commands\base.py:145 -msgid "Cost: ${}" -msgstr "" - -#: assistant\commands\base.py:150 +#: assistant\commands\base.py:155 msgid "Revised Prompt" msgstr "" -#: assistant\commands\base.py:150 +#: assistant\commands\base.py:155 msgid "Continued" msgstr "" -#: assistant\commands\base.py:170 +#: assistant\commands\base.py:178 #, docstring msgid "\n" " Chat with [botname]!\n\n" @@ -2530,7 +3401,11 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:197 +#: assistant\commands\base.py:208 +msgid "There are too many pending messages for this conversation. Please wait for the current reply." +msgstr "" + +#: assistant\commands\base.py:214 #, docstring msgid "\n" " Check the token and message count of yourself or another user's conversation for this channel\n\n" @@ -2542,7 +3417,7 @@ msgstr "\n" "Konuşmalar *Kullanıcı başına* *Kanal başına* şeklindedir, yani bir kanalda yaptığınız bir konuşma, ayrı bir kanaldaki başka bir konuşmadan ayrı olarak bellekte tutulacaktır\n\n" "Konuşmalar yalnızca bot yeniden başlatılana veya dişli yeniden yüklenene kadar bellekte saklanır " -#: assistant\commands\base.py:252 +#: assistant\commands\base.py:271 msgid "`Messages: `{}/{}\n" "`Context: `{}/{} ({:.1f}%)\n" "`Conversation:`{}\n" @@ -2551,126 +3426,126 @@ msgid "`Messages: `{}/{}\n" "`Model: `{}" msgstr "" -#: assistant\commands\base.py:271 +#: assistant\commands\base.py:290 msgid "\n" "`Tool Calls: `{}" msgstr "" -#: assistant\commands\base.py:273 +#: assistant\commands\base.py:292 msgid "\n" "`Compacted: `{} time(s)" msgstr "" -#: assistant\commands\base.py:275 +#: assistant\commands\base.py:294 msgid "*Collabroative conversations are enabled*" msgstr "" -#: assistant\commands\base.py:281 +#: assistant\commands\base.py:300 msgid "Conversation stats for {}" msgstr "{} için konuşma istatistikleri" -#: assistant\commands\base.py:284 +#: assistant\commands\base.py:303 msgid "Context = conversation + overhead (prompts + function schemas)" msgstr "" -#: assistant\commands\base.py:289 +#: assistant\commands\base.py:308 msgid "System prompt override for this conversation" msgstr "" -#: assistant\commands\base.py:292 +#: assistant\commands\base.py:311 msgid "System prompt override for this channel" msgstr "" -#: assistant\commands\base.py:298 +#: assistant\commands\base.py:317 #, docstring msgid "Show a detailed token breakdown for your conversation context" msgstr "" -#: assistant\commands\base.py:334 +#: assistant\commands\base.py:353 msgid "`Max Context: `{} tokens\n" msgstr "" -#: assistant\commands\base.py:335 +#: assistant\commands\base.py:354 msgid "`Context Fill: `{:.1f}%\n" msgstr "" -#: assistant\commands\base.py:336 +#: assistant\commands\base.py:355 msgid "`Model: `{}\n" msgstr "" -#: assistant\commands\base.py:338 +#: assistant\commands\base.py:357 msgid "**Token Breakdown**\n" msgstr "" -#: assistant\commands\base.py:339 +#: assistant\commands\base.py:358 msgid "`System Prompt: `{}\n" msgstr "" -#: assistant\commands\base.py:340 +#: assistant\commands\base.py:359 msgid "`Initial Prompt: `{}\n" msgstr "" -#: assistant\commands\base.py:341 +#: assistant\commands\base.py:360 msgid "`Channel Prompt: `{}\n" msgstr "" -#: assistant\commands\base.py:342 +#: assistant\commands\base.py:361 msgid "`Function Schemas: `{} ({} functions)\n" msgstr "" -#: assistant\commands\base.py:345 +#: assistant\commands\base.py:364 msgid "`Conversation: `{}\n" msgstr "" -#: assistant\commands\base.py:346 +#: assistant\commands\base.py:365 msgid "`Total: `{}\n" msgstr "" -#: assistant\commands\base.py:348 +#: assistant\commands\base.py:367 msgid "**Message Breakdown**\n" msgstr "" -#: assistant\commands\base.py:349 +#: assistant\commands\base.py:368 msgid "`System/Developer: `{}\n" msgstr "" -#: assistant\commands\base.py:350 +#: assistant\commands\base.py:369 msgid "`User Messages: `{}\n" msgstr "" -#: assistant\commands\base.py:351 +#: assistant\commands\base.py:370 msgid "`Assistant Messages: `{}\n" msgstr "" -#: assistant\commands\base.py:352 +#: assistant\commands\base.py:371 msgid "`Tool Results: `{}\n" msgstr "" -#: assistant\commands\base.py:353 +#: assistant\commands\base.py:372 msgid "`Images: `{}\n" msgstr "" -#: assistant\commands\base.py:354 +#: assistant\commands\base.py:373 msgid "`Compaction Summaries:`{}\n" msgstr "" -#: assistant\commands\base.py:356 +#: assistant\commands\base.py:375 msgid "**Compaction**\n" msgstr "" -#: assistant\commands\base.py:357 +#: assistant\commands\base.py:376 msgid "`Times Compacted: `{}\n" msgstr "" -#: assistant\commands\base.py:367 +#: assistant\commands\base.py:386 msgid "Context Breakdown" msgstr "" -#: assistant\commands\base.py:372 +#: assistant\commands\base.py:391 msgid "Context for {}" msgstr "" -#: assistant\commands\base.py:380 +#: assistant\commands\base.py:399 #, docstring msgid "Compact your conversation using LLM summarization\n\n" " This summarizes older messages instead of deleting them, preserving\n" @@ -2681,35 +3556,35 @@ msgid "Compact your conversation using LLM summarization\n\n" " " msgstr "" -#: assistant\commands\base.py:391 +#: assistant\commands\base.py:411 msgid "No API key has been set!" msgstr "" -#: assistant\commands\base.py:393 +#: assistant\commands\base.py:413 msgid "Conversation compaction is disabled in this server." msgstr "" -#: assistant\commands\base.py:404 +#: assistant\commands\base.py:424 msgid "Only moderators can compact channel conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:409 +#: assistant\commands\base.py:429 msgid "You have no conversation history in this channel." msgstr "" -#: assistant\commands\base.py:414 +#: assistant\commands\base.py:434 msgid "Not enough messages to compact (need more than {})." msgstr "" -#: assistant\commands\base.py:434 +#: assistant\commands\base.py:453 msgid "Conversation compacted! ({} compactions total for this conversation)" msgstr "" -#: assistant\commands\base.py:439 +#: assistant\commands\base.py:458 msgid "Compaction was not needed or failed." msgstr "" -#: assistant\commands\base.py:444 +#: assistant\commands\base.py:463 #, docstring msgid "\n" " Reset your conversation with the bot\n\n" @@ -2719,112 +3594,129 @@ msgstr "\n" " Bot ile konuşmanızı sıfırlayın\n\n" " Bu, bu kanal için sizinle bot arasındaki tüm mesaj geçmişini temizleyecektir " -#: assistant\commands\base.py:457 +#: assistant\commands\base.py:476 msgid "Only moderators can clear channel conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:461 +#: assistant\commands\base.py:481 msgid "Your conversation in this channel has been reset!" msgstr "Bu kanaldaki konuşmanız sıfırlandı!" -#: assistant\commands\base.py:467 +#: assistant\commands\base.py:486 +#, docstring +msgid "Cancel the active assistant response for this channel" +msgstr "" + +#: assistant\commands\base.py:494 +msgid "Only moderators can cancel channel conversations when collaborative conversations are enabled!" +msgstr "" + +#: assistant\commands\base.py:499 +msgid "There is no active assistant response to cancel in this channel." +msgstr "" + +#: assistant\commands\base.py:500 +msgid "The active assistant response for this channel has been cancelled." +msgstr "" + +#: assistant\commands\base.py:506 #, docstring msgid "\n" " Pop the last message from your conversation\n" " " msgstr "" -#: assistant\commands\base.py:478 +#: assistant\commands\base.py:517 msgid "Only moderators can pop messages from conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:482 assistant\commands\base.py:743 +#: assistant\commands\base.py:521 assistant\commands\base.py:788 msgid "There are no messages in this conversation yet!" msgstr "" -#: assistant\commands\base.py:487 +#: assistant\commands\base.py:526 msgid "Removed the last message from this conversation" msgstr "" -#: assistant\commands\base.py:507 +#: assistant\commands\base.py:546 #, docstring msgid "\n" " Get a summary of whats going on in a channel\n" " " msgstr "" -#: assistant\commands\base.py:513 +#: assistant\commands\base.py:552 msgid "Invalid timeframe! Please use a valid time format like `1h` for an hour" msgstr "" -#: assistant\commands\base.py:516 +#: assistant\commands\base.py:555 msgid "The maximum timeframe is 48 hours!" msgstr "" -#: assistant\commands\base.py:524 +#: assistant\commands\base.py:563 msgid "Only moderators can summarize conversations!" msgstr "" -#: assistant\commands\base.py:531 +#: assistant\commands\base.py:570 msgid "You don't have permission to view the channel!" msgstr "" -#: assistant\commands\base.py:538 +#: assistant\commands\base.py:577 msgid "I don't have permission to view the channel!" msgstr "" -#: assistant\commands\base.py:561 +#: assistant\commands\base.py:600 msgid "No messages found to summarize within that timeframe!" msgstr "" -#: assistant\commands\base.py:563 +#: assistant\commands\base.py:602 msgid "Not enough messages found to summarize within that timeframe!" msgstr "" -#: assistant\commands\base.py:664 +#: assistant\commands\base.py:706 msgid "The request timed out!" msgstr "" -#: assistant\commands\base.py:675 +#: assistant\commands\base.py:717 msgid "Failed to get response" msgstr "" -#: assistant\commands\base.py:678 +#: assistant\commands\base.py:720 msgid "No response was generated!" msgstr "" -#: assistant\commands\base.py:685 +#: assistant\commands\base.py:727 msgid "Timeframe: {}" msgstr "" -#: assistant\commands\base.py:692 assistant\commands\base.py:702 +#: assistant\commands\base.py:734 assistant\commands\base.py:744 msgid "Channel" msgstr "" -#: assistant\commands\base.py:724 +#: assistant\commands\base.py:769 #, docstring msgid "\n" " Copy the conversation to another channel, thread, or forum\n" " " msgstr "" -#: assistant\commands\base.py:735 +#: assistant\commands\base.py:780 msgid "Only moderators can copy conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:746 +#: assistant\commands\base.py:791 msgid "You cannot copy a conversation to a channel you can't see!" msgstr "" -#: assistant\commands\base.py:752 +#: assistant\commands\base.py:797 msgid "This conversation has been overwritten in {}" msgstr "" -#: assistant\commands\base.py:754 +#: assistant\commands\base.py:799 msgid "This conversation has been copied over to {}" msgstr "" -#: assistant\commands\base.py:764 +#: assistant\commands\base.py:809 #, docstring msgid "\n" " Set a system prompt for this conversation!\n\n" @@ -2833,28 +3725,28 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:773 +#: assistant\commands\base.py:818 msgid "Conversation system prompt overriding is **Disabled**." msgstr "" -#: assistant\commands\base.py:783 +#: assistant\commands\base.py:828 msgid "Only moderators can set conversation prompts when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:803 +#: assistant\commands\base.py:848 msgid "This prompt is uses {} tokens which is more than 90% of the maximum tokens allowed per conversation!\n" "Write a prompt using {} tokens or less to leave 10% of your token limit for responses" msgstr "" -#: assistant\commands\base.py:812 +#: assistant\commands\base.py:857 msgid "System prompt has been set for this conversation!" msgstr "" -#: assistant\commands\base.py:814 +#: assistant\commands\base.py:859 msgid "System prompt has been **Removed** for this conversation!" msgstr "" -#: assistant\commands\base.py:826 +#: assistant\commands\base.py:871 #, docstring msgid "\n" " View the current transcript of a conversation\n\n" @@ -2864,50 +3756,50 @@ msgstr "\n" "Bir görüşmenin geçerli dökümünü görüntüleme\n\n" "Bu esas olarak moderasyon amacıyla burada " -#: assistant\commands\base.py:838 +#: assistant\commands\base.py:883 msgid "You have no conversation in this channel!" msgstr "Bu kanalda hiç konuşmanız yok!" -#: assistant\commands\base.py:851 +#: assistant\commands\base.py:896 msgid "Here is your conversation transcript!" msgstr "İşte konuşma metniniz!" -#: assistant\commands\base.py:857 +#: assistant\commands\base.py:902 #, docstring msgid "\n" " Import a conversation from a file\n" " " msgstr "" -#: assistant\commands\base.py:862 +#: assistant\commands\base.py:907 msgid "Please attach a file to import the conversation from!" msgstr "" -#: assistant\commands\base.py:864 +#: assistant\commands\base.py:909 msgid "Please only attach one file to import the conversation from!" msgstr "" -#: assistant\commands\base.py:867 +#: assistant\commands\base.py:912 msgid "Please upload a valid JSON file." msgstr "" -#: assistant\commands\base.py:872 +#: assistant\commands\base.py:917 msgid "Failed to parse conversation file." msgstr "" -#: assistant\commands\base.py:878 +#: assistant\commands\base.py:923 msgid "The conversation file is not in the correct format. It should be a list of messages." msgstr "" -#: assistant\commands\base.py:888 +#: assistant\commands\base.py:933 msgid "You do not have permission to import conversations." msgstr "" -#: assistant\commands\base.py:893 +#: assistant\commands\base.py:938 msgid "Conversation has been imported successfully!" msgstr "" -#: assistant\commands\base.py:899 +#: assistant\commands\base.py:944 #, docstring msgid "\n" " Fetch related embeddings according to the current topn setting along with their scores\n\n" @@ -2915,31 +3807,31 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:906 +#: assistant\commands\base.py:951 msgid "You do not have any embeddings configured!" msgstr "Yapılandırılmış herhangi bir yerleştirmeniz yok!" -#: assistant\commands\base.py:908 +#: assistant\commands\base.py:953 msgid "Top N is set to 0 so no embeddings will be returned" msgstr "Top N değeri 0 olarak ayarlandığı için hiçbir gömme döndürülmeyecektir" -#: assistant\commands\base.py:914 +#: assistant\commands\base.py:959 msgid "Failed to get embedding for your query" msgstr "Sorgunuzun yerleştirilmesi alınamadı" -#: assistant\commands\base.py:923 +#: assistant\commands\base.py:968 msgid "No embeddings could be related to this query with the current settings" msgstr "Geçerli ayarlarla bu sorguyla hiçbir gömme ilişkilendirilemedi" -#: assistant\commands\base.py:927 +#: assistant\commands\base.py:972 msgid "`Entry Name: `{}\n" msgstr "`Giriş Adı: `{}\n" -#: assistant\commands\base.py:928 +#: assistant\commands\base.py:973 msgid "`Relatedness: `{}\n" msgstr "`İlgililik: `{}\n" -#: assistant\commands\base.py:929 +#: assistant\commands\base.py:974 msgid "`Dimensions: `{}\n" msgstr "`Boyutlar: `{}\n" From 5a46a9ad0356eaa28f1ec56fece9f8a586640386 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Mon, 1 Jun 2026 11:10:53 -0400 Subject: [PATCH 056/104] New translations messages.pot (Croatian) [ci skip] --- assistant/commands/locales/hr-HR.po | 2678 ++++++++++++++++++--------- 1 file changed, 1789 insertions(+), 889 deletions(-) diff --git a/assistant/commands/locales/hr-HR.po b/assistant/commands/locales/hr-HR.po index ccc20b0d9..e2ca92c3f 100644 --- a/assistant/commands/locales/hr-HR.po +++ b/assistant/commands/locales/hr-HR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-20 01:28\n" +"POT-Creation-Date: 2026-06-01 09:46-0400\n" +"PO-Revision-Date: 2026-06-01 15:10\n" "Last-Translator: \n" "Language-Team: Croatian\n" "MIME-Version: 1.0\n" @@ -17,19 +17,19 @@ msgstr "" "X-Crowdin-File-ID: 53\n" "Language: hr_HR\n" -#: assistant\commands\admin.py:67 +#: assistant\commands\admin.py:89 msgid "Endpoint override must be a full base URL, for example `http://127.0.0.1:1234/v1` or `https://example.com/api/v1`." msgstr "" -#: assistant\commands\admin.py:72 +#: assistant\commands\admin.py:94 msgid "Endpoint override must point at the OpenAI-compatible API base path ending in `/v1`. Do not include routes like `/chat/completions` or `/models`." msgstr "" -#: assistant\commands\admin.py:81 +#: assistant\commands\admin.py:103 msgid "Empty" msgstr "" -#: assistant\commands\admin.py:90 +#: assistant\commands\admin.py:112 #, docstring msgid "\n" " Setup the assistant\n\n" @@ -37,69 +37,166 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:133 +#: assistant\commands\admin.py:122 +#, docstring +msgid "Manage API keys and endpoint URLs" +msgstr "" + +#: assistant\commands\admin.py:127 +#, docstring +msgid "Per-guild endpoint and key overrides (chat + embeddings)" +msgstr "" + +#: assistant\commands\admin.py:132 +#, docstring +msgid "Configure general guild settings" +msgstr "" + +#: assistant\commands\admin.py:137 +#, docstring +msgid "Configure assistant prompts" +msgstr "" + +#: assistant\commands\admin.py:142 +#, docstring +msgid "Configure feature toggles" +msgstr "" + +#: assistant\commands\admin.py:147 +#, docstring +msgid "Configure auto-answer settings" +msgstr "" + +#: assistant\commands\admin.py:152 +#, docstring +msgid "Configure trigger phrase system" +msgstr "" + +#: assistant\commands\admin.py:157 +#, docstring +msgid "Configure content filtering" +msgstr "" + +#: assistant\commands\admin.py:162 +#, docstring +msgid "Configure token and retention limits" +msgstr "" + +#: assistant\commands\admin.py:167 +#, docstring +msgid "Configure model behavior parameters" +msgstr "" + +#: assistant\commands\admin.py:172 +#, docstring +msgid "Configure embeddings and RAG settings" +msgstr "" + +#: assistant\commands\admin.py:177 +#, docstring +msgid "Admin maintenance commands" +msgstr "" + +#: assistant\commands\admin.py:183 +#, docstring +msgid "Configure OpenRouter response & prompt caching." +msgstr "" + +#: assistant\commands\admin.py:188 +#, docstring +msgid "Manage role-based overrides" +msgstr "" + +#: assistant\commands\admin.py:193 +#, docstring +msgid "Manage scheduled autonomous tasks" +msgstr "" + +#: assistant\commands\admin.py:198 +#, docstring +msgid "Configure conversation compaction" +msgstr "" + +#: assistant\commands\admin.py:203 +#, docstring +msgid "AI moderation: scan messages, review flagged ones, and propose staff actions." +msgstr "" + +#: assistant\commands\admin.py:244 msgid "... and {} more" msgstr "" -#: assistant\commands\admin.py:143 +#: assistant\commands\admin.py:255 msgid "Configured chat model" msgstr "" -#: assistant\commands\admin.py:144 +#: assistant\commands\admin.py:256 msgid "{}: **{}**" msgstr "" -#: assistant\commands\admin.py:147 assistant\commands\admin.py:180 +#: assistant\commands\admin.py:259 assistant\commands\admin.py:294 msgid "No endpoint model cache is available yet. Run `{}` to refresh it, or enter a model id manually." msgstr "" -#: assistant\commands\admin.py:154 +#: assistant\commands\admin.py:266 msgid "Runtime chat model: **{}**" msgstr "" -#: assistant\commands\admin.py:159 +#: assistant\commands\admin.py:271 msgid "Discovered chat models:\n" "{}" msgstr "" -#: assistant\commands\admin.py:165 +#: assistant\commands\admin.py:277 msgid "No chat models were discovered from this endpoint yet. You can still enter a model id manually." msgstr "" -#: assistant\commands\admin.py:169 assistant\commands\admin.py:204 +#: assistant\commands\admin.py:281 assistant\commands\admin.py:318 msgid "Use this command again with one of these model ids, or enter another id manually if your endpoint supports it." msgstr "" -#: assistant\commands\admin.py:177 +#: assistant\commands\admin.py:291 msgid "Configured embedding model: **{}**" msgstr "" -#: assistant\commands\admin.py:187 +#: assistant\commands\admin.py:301 msgid "Runtime embedding model: **{}**" msgstr "" -#: assistant\commands\admin.py:192 +#: assistant\commands\admin.py:306 msgid "Discovered embedding models:\n" "{}" msgstr "" -#: assistant\commands\admin.py:198 +#: assistant\commands\admin.py:312 msgid "No embedding models were discovered from this endpoint yet. You can still enter a model id manually." msgstr "" -#: assistant\commands\admin.py:217 +#: assistant\commands\admin.py:332 msgid "embedding" msgstr "" -#: assistant\commands\admin.py:217 +#: assistant\commands\admin.py:332 msgid "chat" msgstr "" -#: assistant\commands\admin.py:220 -msgid "Note: `{}` is not in the endpoint's discovered {} model list. Requests will currently resolve to `{}` unless the endpoint starts advertising or returning that model." +#: assistant\commands\admin.py:351 +msgid "Note: `{}` is not in the endpoint's discovered {} model list. Requests on this endpoint will automatically use `{}` instead." msgstr "" -#: assistant\commands\admin.py:228 +#: assistant\commands\admin.py:354 +msgid "Note: `{}` is not in the endpoint's discovered {} model list. The cog will still try to use it directly, but the endpoint may reject it." +msgstr "" + +#: assistant\commands\admin.py:400 +msgid "Warning: stored embeddings currently use mixed dimensions ({}). Run `{}` to resync them with `{}`." +msgstr "" + +#: assistant\commands\admin.py:412 +msgid "Warning: stored embeddings are `{}` dimensions, but `{}` returns `{}` dimensions. Run `{}` to resync them after switching models." +msgstr "" + +#: assistant\commands\admin.py:443 #, docstring msgid "\n" " View current settings\n\n" @@ -107,534 +204,655 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:248 +#: assistant\commands\admin.py:468 msgid "`OpenAI Version: `{}\n" msgstr "" -#: assistant\commands\admin.py:249 +#: assistant\commands\admin.py:469 msgid "`OpenAI API Status: `{}\n" msgstr "" -#: assistant\commands\admin.py:250 +#: assistant\commands\admin.py:470 msgid "`Draw Command: `{}\n" msgstr "" -#: assistant\commands\admin.py:250 assistant\commands\admin.py:295 -#: assistant\commands\admin.py:302 assistant\commands\admin.py:312 -#: assistant\commands\admin.py:396 assistant\commands\admin.py:1346 +#: assistant\commands\admin.py:470 assistant\commands\admin.py:525 +#: assistant\commands\admin.py:532 assistant\commands\admin.py:542 +#: assistant\commands\admin.py:679 assistant\commands\admin.py:1695 msgid "Enabled" msgstr "" -#: assistant\commands\admin.py:250 assistant\commands\admin.py:295 -#: assistant\commands\admin.py:302 assistant\commands\admin.py:312 -#: assistant\commands\admin.py:396 assistant\commands\admin.py:1346 +#: assistant\commands\admin.py:470 assistant\commands\admin.py:525 +#: assistant\commands\admin.py:532 assistant\commands\admin.py:542 +#: assistant\commands\admin.py:604 assistant\commands\admin.py:679 +#: assistant\commands\admin.py:1695 msgid "Disabled" msgstr "" -#: assistant\commands\admin.py:251 +#: assistant\commands\admin.py:471 msgid "`Model: `{}\n" msgstr "" -#: assistant\commands\admin.py:252 +#: assistant\commands\admin.py:472 msgid "`Embed Model: `{}\n" msgstr "" -#: assistant\commands\admin.py:253 +#: assistant\commands\admin.py:473 msgid "`Enabled: `{}\n" msgstr "" -#: assistant\commands\admin.py:254 +#: assistant\commands\admin.py:474 msgid "`Timezone: `{}\n" msgstr "" -#: assistant\commands\admin.py:255 +#: assistant\commands\admin.py:475 msgid "`Channel: `{}\n" msgstr "" -#: assistant\commands\admin.py:255 assistant\commands\admin.py:405 -#: assistant\commands\admin.py:412 +#: assistant\commands\admin.py:475 assistant\commands\admin.py:688 +#: assistant\commands\admin.py:695 msgid "Not Set" msgstr "" -#: assistant\commands\admin.py:256 +#: assistant\commands\admin.py:476 msgid "`? Required: `{}\n" msgstr "" -#: assistant\commands\admin.py:257 +#: assistant\commands\admin.py:477 msgid "`Question Mode: `{}\n" msgstr "" -#: assistant\commands\admin.py:258 +#: assistant\commands\admin.py:478 msgid "`Mention on Reply: `{}\n" msgstr "" -#: assistant\commands\admin.py:259 +#: assistant\commands\admin.py:479 msgid "`Respond to Mentions: `{}\n" msgstr "" -#: assistant\commands\admin.py:260 +#: assistant\commands\admin.py:480 msgid "`Collaborative Mode: `{}\n" msgstr "" -#: assistant\commands\admin.py:262 +#: assistant\commands\admin.py:481 msgid "`Max Retention: `{}\n" msgstr "" -#: assistant\commands\admin.py:263 +#: assistant\commands\admin.py:482 msgid "`Retention Expire: `{}s\n" msgstr "" -#: assistant\commands\admin.py:264 +#: assistant\commands\admin.py:483 msgid "`Max Tokens: `{}\n" msgstr "" -#: assistant\commands\admin.py:265 +#: assistant\commands\admin.py:484 msgid "`Max Response Tokens: `{}\n" msgstr "" -#: assistant\commands\admin.py:266 +#: assistant\commands\admin.py:485 msgid "`Min Length: `{}\n" msgstr "" -#: assistant\commands\admin.py:267 +#: assistant\commands\admin.py:486 msgid "`Temperature: `{}\n" msgstr "" -#: assistant\commands\admin.py:268 +#: assistant\commands\admin.py:487 msgid "`Frequency Penalty: `{}\n" msgstr "" -#: assistant\commands\admin.py:269 +#: assistant\commands\admin.py:488 msgid "`Presence Penalty: `{}\n" msgstr "" -#: assistant\commands\admin.py:270 +#: assistant\commands\admin.py:489 msgid "`Seed: `{}\n" msgstr "" -#: assistant\commands\admin.py:271 +#: assistant\commands\admin.py:490 msgid "`Vision Resolution: `{}\n" msgstr "" -#: assistant\commands\admin.py:272 +#: assistant\commands\admin.py:491 msgid "`Reasoning Effort: `{}\n" msgstr "" -#: assistant\commands\admin.py:273 +#: assistant\commands\admin.py:492 msgid "`Verbosity: `{}\n" msgstr "" -#: assistant\commands\admin.py:274 +#: assistant\commands\admin.py:493 msgid "`System Prompt: `{} tokens\n" msgstr "" -#: assistant\commands\admin.py:275 +#: assistant\commands\admin.py:494 msgid "`User Prompt: `{} tokens\n" msgstr "" -#: assistant\commands\admin.py:276 +#: assistant\commands\admin.py:495 msgid "`Endpoint Override: `{}\n" msgstr "" -#: assistant\commands\admin.py:280 +#: assistant\commands\admin.py:495 assistant\commands\admin.py:496 +#: assistant\commands\admin.py:3518 +msgid "Not set" +msgstr "" + +#: assistant\commands\admin.py:496 +msgid "`Guild Endpoint: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:500 +msgid "`Effective Model: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:502 +msgid "`Effective Embed: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:505 msgid "Assistant Settings" msgstr "" -#: assistant\commands\admin.py:288 +#: assistant\commands\admin.py:515 assistant\commands\admin.py:978 +#: assistant\commands\admin.py:1062 msgid "Endpoint Runtime" msgstr "" -#: assistant\commands\admin.py:290 +#: assistant\commands\admin.py:520 msgid "Auto Answer" msgstr "" -#: assistant\commands\admin.py:291 +#: assistant\commands\admin.py:521 msgid "Auto-answer will trigger the bot outside of the assistant channel if a question is detected and an embedding is not found.\n" msgstr "" -#: assistant\commands\admin.py:294 +#: assistant\commands\admin.py:524 msgid "`Model: `{}\n" msgstr "" -#: assistant\commands\admin.py:295 assistant\commands\admin.py:302 +#: assistant\commands\admin.py:525 assistant\commands\admin.py:532 msgid "`Status: `{}\n" msgstr "" -#: assistant\commands\admin.py:296 +#: assistant\commands\admin.py:526 msgid "`Threshold: `{}\n" msgstr "" -#: assistant\commands\admin.py:297 assistant\commands\admin.py:304 +#: assistant\commands\admin.py:527 assistant\commands\admin.py:534 msgid "`Ignored: `{}\n" msgstr "" -#: assistant\commands\admin.py:300 +#: assistant\commands\admin.py:530 msgid "Trigger Words" msgstr "" -#: assistant\commands\admin.py:301 +#: assistant\commands\admin.py:531 msgid "Trigger words allow the bot to respond to messages containing specific keywords or regex patterns.\n" msgstr "" -#: assistant\commands\admin.py:303 +#: assistant\commands\admin.py:533 msgid "`Phrases: `{}\n" msgstr "" -#: assistant\commands\admin.py:305 +#: assistant\commands\admin.py:535 assistant\commands\admin.py:3515 msgid "None" msgstr "" -#: assistant\commands\admin.py:307 +#: assistant\commands\admin.py:537 msgid "`Has Prompt:`{}\n" msgstr "" -#: assistant\commands\admin.py:307 +#: assistant\commands\admin.py:537 msgid "Yes" msgstr "" -#: assistant\commands\admin.py:307 +#: assistant\commands\admin.py:537 msgid "No" msgstr "" -#: assistant\commands\admin.py:310 +#: assistant\commands\admin.py:540 msgid "Think Tags" msgstr "" -#: assistant\commands\admin.py:311 +#: assistant\commands\admin.py:541 msgid "Reasoning blocks wrapped in these tags are removed from chat output.\n" msgstr "" -#: assistant\commands\admin.py:312 +#: assistant\commands\admin.py:542 msgid "`Upload as Files:`{}\n" msgstr "" -#: assistant\commands\admin.py:313 +#: assistant\commands\admin.py:543 msgid "Prefix\n" "{}\n" "Suffix\n" "{}" msgstr "" -#: assistant\commands\admin.py:320 +#: assistant\commands\admin.py:550 msgid "System prompt override is **Allowed**, users can set a personal system prompt per convo." msgstr "" -#: assistant\commands\admin.py:322 +#: assistant\commands\admin.py:552 msgid "System prompt override is **Disabled**, users cannot set a personal system prompt per convo." msgstr "" -#: assistant\commands\admin.py:323 +#: assistant\commands\admin.py:553 msgid "\n" "*This will be restricted to mods if collaborative conversations are enabled!*" msgstr "" -#: assistant\commands\admin.py:324 +#: assistant\commands\admin.py:554 msgid "System Prompt Overriding" msgstr "" -#: assistant\commands\admin.py:332 +#: assistant\commands\admin.py:562 msgid "Channel Prompt Overrides" msgstr "" -#: assistant\commands\admin.py:343 +#: assistant\commands\admin.py:578 +msgid "• System prompt - `{}`" +msgstr "" + +#: assistant\commands\admin.py:581 +msgid "• Initial prompt - `{}`" +msgstr "" + +#: assistant\commands\admin.py:586 +msgid "• <#{}> - `{}`" +msgstr "" + +#: assistant\commands\admin.py:589 +msgid "⚠️ Cache Warning" +msgstr "" + +#: assistant\commands\admin.py:590 +msgid "These prompts contain dynamic variable placeholders that break prompt prefix caching on every request. Use `{prefix}floatingcontext` to move them to the floating context block instead.\n" +msgstr "" + +#: assistant\commands\admin.py:602 +msgid "Enabled ({}s TTL)" +msgstr "" + +#: assistant\commands\admin.py:607 +msgid "Off" +msgstr "" + +#: assistant\commands\admin.py:608 +msgid "5 minutes" +msgstr "" + +#: assistant\commands\admin.py:609 +msgid "1 hour" +msgstr "" + +#: assistant\commands\admin.py:612 +msgid "OpenRouter Caching" +msgstr "" + +#: assistant\commands\admin.py:614 +msgid "`Response Cache: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:615 +msgid "`Provider Prompt Cache: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:626 msgid "Auto-Reply Channels" msgstr "" -#: assistant\commands\admin.py:352 +#: assistant\commands\admin.py:635 msgid "Mixed (Please Refresh!)" msgstr "" -#: assistant\commands\admin.py:354 +#: assistant\commands\admin.py:637 msgid "Synced!" msgstr "" -#: assistant\commands\admin.py:356 +#: assistant\commands\admin.py:639 msgid "N/A" msgstr "" -#: assistant\commands\admin.py:359 +#: assistant\commands\admin.py:642 msgid "`Top N Embeddings: `{}\n" msgstr "" -#: assistant\commands\admin.py:360 +#: assistant\commands\admin.py:643 msgid "`Min Relatedness: `{}\n" msgstr "" -#: assistant\commands\admin.py:361 +#: assistant\commands\admin.py:644 msgid "`Encodings: `{}" msgstr "" -#: assistant\commands\admin.py:365 +#: assistant\commands\admin.py:648 msgid "Embeddings ({})" msgstr "" -#: assistant\commands\admin.py:373 +#: assistant\commands\admin.py:656 msgid "The following roles/users can use the `think_and_plan` tool: " msgstr "" -#: assistant\commands\admin.py:378 +#: assistant\commands\admin.py:661 msgid "`Function Calling: `{}\n" msgstr "" -#: assistant\commands\admin.py:379 +#: assistant\commands\admin.py:662 msgid "`Maximum Recursion: `{}\n" msgstr "" -#: assistant\commands\admin.py:380 +#: assistant\commands\admin.py:663 msgid "`Function Tokens: `{}\n" msgstr "" -#: assistant\commands\admin.py:384 +#: assistant\commands\admin.py:667 msgid "The following cogs also have functions registered with the assistant\n" "{}" msgstr "" -#: assistant\commands\admin.py:389 +#: assistant\commands\admin.py:672 msgid "Custom Functions ({})" msgstr "" -#: assistant\commands\admin.py:394 +#: assistant\commands\admin.py:677 msgid "Max tokens" msgstr "" -#: assistant\commands\admin.py:396 +#: assistant\commands\admin.py:679 msgid "`Compaction: `{}\n" msgstr "" -#: assistant\commands\admin.py:397 +#: assistant\commands\admin.py:680 msgid "`Compaction Model: `{}\n" msgstr "" -#: assistant\commands\admin.py:397 +#: assistant\commands\admin.py:680 msgid "Same as chat" msgstr "" -#: assistant\commands\admin.py:398 +#: assistant\commands\admin.py:681 msgid "`Threshold: `{}\n" msgstr "" -#: assistant\commands\admin.py:400 +#: assistant\commands\admin.py:683 msgid "Context Compaction" msgstr "" -#: assistant\commands\admin.py:404 +#: assistant\commands\admin.py:687 msgid "API Key" msgstr "" -#: assistant\commands\admin.py:411 +#: assistant\commands\admin.py:694 msgid "Endpoint Override API Key" msgstr "" -#: assistant\commands\admin.py:419 +#: assistant\commands\admin.py:702 msgid "Regex Blacklist" msgstr "" -#: assistant\commands\admin.py:421 +#: assistant\commands\admin.py:704 msgid "Regex Failure Blocking" msgstr "" -#: assistant\commands\admin.py:422 +#: assistant\commands\admin.py:705 msgid "Block reply if regex replacement fails: **{}**" msgstr "" -#: assistant\commands\admin.py:427 +#: assistant\commands\admin.py:710 msgid "Conversations are stored persistently" msgstr "" -#: assistant\commands\admin.py:429 +#: assistant\commands\admin.py:712 msgid "conversations are stored in memory until reboot or reload" msgstr "" -#: assistant\commands\admin.py:431 +#: assistant\commands\admin.py:714 msgid "Persistent Conversations" msgstr "" -#: assistant\commands\admin.py:445 +#: assistant\commands\admin.py:728 msgid "Blacklist" msgstr "" -#: assistant\commands\admin.py:457 +#: assistant\commands\admin.py:740 msgid "Model Role Overrides" msgstr "" -#: assistant\commands\admin.py:468 +#: assistant\commands\admin.py:751 msgid "Max Token Role Overrides" msgstr "" -#: assistant\commands\admin.py:479 +#: assistant\commands\admin.py:763 msgid "Max Message Retention Role Overrides" msgstr "" -#: assistant\commands\admin.py:491 +#: assistant\commands\admin.py:778 msgid "Max Message Retention Time Role Overrides" msgstr "" -#: assistant\commands\admin.py:505 +#: assistant\commands\admin.py:793 msgid "Max Response Token Role Overrides" msgstr "" -#: assistant\commands\admin.py:516 +#: assistant\commands\admin.py:808 msgid "Reasoning Effort Role Overrides" msgstr "" -#: assistant\commands\admin.py:520 +#: assistant\commands\admin.py:815 msgid "Your Brave websearch API key is set!" msgstr "" -#: assistant\commands\admin.py:522 +#: assistant\commands\admin.py:817 msgid "Enables the use of the `search_web_brave` function\n" "Get your API key **[Here](https://brave.com/search/api/)**\n" msgstr "" -#: assistant\commands\admin.py:526 +#: assistant\commands\admin.py:821 msgid "Brave Websearch API key" msgstr "" -#: assistant\commands\admin.py:528 +#: assistant\commands\admin.py:823 msgid "Showing settings for {}" msgstr "" -#: assistant\commands\admin.py:534 +#: assistant\commands\admin.py:829 msgid "SystemPrompt" msgstr "" -#: assistant\commands\admin.py:540 +#: assistant\commands\admin.py:835 msgid "InitialPrompt" msgstr "" -#: assistant\commands\admin.py:550 +#: assistant\commands\admin.py:845 msgid "Sent your current settings for this server in DMs!" msgstr "" -#: assistant\commands\admin.py:552 +#: assistant\commands\admin.py:847 msgid "You need to allow DMs so I can message you!" msgstr "" -#: assistant\commands\admin.py:559 -#, docstring -msgid "View the token usage stats for this server" -msgstr "" - -#: assistant\commands\admin.py:562 -msgid "There is no usage data yet!" -msgstr "" - -#: assistant\commands\admin.py:593 -msgid "`Total: `{} (${} @ ${}/1k tokens)" -msgstr "" - -#: assistant\commands\admin.py:600 -msgid "Free/Self-Hosted" -msgstr "" - -#: assistant\commands\admin.py:604 -msgid "`Input: `{} (${} @ ${}/1k tokens)\n" -"`Output: `{} (${} @ ${}/1k tokens)\n" -"`Total: `{} (${})" -msgstr "" - -#: assistant\commands\admin.py:618 -msgid "**Overall Token Usage and Cost**\n" -"`Input: `{} (${})\n" -"`Output: `{} (${})\n" -"`Total: `{} (${})\n" -"`Tool Calls: `{}\n" -msgstr "" - -#: assistant\commands\admin.py:639 -#, docstring -msgid "Reset the token usage stats for this server" -msgstr "" - -#: assistant\commands\admin.py:642 -msgid "Token usage stats have been reset!" -msgstr "" - -#: assistant\commands\admin.py:648 +#: assistant\commands\admin.py:854 #, docstring msgid "\n" -" Set this server's API key\n" +" Set this server's API key\n\n" +" Used for all requests from this guild - whether routing to OpenAI\n" +" directly, the guild's endpoint override, or the global endpoint\n" +" override. If not set, the global endpoint key is used as a fallback.\n" " " msgstr "" -#: assistant\commands\admin.py:654 +#: assistant\commands\admin.py:864 msgid "Click to set this server's API key\n\n" "To remove your key, enter `none`" msgstr "" -#: assistant\commands\admin.py:663 +#: assistant\commands\admin.py:873 msgid "API key has been removed!" msgstr "" -#: assistant\commands\admin.py:666 assistant\commands\admin.py:695 -#: assistant\commands\admin.py:723 +#: assistant\commands\admin.py:876 assistant\commands\admin.py:905 +#: assistant\commands\admin.py:938 assistant\commands\admin.py:3952 msgid "No API key was entered!" msgstr "" -#: assistant\commands\admin.py:669 +#: assistant\commands\admin.py:879 msgid "API key has been set!" msgstr "" -#: assistant\commands\admin.py:679 +#: assistant\commands\admin.py:889 #, docstring msgid "\n" -" Enables use of the `search_web_brave` function\n\n" -" Get your API key **[Here](https://brave.com/search/api/)**\n" +" Set the Brave Search API key (owner) - used by the web-search tool\n\n" +" Get your API key **[here](https://brave.com/search/api/)**.\n" " " msgstr "" -#: assistant\commands\admin.py:685 +#: assistant\commands\admin.py:895 msgid "Click to set your API key\n\n" "To remove your keys, enter `none`" msgstr "" -#: assistant\commands\admin.py:693 +#: assistant\commands\admin.py:903 msgid "Brave API key has been removed!" msgstr "" -#: assistant\commands\admin.py:698 +#: assistant\commands\admin.py:908 msgid "Brave API key has been set!" msgstr "" -#: assistant\commands\admin.py:706 +#: assistant\commands\admin.py:916 #, docstring msgid "\n" -" Set the global API key used for the custom endpoint override\n\n" -" This key is only used when an endpoint override is configured and a guild\n" +" Set the global API key for the default endpoint override (owner)\n\n" +" This key is only used when a global endpoint override is set\n" +" (see `[p]assistant api globalendpoint`) and the requesting guild\n" " has not provided its own API key.\n" " " msgstr "" -#: assistant\commands\admin.py:713 +#: assistant\commands\admin.py:924 msgid "Click to set the API key used for the endpoint override\n\n" "To remove the key, enter `none`" msgstr "" -#: assistant\commands\admin.py:721 +#: assistant\commands\admin.py:933 msgid "Endpoint override API key has been removed!" msgstr "" -#: assistant\commands\admin.py:726 +#: assistant\commands\admin.py:942 msgid "Endpoint override API key has been set!" msgstr "" -#: assistant\commands\admin.py:732 +#: assistant\commands\admin.py:952 +#, docstring +msgid "\n" +" Set this guild's endpoint URL (used for both chat and embeddings)\n\n" +" The endpoint must be a full base URL ending in `/v1`, for example:\n" +" `https://openrouter.ai/api/v1`\n\n" +" Set the API key for this endpoint with `[p]assistant api key`.\n\n" +" After setting, use `[p]assistant set model` (no args) to open an\n" +" interactive model picker. Router endpoints like OpenRouter also\n" +" accept special aliases like `openrouter/auto` or `openrouter/free`.\n\n" +" Run without arguments to view the current guild endpoint.\n" +" Use `none` to remove the guild endpoint override.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:972 +msgid "Guild Endpoint Override" +msgstr "" + +#: assistant\commands\admin.py:973 +msgid "Current endpoint: `{}`" +msgstr "" + +#: assistant\commands\admin.py:983 +msgid "No guild endpoint override is set." +msgstr "" + +#: assistant\commands\admin.py:990 +msgid "Guild endpoint override has been removed!" +msgstr "" + +#: assistant\commands\admin.py:993 +msgid "No guild endpoint override was set." +msgstr "" + +#: assistant\commands\admin.py:1002 +msgid "Guild endpoint override set to `{}`" +msgstr "" + +#: assistant\commands\admin.py:1009 +msgid "Endpoint probed successfully!\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:1024 +msgid "Could not probe the endpoint automatically. You can still use it, but model discovery may be limited." +msgstr "" + +#: assistant\commands\admin.py:1032 +#, docstring +msgid "Clear this guild's endpoint override (URL and cached profile)" +msgstr "" + +#: assistant\commands\admin.py:1035 +msgid "No per-guild endpoint override is set." +msgstr "" + +#: assistant\commands\admin.py:1038 +msgid "Guild endpoint override has been cleared!" +msgstr "" + +#: assistant\commands\admin.py:1044 +#, docstring +msgid "Show this guild's API key and endpoint override status" +msgstr "" + +#: assistant\commands\admin.py:1047 +msgid "Guild API Overrides" +msgstr "" + +#: assistant\commands\admin.py:1051 +msgid "Guild API Key" +msgstr "" + +#: assistant\commands\admin.py:1052 +msgid "Set" +msgstr "" + +#: assistant\commands\admin.py:1052 +msgid "Not set (using global key)" +msgstr "" + +#: assistant\commands\admin.py:1056 +msgid "Endpoint Override" +msgstr "" + +#: assistant\commands\admin.py:1057 +msgid "Not set (using global)" +msgstr "" + +#: assistant\commands\admin.py:1070 #, docstring msgid "Set the timezone used for prompt placeholders" msgstr "" -#: assistant\commands\admin.py:738 +#: assistant\commands\admin.py:1080 msgid "Invalid Timezone, did you mean `{}`?" msgstr "" -#: assistant\commands\admin.py:740 +#: assistant\commands\admin.py:1082 msgid "Timezone set to **{}** (`{}`)" msgstr "" -#: assistant\commands\admin.py:747 +#: assistant\commands\admin.py:1089 #, docstring msgid "\n" -" Set the initial prompt for GPT to use\n\n" +" Set the system prompt for GPT to use\n\n" " Check out [This Guide](https://platform.openai.com/docs/guides/prompt-engineering) for prompting help.\n\n" " **Placeholders**\n" " - **botname**: [botname]\n" @@ -673,70 +891,78 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:792 assistant\commands\admin.py:859 -#: assistant\commands\admin.py:941 assistant\commands\admin.py:998 -#: assistant\commands\admin.py:1275 assistant\commands\admin.py:1406 -#: assistant\commands\admin.py:1448 assistant\commands\base.py:791 +#: assistant\commands\admin.py:1134 assistant\commands\admin.py:1191 +#: assistant\commands\admin.py:1285 assistant\commands\admin.py:1356 +#: assistant\commands\admin.py:1622 assistant\commands\admin.py:1718 +#: assistant\commands\admin.py:1760 assistant\commands\base.py:836 msgid "Failed to read `{}`, bot owner can use `{}` for more information" msgstr "" -#: assistant\commands\admin.py:810 assistant\commands\admin.py:882 -#: assistant\commands\admin.py:959 +#: assistant\commands\admin.py:1152 assistant\commands\admin.py:1303 +#: assistant\commands\admin.py:1379 msgid "Your system and initial prompt combined will use {} tokens!\n" "Write a prompt combination using {} tokens or less to leave 10% of your configured max tokens for your response." msgstr "" -#: assistant\commands\admin.py:818 -msgid "The initial prompt has been removed!" +#: assistant\commands\admin.py:1160 +msgid "The system prompt has been removed!" msgstr "" -#: assistant\commands\admin.py:821 -msgid "Please include an initial prompt or .txt file!\n" +#: assistant\commands\admin.py:1163 +msgid "Please include a system prompt or .txt file!\n" "Use `{}` to view details for this command" msgstr "" -#: assistant\commands\admin.py:827 -msgid "The initial prompt has been overwritten!" +#: assistant\commands\admin.py:1169 +msgid "The system prompt has been overwritten!" msgstr "" -#: assistant\commands\admin.py:830 -msgid "Initial prompt has been set!" +#: assistant\commands\admin.py:1172 +msgid "System prompt has been set!" msgstr "" -#: assistant\commands\admin.py:837 +#: assistant\commands\admin.py:1179 #, docstring -msgid "Show the channel specific system prompt" +msgid "\n" +" Set the global default system prompt used by servers that inherit the default prompt\n\n" +" - Run without arguments to view the current global default prompt\n" +" - Use `none` to reset to the built-in default prompt\n" +" - Servers with a custom system prompt keep using their custom prompt\n" +" " msgstr "" -#: assistant\commands\admin.py:840 -msgid "No channel prompt set for {}" +#: assistant\commands\admin.py:1203 +msgid "Current global default system prompt for servers using the default or an unset system prompt:" msgstr "" -#: assistant\commands\admin.py:852 -#, docstring -msgid "Set a channel specific system prompt" +#: assistant\commands\admin.py:1204 +msgid "Servers with a custom system prompt are unchanged." msgstr "" -#: assistant\commands\admin.py:869 -msgid "Channel prompt has been removed from {}!" +#: assistant\commands\admin.py:1207 +msgid "This is currently using the built-in default prompt." msgstr "" -#: assistant\commands\admin.py:872 -msgid "No channel prompt set for {}!" +#: assistant\commands\admin.py:1209 +msgid "This is currently using a custom default prompt." msgstr "" -#: assistant\commands\admin.py:888 -msgid "Channel prompt has been overwritten for {}!" +#: assistant\commands\admin.py:1215 +msgid "Please include a system prompt or .txt file, or use `none` to reset to the built-in default." msgstr "" -#: assistant\commands\admin.py:890 -msgid "Channel prompt has been set for {}!" +#: assistant\commands\admin.py:1221 +msgid "The global default system prompt has been reset to the built-in default. Servers using the default or an unset system prompt will use it immediately." msgstr "" -#: assistant\commands\admin.py:896 +#: assistant\commands\admin.py:1231 +msgid "The global default system prompt has been updated. Servers using the default or an unset system prompt will use it immediately." +msgstr "" + +#: assistant\commands\admin.py:1240 #, docstring msgid "\n" -" Set the system prompt for GPT to use\n\n" +" Set the initial prompt for GPT to use\n\n" " Check out [This Guide](https://platform.openai.com/docs/guides/prompt-engineering) for prompting help.\n\n" " **Placeholders**\n" " - **botname**: [botname]\n" @@ -775,211 +1001,203 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:967 -msgid "The system prompt has been removed!" +#: assistant\commands\admin.py:1311 +msgid "The initial prompt has been removed!" msgstr "" -#: assistant\commands\admin.py:970 -msgid "Please include a system prompt or .txt file!\n" +#: assistant\commands\admin.py:1314 +msgid "Please include an initial prompt or .txt file!\n" "Use `{}` to view details for this command" msgstr "" -#: assistant\commands\admin.py:976 -msgid "The system prompt has been overwritten!" +#: assistant\commands\admin.py:1320 +msgid "The initial prompt has been overwritten!" msgstr "" -#: assistant\commands\admin.py:979 -msgid "System prompt has been set!" +#: assistant\commands\admin.py:1323 +msgid "Initial prompt has been set!" msgstr "" -#: assistant\commands\admin.py:986 +#: assistant\commands\admin.py:1334 #, docstring -msgid "\n" -" Set the global default system prompt used by servers that inherit the default prompt\n\n" -" - Run without arguments to view the current global default prompt\n" -" - Use `none` to reset to the built-in default prompt\n" -" - Servers with a custom system prompt keep using their custom prompt\n" -" " -msgstr "" - -#: assistant\commands\admin.py:1010 -msgid "Current global default system prompt for servers using the default or an unset system prompt:" +msgid "Show the channel specific system prompt" msgstr "" -#: assistant\commands\admin.py:1011 -msgid "Servers with a custom system prompt are unchanged." +#: assistant\commands\admin.py:1337 +msgid "No channel prompt set for {}" msgstr "" -#: assistant\commands\admin.py:1014 -msgid "This is currently using the built-in default prompt." +#: assistant\commands\admin.py:1349 +#, docstring +msgid "Set a channel specific system prompt" msgstr "" -#: assistant\commands\admin.py:1016 -msgid "This is currently using a custom default prompt." +#: assistant\commands\admin.py:1366 +msgid "Channel prompt has been removed from {}!" msgstr "" -#: assistant\commands\admin.py:1022 -msgid "Please include a system prompt or .txt file, or use `none` to reset to the built-in default." +#: assistant\commands\admin.py:1369 +msgid "No channel prompt set for {}!" msgstr "" -#: assistant\commands\admin.py:1028 -msgid "The global default system prompt has been reset to the built-in default. Servers using the default or an unset system prompt will use it immediately." +#: assistant\commands\admin.py:1385 +msgid "Channel prompt has been overwritten for {}!" msgstr "" -#: assistant\commands\admin.py:1038 -msgid "The global default system prompt has been updated. Servers using the default or an unset system prompt will use it immediately." +#: assistant\commands\admin.py:1387 +msgid "Channel prompt has been set for {}!" msgstr "" -#: assistant\commands\admin.py:1051 +#: assistant\commands\admin.py:1397 #, docstring msgid "Set the main auto-response channel for the assistant" msgstr "" -#: assistant\commands\admin.py:1056 +#: assistant\commands\admin.py:1402 msgid "Assistant channel has been removed" msgstr "" -#: assistant\commands\admin.py:1059 +#: assistant\commands\admin.py:1405 msgid "Assistant channel has been overwritten" msgstr "" -#: assistant\commands\admin.py:1062 +#: assistant\commands\admin.py:1408 msgid "Channel id has been set" msgstr "" -#: assistant\commands\admin.py:1068 +#: assistant\commands\admin.py:1414 #, docstring msgid "Toggle this channel as an auto-response channel" msgstr "" -#: assistant\commands\admin.py:1071 +#: assistant\commands\admin.py:1417 msgid "This channel is already set as the assistant channel!" msgstr "" -#: assistant\commands\admin.py:1074 +#: assistant\commands\admin.py:1420 msgid "I will no longer auto-respond to messages in this channel!" msgstr "" -#: assistant\commands\admin.py:1077 +#: assistant\commands\admin.py:1423 msgid "I will now auto-respond to messages in this channel!" msgstr "" -#: assistant\commands\admin.py:1082 +#: assistant\commands\admin.py:1428 #, docstring msgid "Toggle allowing per-conversation system prompt overriding" msgstr "" -#: assistant\commands\admin.py:1086 +#: assistant\commands\admin.py:1432 msgid "System prompt overriding **Disabled**, users cannot set per-convo system prompts" msgstr "" -#: assistant\commands\admin.py:1089 +#: assistant\commands\admin.py:1435 msgid "System prompt overriding **Enabled**, users can now set per-convo system prompts" msgstr "" -#: assistant\commands\admin.py:1094 +#: assistant\commands\admin.py:1440 #, docstring msgid "Toggle the assistant on or off" msgstr "" -#: assistant\commands\admin.py:1098 +#: assistant\commands\admin.py:1444 msgid "The assistant is now **Disabled**" msgstr "" -#: assistant\commands\admin.py:1101 +#: assistant\commands\admin.py:1447 msgid "The assistant is now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1106 +#: assistant\commands\admin.py:1452 #, docstring msgid "Toggle the draw command on or off" msgstr "" -#: assistant\commands\admin.py:1110 +#: assistant\commands\admin.py:1456 msgid "The draw command is now **Disabled**" msgstr "" -#: assistant\commands\admin.py:1113 +#: assistant\commands\admin.py:1459 msgid "The draw command is now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1118 +#: assistant\commands\admin.py:1464 #, docstring msgid "Toggle the auto-answer feature on or off" msgstr "" -#: assistant\commands\admin.py:1122 +#: assistant\commands\admin.py:1468 msgid "Auto-answer has been **Disabled**" msgstr "" -#: assistant\commands\admin.py:1125 +#: assistant\commands\admin.py:1471 msgid "Auto-answer has been **Enabled**" msgstr "" -#: assistant\commands\admin.py:1130 +#: assistant\commands\admin.py:1476 #, docstring msgid "Set the auto-answer threshold for the bot" msgstr "" -#: assistant\commands\admin.py:1133 +#: assistant\commands\admin.py:1479 msgid "Auto-answer threshold has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1140 +#: assistant\commands\admin.py:1488 #, docstring msgid "Ignore a channel for auto-answer" msgstr "" -#: assistant\commands\admin.py:1151 +#: assistant\commands\admin.py:1499 msgid "Auto-answer will no longer ignore {}" msgstr "" -#: assistant\commands\admin.py:1154 assistant\commands\admin.py:1321 +#: assistant\commands\admin.py:1502 assistant\commands\admin.py:1670 msgid "Channel not found!" msgstr "" -#: assistant\commands\admin.py:1156 +#: assistant\commands\admin.py:1504 msgid "Auto-answer will now ignore {}" msgstr "" -#: assistant\commands\admin.py:1161 +#: assistant\commands\admin.py:1509 #, docstring msgid "Set the model used for auto-answer" msgstr "" -#: assistant\commands\admin.py:1168 +#: assistant\commands\admin.py:1517 msgid "Configured auto-answer model" msgstr "" -#: assistant\commands\admin.py:1171 assistant\commands\admin.py:1791 -#: assistant\commands\admin.py:1832 assistant\commands\admin.py:1834 -#: assistant\commands\admin.py:2903 +#: assistant\commands\admin.py:1520 assistant\commands\admin.py:2139 +#: assistant\commands\admin.py:2213 assistant\commands\admin.py:2215 +#: assistant\commands\admin.py:3978 msgid "Valid models are:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1173 assistant\commands\admin.py:3374 +#: assistant\commands\admin.py:1522 assistant\commands\admin.py:4489 msgid "Invalid model, valid models are: {}" msgstr "" -#: assistant\commands\admin.py:1175 +#: assistant\commands\admin.py:1524 msgid "Auto-answer model has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1186 +#: assistant\commands\admin.py:1533 #, docstring msgid "Toggle the trigger word feature on or off" msgstr "" -#: assistant\commands\admin.py:1190 +#: assistant\commands\admin.py:1537 msgid "Trigger word feature has been **Disabled**" msgstr "" -#: assistant\commands\admin.py:1193 +#: assistant\commands\admin.py:1540 msgid "Trigger word feature has been **Enabled**" msgstr "" -#: assistant\commands\admin.py:1198 +#: assistant\commands\admin.py:1545 #, docstring msgid "\n" " Add or remove a trigger phrase (supports regex)\n\n" @@ -992,23 +1210,23 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1212 +#: assistant\commands\admin.py:1559 msgid "That regex pattern is invalid!" msgstr "" -#: assistant\commands\admin.py:1217 +#: assistant\commands\admin.py:1564 msgid "⚠️ Warning: `{}` is a very broad pattern that may match most messages!" msgstr "" -#: assistant\commands\admin.py:1222 +#: assistant\commands\admin.py:1569 msgid "Trigger phrase `{}` has been **Removed**" msgstr "" -#: assistant\commands\admin.py:1225 +#: assistant\commands\admin.py:1572 msgid "Trigger phrase `{}` has been **Added**" msgstr "" -#: assistant\commands\admin.py:1230 +#: assistant\commands\admin.py:1577 #, docstring msgid "\n" " Set the prompt to use when a trigger phrase is matched\n\n" @@ -1050,100 +1268,66 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1287 +#: assistant\commands\admin.py:1634 msgid "The trigger prompt has been removed!" msgstr "" -#: assistant\commands\admin.py:1290 +#: assistant\commands\admin.py:1637 msgid "Please include a trigger prompt or .txt file!\n" "Use `{}` to view details for this command" msgstr "" -#: assistant\commands\admin.py:1296 +#: assistant\commands\admin.py:1643 msgid "The trigger prompt has been overwritten!" msgstr "" -#: assistant\commands\admin.py:1299 +#: assistant\commands\admin.py:1646 msgid "Trigger prompt has been set!" msgstr "" -#: assistant\commands\admin.py:1307 +#: assistant\commands\admin.py:1656 #, docstring msgid "Ignore a channel or category for trigger phrases" msgstr "" -#: assistant\commands\admin.py:1318 +#: assistant\commands\admin.py:1667 msgid "Trigger phrases will no longer ignore {}" msgstr "" -#: assistant\commands\admin.py:1323 +#: assistant\commands\admin.py:1672 msgid "Trigger phrases will now ignore {}" msgstr "" -#: assistant\commands\admin.py:1329 +#: assistant\commands\admin.py:1678 #, docstring msgid "View configured trigger phrases" msgstr "" -#: assistant\commands\admin.py:1332 +#: assistant\commands\admin.py:1681 msgid "No trigger phrases configured!" msgstr "" -#: assistant\commands\admin.py:1335 +#: assistant\commands\admin.py:1684 msgid "Trigger Phrases" msgstr "" -#: assistant\commands\admin.py:1336 +#: assistant\commands\admin.py:1685 msgid "The following phrases will trigger a response:\n" msgstr "" -#: assistant\commands\admin.py:1342 +#: assistant\commands\admin.py:1691 msgid "Patterns" msgstr "" -#: assistant\commands\admin.py:1345 +#: assistant\commands\admin.py:1694 msgid "Status" msgstr "" -#: assistant\commands\admin.py:1352 +#: assistant\commands\admin.py:1701 msgid "Ignored Channels" msgstr "" -#: assistant\commands\admin.py:1358 -#, docstring -msgid "Switch vision resolution between high and low for relevant GPT-4-Turbo models" -msgstr "" - -#: assistant\commands\admin.py:1362 -msgid "Vision resolution has been set to **Low**" -msgstr "" - -#: assistant\commands\admin.py:1365 -msgid "Vision resolution has been set to **High**" -msgstr "" - -#: assistant\commands\admin.py:1368 -msgid "Vision resolution has been set to **Auto**" -msgstr "" - -#: assistant\commands\admin.py:1373 -#, docstring -msgid "Switch reasoning effort between none, minimal, low, medium, high, and xhigh\n\n" -" Not all models support every level. Unsupported levels are automatically mapped to the closest supported value.\n" -" - **none**: No reasoning (gpt-5.4 only, skipped for other models)\n" -" - **minimal**: Minimal reasoning (gpt-5 only, mapped to low for o-series)\n" -" - **low**: Low reasoning effort\n" -" - **medium**: Medium reasoning effort\n" -" - **high**: High reasoning effort\n" -" - **xhigh**: Maximum reasoning (gpt-5.4 only, mapped to high for other models)\n" -" " -msgstr "" - -#: assistant\commands\admin.py:1390 -msgid "Reasoning effort has been set to **{}**" -msgstr "" - -#: assistant\commands\admin.py:1395 +#: assistant\commands\admin.py:1707 #, docstring msgid "\n" " Set the prefix used to detect model thinking blocks\n\n" @@ -1152,29 +1336,29 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1417 +#: assistant\commands\admin.py:1729 msgid "Think tag prefix is already set to the default value." msgstr "" -#: assistant\commands\admin.py:1420 +#: assistant\commands\admin.py:1732 msgid "Think tag prefix reset to default:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1426 +#: assistant\commands\admin.py:1738 msgid "Think tag prefix cannot be empty." msgstr "" -#: assistant\commands\admin.py:1429 +#: assistant\commands\admin.py:1741 msgid "Think tag prefix is already set to that value." msgstr "" -#: assistant\commands\admin.py:1432 +#: assistant\commands\admin.py:1744 msgid "Think tag prefix has been set to:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1437 +#: assistant\commands\admin.py:1749 #, docstring msgid "\n" " Set the suffix used to detect model thinking blocks\n\n" @@ -1183,68 +1367,68 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1459 +#: assistant\commands\admin.py:1771 msgid "Think tag suffix is already set to the default value." msgstr "" -#: assistant\commands\admin.py:1462 +#: assistant\commands\admin.py:1774 msgid "Think tag suffix reset to default:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1468 +#: assistant\commands\admin.py:1780 msgid "Think tag suffix cannot be empty." msgstr "" -#: assistant\commands\admin.py:1471 +#: assistant\commands\admin.py:1783 msgid "Think tag suffix is already set to that value." msgstr "" -#: assistant\commands\admin.py:1474 +#: assistant\commands\admin.py:1786 msgid "Think tag suffix has been set to:\n" "{}" msgstr "" -#: assistant\commands\admin.py:1479 +#: assistant\commands\admin.py:1791 #, docstring msgid "Toggle whether questions need to end with **__?__**" msgstr "" -#: assistant\commands\admin.py:1483 +#: assistant\commands\admin.py:1795 msgid "Questions will be answered regardless of if they end with **?**" msgstr "" -#: assistant\commands\admin.py:1486 +#: assistant\commands\admin.py:1798 msgid "Questions must end in **?** to be answered" msgstr "" -#: assistant\commands\admin.py:1491 +#: assistant\commands\admin.py:1803 #, docstring msgid "Toggle whether the bot responds to mentions in any channel" msgstr "" -#: assistant\commands\admin.py:1495 +#: assistant\commands\admin.py:1807 msgid "The bot will no longer respond to mentions" msgstr "" -#: assistant\commands\admin.py:1498 +#: assistant\commands\admin.py:1810 msgid "The bot will now respond to mentions" msgstr "" -#: assistant\commands\admin.py:1503 +#: assistant\commands\admin.py:1815 #, docstring msgid "Toggle whether to ping the user on replies" msgstr "" -#: assistant\commands\admin.py:1507 +#: assistant\commands\admin.py:1819 msgid "Mentions are now **Disabled**" msgstr "" -#: assistant\commands\admin.py:1510 +#: assistant\commands\admin.py:1822 msgid "Mentions are now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1515 +#: assistant\commands\admin.py:1827 #, docstring msgid "\n" " Toggle collaborative conversations\n\n" @@ -1252,39 +1436,39 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1523 +#: assistant\commands\admin.py:1835 msgid "Collaborative conversations are now **Disabled**" msgstr "" -#: assistant\commands\admin.py:1526 +#: assistant\commands\admin.py:1838 msgid "Collaborative conversations are now **Enabled**" msgstr "" -#: assistant\commands\admin.py:1556 +#: assistant\commands\admin.py:1843 #, docstring msgid "\n" " Set the max messages for a conversation\n\n" " Conversation retention is cached and gets reset when the bot restarts or the cog reloads.\n\n" " Regardless of this number, the initial prompt and internal system message are always included,\n" " this only applies to any conversation between the user and bot after that.\n\n" -" Set to 0 to disable conversation retention\n\n" +" Set to 0 for unlimited conversation retention\n\n" " **Note:** *actual message count may exceed the max retention during an API call*\n" " " msgstr "" -#: assistant\commands\admin.py:1569 assistant\commands\admin.py:2981 +#: assistant\commands\admin.py:1856 assistant\commands\admin.py:4060 msgid "Max retention needs to be at least 0 or higher" msgstr "" -#: assistant\commands\admin.py:1573 -msgid "Conversation retention has been disabled" +#: assistant\commands\admin.py:1860 +msgid "Message retention is now **unlimited**" msgstr "" -#: assistant\commands\admin.py:1575 +#: assistant\commands\admin.py:1862 msgid "Conversations can now retain up to **{}** messages" msgstr "" -#: assistant\commands\admin.py:1580 +#: assistant\commands\admin.py:1867 #, docstring msgid "\n" " Set the conversation expiration time\n\n" @@ -1294,19 +1478,57 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1589 assistant\commands\admin.py:3004 +#: assistant\commands\admin.py:1876 assistant\commands\admin.py:4083 msgid "Max retention time needs to be at least 0 or higher" msgstr "" -#: assistant\commands\admin.py:1593 +#: assistant\commands\admin.py:1880 msgid "Conversations will be stored until the bot restarts or the cog is reloaded" msgstr "" -#: assistant\commands\admin.py:1595 +#: assistant\commands\admin.py:1882 msgid "Conversations will be considered active for **{}** seconds" msgstr "" -#: assistant\commands\admin.py:1600 +#: assistant\commands\admin.py:1887 +#, docstring +msgid "\n" +" Set maximum tokens a convo can consume\n\n" +" Set to 0 for dynamic token usage\n\n" +" **Tips**\n" +" - Max tokens are a soft cap, sometimes messages can be a little over\n" +" - If you set max tokens too high the cog will auto-adjust to 100 less than the models natural cap\n" +" - Ideally set max to 500 less than that models maximum, to allow adequate responses\n\n" +" Using more than the model can handle will raise exceptions.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:1902 +msgid "The maximum amount of tokens sent in a payload will be {}.\n" +"*Note that models with token limits lower than this will still be trimmed*" +msgstr "" + +#: assistant\commands\admin.py:1907 +msgid "The maximum amount of tokens sent in a payload will be dynamic" +msgstr "" + +#: assistant\commands\admin.py:1913 +#, docstring +msgid "\n" +" Set the max response tokens the model can respond with\n\n" +" Set to 0 for response tokens to be dynamic\n" +" " +msgstr "" + +#: assistant\commands\admin.py:1921 +msgid "The maximum amount of tokens in the models responses will be {}." +msgstr "" + +#: assistant\commands\admin.py:1923 +msgid "Response tokens will now be dynamic" +msgstr "" + +#: assistant\commands\admin.py:1929 #, docstring msgid "\n" " Set the temperature for the model (0.0 - 2.0)\n" @@ -1315,15 +1537,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1607 +#: assistant\commands\admin.py:1936 msgid "Temperature must be between **0.0** and **2.0**" msgstr "" -#: assistant\commands\admin.py:1612 +#: assistant\commands\admin.py:1941 msgid "Temperature has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1616 +#: assistant\commands\admin.py:1945 #, docstring msgid "\n" " Set the frequency penalty for the model (-2.0 to 2.0)\n" @@ -1332,15 +1554,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1623 +#: assistant\commands\admin.py:1952 msgid "Frequency penalty must be between **-2.0** and **2.0**" msgstr "" -#: assistant\commands\admin.py:1628 +#: assistant\commands\admin.py:1957 msgid "Frequency penalty has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1632 +#: assistant\commands\admin.py:1961 #, docstring msgid "\n" " Set the presence penalty for the model (-2.0 to 2.0)\n" @@ -1349,15 +1571,49 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1639 +#: assistant\commands\admin.py:1968 msgid "Presence penalty must be between **-2.0** and **2.0**" msgstr "" -#: assistant\commands\admin.py:1644 +#: assistant\commands\admin.py:1973 msgid "Presence penalty has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1648 +#: assistant\commands\admin.py:1977 +#, docstring +msgid "Switch vision resolution between high and low for relevant GPT-4-Turbo models" +msgstr "" + +#: assistant\commands\admin.py:1981 +msgid "Vision resolution has been set to **Low**" +msgstr "" + +#: assistant\commands\admin.py:1984 +msgid "Vision resolution has been set to **High**" +msgstr "" + +#: assistant\commands\admin.py:1987 +msgid "Vision resolution has been set to **Auto**" +msgstr "" + +#: assistant\commands\admin.py:1992 +#, docstring +msgid "Switch reasoning effort between none, minimal, low, medium, high, and xhigh\n\n" +" Not all models support every level. Unsupported levels are automatically mapped to the closest supported value.\n" +" - **none**: No reasoning (gpt-5.4 only, skipped for other models)\n" +" - **minimal**: Minimal reasoning (gpt-5 only, mapped to low for o-series)\n" +" - **low**: Low reasoning effort\n" +" - **medium**: Medium reasoning effort\n" +" - **high**: High reasoning effort\n" +" - **xhigh**: Maximum reasoning (gpt-5.4 only, mapped to high for other models)\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2009 +msgid "Reasoning effort has been set to **{}**" +msgstr "" + +#: assistant\commands\admin.py:2014 #, docstring msgid "\n" " Make the model more deterministic by setting a seed for the model.\n" @@ -1366,15 +1622,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1655 +#: assistant\commands\admin.py:2021 msgid "Seed must be a positive integer" msgstr "" -#: assistant\commands\admin.py:1659 +#: assistant\commands\admin.py:2025 msgid "The seed has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:1663 +#: assistant\commands\admin.py:2032 #, docstring msgid "\n" " Refresh embedding weights\n\n" @@ -1383,47 +1639,43 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1676 +#: assistant\commands\admin.py:2045 msgid "{} embeddings have been updated" msgstr "" -#: assistant\commands\admin.py:1678 +#: assistant\commands\admin.py:2047 msgid "No embeddings needed to be refreshed" msgstr "" -#: assistant\commands\admin.py:1682 +#: assistant\commands\admin.py:2051 #, docstring msgid "Toggle whether GPT can call functions" msgstr "" -#: assistant\commands\admin.py:1686 +#: assistant\commands\admin.py:2055 msgid "Assistant will not call functions" msgstr "" -#: assistant\commands\admin.py:1689 +#: assistant\commands\admin.py:2058 msgid "Assistant will now call functions as needed" msgstr "" -#: assistant\commands\admin.py:1694 +#: assistant\commands\admin.py:2063 #, docstring msgid "Set the maximum function calls allowed in a row\n\n" -" This sets how many times the model can call functions in a row\n\n" -" Only the following models can call functions at the moment\n" -" - gpt-4o-mini\n" -" - gpt-4o\n" -" - ect..\n" +" This sets how many times the model can call functions in a row\n" " " msgstr "" -#: assistant\commands\admin.py:1706 +#: assistant\commands\admin.py:2070 msgid "Function calls will not be used since recursion is 0" msgstr "" -#: assistant\commands\admin.py:1708 +#: assistant\commands\admin.py:2072 msgid "The model can now call various functions up to {} times before returning a response" msgstr "" -#: assistant\commands\admin.py:1714 +#: assistant\commands\admin.py:2078 #, docstring msgid "\n" " set min character length for questions\n\n" @@ -1431,85 +1683,64 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1720 +#: assistant\commands\admin.py:2084 msgid "Minimum length needs to be at least 0 or higher" msgstr "" -#: assistant\commands\admin.py:1724 +#: assistant\commands\admin.py:2088 msgid "{} will respond regardless of message length" msgstr "" -#: assistant\commands\admin.py:1727 +#: assistant\commands\admin.py:2091 msgid "{} will respond to messages with more than **{}** characters" msgstr "" -#: assistant\commands\admin.py:1735 +#: assistant\commands\admin.py:2099 #, docstring msgid "\n" -" Set maximum tokens a convo can consume\n\n" -" Set to 0 for dynamic token usage\n\n" -" **Tips**\n" -" - Max tokens are a soft cap, sometimes messages can be a little over\n" -" - If you set max tokens too high the cog will auto-adjust to 100 less than the models natural cap\n" -" - Ideally set max to 500 less than that models maximum, to allow adequate responses\n\n" -" Using more than the model can handle will raise exceptions.\n" +" Set the chat model to use\n\n" +" Run without arguments to open an interactive picker that lists every\n" +" model your endpoint advertises, grouped by provider. The picker also\n" +" accepts manual entry - useful for router aliases like\n" +" `openrouter/auto` or `openrouter/free`.\n" " " msgstr "" -#: assistant\commands\admin.py:1750 -msgid "The maximum amount of tokens sent in a payload will be {}.\n" -"*Note that models with token limits lower than this will still be trimmed*" -msgstr "" - -#: assistant\commands\admin.py:1755 -msgid "The maximum amount of tokens sent in a payload will be dynamic" +#: assistant\commands\admin.py:2121 +msgid "Could not probe `{}` to discover available models. Try setting a model id manually, e.g. `{}assistant set model openrouter/auto`." msgstr "" -#: assistant\commands\admin.py:1761 -#, docstring -msgid "\n" -" Set the max response tokens the model can respond with\n\n" -" Set to 0 for response tokens to be dynamic\n" -" " +#: assistant\commands\admin.py:2146 assistant\commands\admin.py:3985 +msgid "Error: {}" msgstr "" -#: assistant\commands\admin.py:1769 -msgid "The maximum amount of tokens in the models responses will be {}." +#: assistant\commands\admin.py:2150 +msgid "The **{}** model will now be used" msgstr "" -#: assistant\commands\admin.py:1771 -msgid "Response tokens will now be dynamic" +#: assistant\commands\admin.py:2157 +msgid "**Note**: Starting with `o1-2024-12-17`, reasoning models in the API will avoid generating responses with markdown formatting. To signal to the model when you do want markdown formatting in the response, include the string `Formatting re-enabled` on the first line of your system message." msgstr "" -#: assistant\commands\admin.py:1777 +#: assistant\commands\admin.py:2166 #, docstring msgid "\n" -" Set the OpenAI model to use\n" +" Set the embedding model to use\n\n" +" Run without arguments to open an interactive picker that lists\n" +" every embedding model your endpoint advertises, grouped by provider.\n" +" Embeddings use the same endpoint as chat.\n" " " msgstr "" -#: assistant\commands\admin.py:1798 assistant\commands\admin.py:2910 -msgid "Error: {}" -msgstr "" - -#: assistant\commands\admin.py:1802 -msgid "The **{}** model will now be used" -msgstr "" - -#: assistant\commands\admin.py:1809 -msgid "**Note**: Starting with `o1-2024-12-17`, reasoning models in the API will avoid generating responses with markdown formatting. To signal to the model when you do want markdown formatting in the response, include the string `Formatting re-enabled` on the first line of your system message." -msgstr "" - -#: assistant\commands\admin.py:1818 -#, docstring -msgid "Set the OpenAI Embedding model to use" +#: assistant\commands\admin.py:2192 +msgid "Could not probe `{}` to discover available embedding models. Try setting an id manually, e.g. `{}assistant embed model text-embedding-3-small`." msgstr "" -#: assistant\commands\admin.py:1836 +#: assistant\commands\admin.py:2217 msgid "The **{}** model will now be used for embeddings" msgstr "" -#: assistant\commands\admin.py:1845 +#: assistant\commands\admin.py:2225 #, docstring msgid "\n" " Wipe saved embeddings for the assistant\n\n" @@ -1517,15 +1748,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1851 assistant\commands\admin.py:3257 +#: assistant\commands\admin.py:2231 assistant\commands\admin.py:4373 msgid "Not wiping embedding data" msgstr "" -#: assistant\commands\admin.py:1855 +#: assistant\commands\admin.py:2235 msgid "All embedding data has been wiped!" msgstr "" -#: assistant\commands\admin.py:1860 +#: assistant\commands\admin.py:2240 #, docstring msgid "\n" " Wipe saved conversations for the assistant in this server\n\n" @@ -1533,15 +1764,15 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1866 assistant\commands\admin.py:3218 +#: assistant\commands\admin.py:2246 assistant\commands\admin.py:4334 msgid "Not wiping conversations" msgstr "" -#: assistant\commands\admin.py:1870 +#: assistant\commands\admin.py:2250 msgid "Conversations have been wiped in this server!" msgstr "" -#: assistant\commands\admin.py:1875 +#: assistant\commands\admin.py:2255 #, docstring msgid "\n" " Set the embedding inclusion amout\n\n" @@ -1549,19 +1780,19 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1881 +#: assistant\commands\admin.py:2261 msgid "Top N must be between 0 and 10" msgstr "" -#: assistant\commands\admin.py:1885 +#: assistant\commands\admin.py:2265 msgid "Embeddings will not be pulled during conversations" msgstr "" -#: assistant\commands\admin.py:1887 +#: assistant\commands\admin.py:2267 msgid "Up to **{}** embeddings will be pulled for each interaction" msgstr "" -#: assistant\commands\admin.py:1892 +#: assistant\commands\admin.py:2272 #, docstring msgid "\n" " Set the minimum relatedness an embedding must be to include with the prompt\n\n" @@ -1571,412 +1802,1030 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:1902 +#: assistant\commands\admin.py:2282 msgid "Minimum relatedness must be between 0 and 1" msgstr "" -#: assistant\commands\admin.py:1905 -msgid "Minimum relatedness has been set to **{}**" +#: assistant\commands\admin.py:2285 +msgid "Minimum relatedness has been set to **{}**" +msgstr "" + +#: assistant\commands\admin.py:2290 +#, docstring +msgid "Remove certain words/phrases in the bot's responses" +msgstr "" + +#: assistant\commands\admin.py:2294 +msgid "That regex is invalid" +msgstr "" + +#: assistant\commands\admin.py:2298 +msgid "`{}` has been **Removed** from the blacklist" +msgstr "" + +#: assistant\commands\admin.py:2301 +msgid "`{}` has been **Added** to the blacklist" +msgstr "" + +#: assistant\commands\admin.py:2306 +#, docstring +msgid "\n" +" Toggle whether failed regex blocks the assistant's reply\n\n" +" Some regexes can cause [catastrophically backtracking](https://www.rexegg.com/regex-explosive-quantifiers.html)\n" +" The bot can safely handle if this happens and will either continue on, or block the response.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2315 +msgid "If a regex blacklist fails, the bots reply will be blocked" +msgstr "" + +#: assistant\commands\admin.py:2318 +msgid "If a reges blacklist fails, the bot will still reply" +msgstr "" + +#: assistant\commands\admin.py:2323 +#, docstring +msgid "\n" +" Toggle question mode\n\n" +" If question mode is on, embeddings will only be sourced during the first message of a conversation and messages that end in **?**\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2331 +msgid "Question mode is now **Disabled**" +msgstr "" + +#: assistant\commands\admin.py:2334 +msgid "Question mode is now **Enabled**" +msgstr "" + +#: assistant\commands\admin.py:2339 +#, docstring +msgid "Import embeddings to use with the assistant\n\n" +" Args:\n" +" overwrite (bool): overwrite embeddings with existing entry names\n\n" +" This will read excel files too\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2352 +msgid "You must attach **.csv** files to this command or reference a message that has them!" +msgstr "" + +#: assistant\commands\admin.py:2365 assistant\commands\admin.py:2442 +#: assistant\commands\admin.py:2505 +msgid "Error reading **{}**: {}" +msgstr "" + +#: assistant\commands\admin.py:2370 +msgid "**{}** contains invalid formatting, columns must be " +msgstr "" + +#: assistant\commands\admin.py:2378 +msgid "There are no valid files to import!" +msgstr "" + +#: assistant\commands\admin.py:2380 assistant\commands\admin.py:2520 +msgid "Processing the following files in the background\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:2394 assistant\commands\admin.py:2531 +msgid "processing" +msgstr "" + +#: assistant\commands\admin.py:2396 assistant\commands\admin.py:2533 +msgid "overwriting" +msgstr "" + +#: assistant\commands\admin.py:2404 assistant\commands\admin.py:2541 +msgid "{}\n" +"`Currently {}: `**{}** ({}/{})" +msgstr "" + +#: assistant\commands\admin.py:2410 assistant\commands\admin.py:2551 +msgid "Failed to process embedding: `{}`" +msgstr "" + +#: assistant\commands\admin.py:2415 assistant\commands\admin.py:2564 +#: assistant\commands\admin.py:2568 +msgid "{}\n" +"**COMPLETE**" +msgstr "" + +#: assistant\commands\admin.py:2416 assistant\commands\admin.py:2565 +msgid "Successfully imported {} embeddings!" +msgstr "" + +#: assistant\commands\admin.py:2421 +#, docstring +msgid "Import embeddings to use with the assistant\n\n" +" Args:\n" +" overwrite (bool): overwrite embeddings with existing entry names\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2430 assistant\commands\admin.py:4318 +msgid "You must attach **.json** files to this command or reference a message that has them!" +msgstr "" + +#: assistant\commands\admin.py:2469 +msgid "Failed to import **{}** because it contains invalid formatting!" +msgstr "" + +#: assistant\commands\admin.py:2474 +msgid "Imported the following files: `{}`\n" +"{} embeddings imported" +msgstr "" + +#: assistant\commands\admin.py:2482 +#, docstring +msgid "Import embeddings from an .xlsx file\n\n" +" Args:\n" +" overwrite (bool): overwrite embeddings with existing entry names\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2491 +msgid "You must attach **.xlsx** files to this command or reference a message that has them!" +msgstr "" + +#: assistant\commands\admin.py:2512 +msgid "{} is invalid! Must contain the following columns: {}" +msgstr "" + +#: assistant\commands\admin.py:2569 +msgid "No embeddings needed to be updated!" +msgstr "" + +#: assistant\commands\admin.py:2574 +#, docstring +msgid "\n" +" Export embeddings to an .xlsx file\n\n" +" **Note:** csv exports do not include the embedding values\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2581 assistant\commands\admin.py:2627 +#: assistant\commands\admin.py:2671 +msgid "There are no embeddings to export!" +msgstr "" + +#: assistant\commands\admin.py:2621 +#, docstring +msgid "Export embeddings to a .csv file\n\n" +" **Note:** csv exports do not include the embedding values\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2640 assistant\commands\admin.py:2660 +#: assistant\commands\admin.py:2679 assistant\commands\admin.py:2699 +#: assistant\commands\admin.py:4304 +msgid "Here is your embeddings export!" +msgstr "" + +#: assistant\commands\admin.py:2643 assistant\commands\admin.py:2682 +#: assistant\commands\admin.py:4286 +msgid "File too large, attempting to compress..." +msgstr "" + +#: assistant\commands\admin.py:2663 assistant\commands\admin.py:2702 +#: assistant\commands\admin.py:4307 +msgid "File is still too large even with compression!" +msgstr "" + +#: assistant\commands\admin.py:2668 +#, docstring +msgid "Export embeddings to a json file" +msgstr "" + +#: assistant\commands\admin.py:2710 +#, docstring +msgid "\n" +" Manage embeddings for training\n\n" +" Embeddings are used to optimize training of the assistant and minimize token usage.\n\n" +" By using this the bot can store vast amounts of contextual information without going over the token limit.\n\n" +" **Note**\n" +" You can enter a search query with this command to bring up the menu and go directly to that embedding selection.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2760 +#, docstring +msgid "\n" +" Add custom function calls for Assistant to use\n\n" +" **READ**\n" +" - [Function Call Docs](https://platform.openai.com/docs/guides/gpt/function-calling)\n" +" - [OpenAI Cookbook](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_call_functions_with_chat_models.ipynb)\n" +" - [JSON Schema Reference](https://json-schema.org/understanding-json-schema/)\n\n" +" The following objects are passed by default as keyword arguments.\n" +" - **user**: the user currently chatting with the bot (discord.Member)\n" +" - **channel**: channel the user is chatting in (TextChannel|Thread|ForumChannel)\n" +" - **guild**: current guild (discord.Guild)\n" +" - **bot**: the bot object (Red)\n" +" - **conf**: the config model for Assistant (GuildSettings)\n" +" - All functions **MUST** include `*args, **kwargs` in the params and return a string\n" +" ```python\n" +" # Can be either sync or async\n" +" async def func(*args, **kwargs) -> str:\n" +" ```\n" +" Only bot owner can manage this, guild owners can see descriptions but not code\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2800 +#, docstring +msgid "List custom prompt context variables registered by other cogs." +msgstr "" + +#: assistant\commands\admin.py:2802 +msgid "3rd party docs: {}" +msgstr "" + +#: assistant\commands\admin.py:2804 +msgid "No custom context variables have been registered yet!\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:2818 +msgid "Custom Variables" +msgstr "" + +#: assistant\commands\admin.py:2823 +msgid "Page {}/{} | {} variables" +msgstr "" + +#: assistant\commands\admin.py:2836 +#, docstring +msgid "\n" +" List all available functions and their enabled/disabled status\n\n" +" This provides a quick overview of all custom functions and 3rd party\n" +" registered functions without having to navigate through the full menu.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2849 assistant\commands\admin.py:3142 +#: assistant\commands\admin.py:3198 assistant\commands\admin.py:3295 +msgid "No functions have been registered yet!" +msgstr "" + +#: assistant\commands\admin.py:2876 +msgid "Function List" +msgstr "" + +#: assistant\commands\admin.py:2881 +msgid "Page {}/{} | {} enabled, {} disabled" +msgstr "" + +#: assistant\commands\admin.py:2897 +#, docstring +msgid "Open the mobile-friendly AI tools manager." +msgstr "" + +#: assistant\commands\admin.py:2905 +#, docstring +msgid "Open the floating context block manager.\n\n" +" Toggled variables are appended to a trailing payload-only user\n" +" message after conversation history. Because that message rides\n" +" after the cached prefix, putting dynamic (per-request) values\n" +" there keeps the prompt prefix stable across requests so\n" +" provider-side prompt caching can hit.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:2920 +#, docstring +msgid "Show prompt-cache stats from the most recent API call." +msgstr "" + +#: assistant\commands\admin.py:2924 +msgid "No cache stats yet - make a request first." +msgstr "" + +#: assistant\commands\admin.py:2928 +msgid "Unknown" +msgstr "" + +#: assistant\commands\admin.py:2932 +msgid "Last API call: **{cached}**/**{total}** prompt tokens cached ({pct:.0f}%) · **{write}** cache-write tokens · model `{model}`" +msgstr "" + +#: assistant\commands\admin.py:2948 +msgid "\n" +"💡 This model requires at least **{min_tokens}** prompt tokens before the provider will cache. Your prompt was only **{total}** tokens - below the threshold, so no cache write or read occurred. A longer system prompt, more conversation history, or enabling variables in the `[p]floatingcontext` block will push it over." +msgstr "" + +#: assistant\commands\admin.py:2963 +msgid "\n" +"ℹ️ This provider uses automatic prompt caching. A **0** cache-write count does not necessarily mean caching is disabled, because some automatic-cache providers do not charge for or clearly expose cache writes. The more useful signal is whether similar follow-up turns start showing non-zero cached tokens. Also note that the relevant threshold is the repeated stable prefix, not the full prompt length, so a large request can still miss if most of its tokens are in the changing tail of the payload." +msgstr "" + +#: assistant\commands\admin.py:2978 +msgid "\n" +"ℹ️ `gpt-oss` is a reasoning model running over Chat Completions. Cache reuse can be weaker than on non-reasoning chat models because not all reasoning state is preserved between turns." +msgstr "" + +#: assistant\commands\admin.py:2988 +msgid "\n" +"⚠️ **Cache writes occurred but no reads.** This means the provider cached your prompt prefix, but the next request didn't match it - the prefix changed between calls. Common causes include dynamic variables like `{{time}}`, `{{date}}`, or `{{username}}` being substituted into your prompt prefix, per-turn context being injected before the cacheable tail, or tool definitions changing between calls. Use `[p]floatingcontext` to move dynamic context out of the prompt prefix." +msgstr "" + +#: assistant\commands\admin.py:3004 +#, docstring +msgid "Enable OpenRouter response caching (Mode A)." +msgstr "" + +#: assistant\commands\admin.py:3008 +msgid "OpenRouter response caching **enabled** (TTL: {}s)." +msgstr "" + +#: assistant\commands\admin.py:3012 +#, docstring +msgid "Disable OpenRouter response caching (Mode A)." +msgstr "" + +#: assistant\commands\admin.py:3016 +msgid "OpenRouter response caching **disabled**." +msgstr "" + +#: assistant\commands\admin.py:3020 +#, docstring +msgid "Set the OpenRouter response cache TTL in seconds (1–86400)." +msgstr "" + +#: assistant\commands\admin.py:3022 +msgid "TTL must be between 1 and 86400 seconds (24 hours)." +msgstr "" + +#: assistant\commands\admin.py:3026 +msgid "OpenRouter response cache TTL set to **{}** seconds." +msgstr "" + +#: assistant\commands\admin.py:3030 +#, docstring +msgid "Set the OpenRouter provider prompt cache TTL.\n\n" +" Choices: `off`, `5m`, `1h`. Applies to Anthropic / Gemini / Qwen\n" +" models routed via OpenRouter.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3037 +msgid "Mode must be one of: `off`, `5m`, `1h`." +msgstr "" + +#: assistant\commands\admin.py:3041 +msgid "OpenRouter provider prompt cache set to **{}**." +msgstr "" + +#: assistant\commands\admin.py:3050 +#, docstring +msgid "Configure OpenRouter provider routing and model slug preferences." +msgstr "" + +#: assistant\commands\admin.py:3055 +#, docstring +msgid "Show current OpenRouter provider routing settings." +msgstr "" + +#: assistant\commands\admin.py:3059 +msgid "not set" +msgstr "" + +#: assistant\commands\admin.py:3062 +msgid "not set (OR default)" +msgstr "" + +#: assistant\commands\admin.py:3064 +msgid "OpenRouter Provider Settings" +msgstr "" + +#: assistant\commands\admin.py:3065 +msgid "Model suffix" +msgstr "" + +#: assistant\commands\admin.py:3066 +msgid "Allow fallbacks" +msgstr "" + +#: assistant\commands\admin.py:3067 +msgid "Provider order" +msgstr "" + +#: assistant\commands\admin.py:3068 +msgid "Tip: `providers Fireworks` + `fallbacks false` hard-pins to that provider." +msgstr "" + +#: assistant\commands\admin.py:3073 +#, docstring +msgid "Set a guild-wide model slug suffix applied to every OpenRouter request.\n\n" +" Valid values: `:nitro` (throughput priority), `:floor` (price priority),\n" +" `:extended`, `clear` (remove suffix).\n" +" The suffix is appended after model resolution and replaces any per-model suffix.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3083 +msgid "OpenRouter model suffix cleared." +msgstr "" + +#: assistant\commands\admin.py:3086 +msgid "Invalid suffix `{}`. Valid: {}." +msgstr "" + +#: assistant\commands\admin.py:3090 +msgid "OpenRouter model suffix set to `{}`." +msgstr "" + +#: assistant\commands\admin.py:3094 +#, docstring +msgid "Set the ordered list of providers OpenRouter should use (space-separated).\n\n" +" Pass `clear` to reset. Combined with `fallbacks false` this hard-pins routing\n" +" to only the listed providers in order.\n" +" Example: `providers Fireworks Together`\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3104 +msgid "OpenRouter provider list cleared." +msgstr "" + +#: assistant\commands\admin.py:3108 +msgid "OpenRouter will try providers in order: {}." +msgstr "" + +#: assistant\commands\admin.py:3113 +#, docstring +msgid "Set whether OpenRouter may fall back to other providers.\n\n" +" Values: `true`, `false`, `clear` (restore OR default which is true).\n" +" Set to `false` with `providers` to hard-pin routing to those providers only.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3123 +msgid "OpenRouter fallbacks reset to OR default (enabled)." +msgstr "" + +#: assistant\commands\admin.py:3125 +msgid "Value must be `true`, `false`, or `clear`." +msgstr "" + +#: assistant\commands\admin.py:3128 +msgid "OpenRouter fallbacks set to `{}`." +msgstr "" + +#: assistant\commands\admin.py:3135 +#, docstring +msgid "List tool categories and their current enabled state." +msgstr "" + +#: assistant\commands\admin.py:3161 +msgid "Tool Categories" +msgstr "" + +#: assistant\commands\admin.py:3166 +msgid "Page {}/{} | {} enabled of {} total" +msgstr "" + +#: assistant\commands\admin.py:3191 +#, docstring +msgid "Enable or disable all tools in one or more categories." +msgstr "" + +#: assistant\commands\admin.py:3208 +msgid "No valid category names provided!" +msgstr "" + +#: assistant\commands\admin.py:3213 +msgid "The following categories do not exist: {}" +msgstr "" + +#: assistant\commands\admin.py:3235 +msgid "{} **Enabled Categories** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3243 +msgid "{} **Disabled Categories** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3266 +#, docstring +msgid "\n" +" Enable or disable multiple functions at once\n\n" +" **Arguments**\n" +" - `enable`: True to enable, False to disable. Omit to toggle current state.\n" +" - `functions`: Comma-separated list of function names, or \"all\" to affect all functions\n\n" +" **Examples**\n" +" - `[p]togglefunctions get_time, get_weather` - Toggle these functions\n" +" - `[p]togglefunctions True all` - Enable all functions\n" +" - `[p]togglefunctions False get_time, get_weather` - Disable specific functions\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3305 +msgid "No valid function names provided!" +msgstr "" + +#: assistant\commands\admin.py:3311 +msgid "The following functions do not exist: {}" +msgstr "" + +#: assistant\commands\admin.py:3337 +msgid "✅ **Enabled** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3344 +msgid "❌ **Disabled** ({}):\n" +"{}" +msgstr "" + +#: assistant\commands\admin.py:3440 +#, docstring +msgid "\n" +" Add/Remove items from the blacklist\n\n" +" `channel_role_member` can be a member, role, channel, or category channel\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3448 +msgid "{} has been removed from the blacklist" +msgstr "" + +#: assistant\commands\admin.py:3451 +msgid "{} has been added to the blacklist" +msgstr "" + +#: assistant\commands\admin.py:3464 +#, docstring +msgid "\n" +" Add/Remove items from the planner list, or view current planners.\n\n" +" Users/roles in the planner list can use the `think_and_plan` tool for complex task breakdown.\n\n" +" If the planner list is empty, everyone can use the planning tool.\n" +" If the planner list has entries, only those users/roles can use it.\n\n" +" `role_or_member` can be a member or role. Omit to view the current list.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:3479 +msgid "The planner list is empty. Everyone can use the `think_and_plan` tool." +msgstr "" + +#: assistant\commands\admin.py:3484 +msgid "**Planners:** {}" +msgstr "" + +#: assistant\commands\admin.py:3486 +msgid "The planner list has invalid entries. Consider clearing it." +msgstr "" + +#: assistant\commands\admin.py:3491 +msgid "{} has been removed from the planner list" +msgstr "" + +#: assistant\commands\admin.py:3494 +msgid "{} has been added to the planner list" +msgstr "" + +#: assistant\commands\admin.py:3500 +msgid "**{}:** empty" +msgstr "" + +#: assistant\commands\admin.py:3506 +msgid "**{}:** {}" +msgstr "" + +#: assistant\commands\admin.py:3510 +#, docstring +msgid "Show the current smartmod configuration." +msgstr "" + +#: assistant\commands\admin.py:3517 +msgid "`Enabled: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3518 +msgid "`Report channel:`{}\n" +msgstr "" + +#: assistant\commands\admin.py:3519 +msgid "`OpenAI key: `{}\n" +msgstr "" + +#: assistant\commands\admin.py:3519 +msgid "OK" msgstr "" -#: assistant\commands\admin.py:1910 -#, docstring -msgid "Remove certain words/phrases in the bot's responses" +#: assistant\commands\admin.py:3519 +msgid "Missing" msgstr "" -#: assistant\commands\admin.py:1914 -msgid "That regex is invalid" +#: assistant\commands\admin.py:3520 +msgid "`Review model: `{}\n" msgstr "" -#: assistant\commands\admin.py:1918 -msgid "`{}` has been **Removed** from the blacklist" +#: assistant\commands\admin.py:3520 +msgid "(default)" msgstr "" -#: assistant\commands\admin.py:1921 -msgid "`{}` has been **Added** to the blacklist" +#: assistant\commands\admin.py:3521 +msgid "`Context: `{} before / {} after\n" msgstr "" -#: assistant\commands\admin.py:1926 -#, docstring -msgid "\n" -" Toggle whether failed regex blocks the assistant's reply\n\n" -" Some regexes can cause [catastrophically backtracking](https://www.rexegg.com/regex-explosive-quantifiers.html)\n" -" The bot can safely handle if this happens and will either continue on, or block the response.\n" -" " +#: assistant\commands\admin.py:3522 +msgid "`Panel timeout: `{}s\n" msgstr "" -#: assistant\commands\admin.py:1935 -msgid "If a regex blacklist fails, the bots reply will be blocked" +#: assistant\commands\admin.py:3523 +msgid "`Auto-action: `{}\n" msgstr "" -#: assistant\commands\admin.py:1938 -msgid "If a reges blacklist fails, the bot will still reply" +#: assistant\commands\admin.py:3524 +msgid "`Exempt staff: `{}\n" msgstr "" -#: assistant\commands\admin.py:1943 -#, docstring -msgid "\n" -" Toggle question mode\n\n" -" If question mode is on, embeddings will only be sourced during the first message of a conversation and messages that end in **?**\n" -" " +#: assistant\commands\admin.py:3525 +msgid "`Staff ping: `{}\n" msgstr "" -#: assistant\commands\admin.py:1951 -msgid "Question mode is now **Disabled**" +#: assistant\commands\admin.py:3526 +msgid "`Blacklist: `{} items\n" msgstr "" -#: assistant\commands\admin.py:1954 -msgid "Question mode is now **Enabled**" +#: assistant\commands\admin.py:3527 +msgid "`Whitelist: `{} items\n" msgstr "" -#: assistant\commands\admin.py:1959 -#, docstring -msgid "Import embeddings to use with the assistant\n\n" -" Args:\n" -" overwrite (bool): overwrite embeddings with existing entry names\n\n" -" This will read excel files too\n" -" " +#: assistant\commands\admin.py:3528 +msgid "`Triggers: `{} phrases" msgstr "" -#: assistant\commands\admin.py:1972 -msgid "You must attach **.csv** files to this command or reference a message that has them!" +#: assistant\commands\admin.py:3530 +msgid "Smartmod (AI Moderation)" msgstr "" -#: assistant\commands\admin.py:1985 assistant\commands\admin.py:2062 -#: assistant\commands\admin.py:2122 -msgid "Error reading **{}**: {}" +#: assistant\commands\admin.py:3535 +#, docstring +msgid "Enable or disable AI moderation. Omit the state to flip it." msgstr "" -#: assistant\commands\admin.py:1990 -msgid "**{}** contains invalid formatting, columns must be " +#: assistant\commands\admin.py:3541 +msgid "\n" +"⚠️ No OpenAI key for the scan. Set one with `{p}assistant smartmod key`." msgstr "" -#: assistant\commands\admin.py:1998 -msgid "There are no valid files to import!" +#: assistant\commands\admin.py:3545 +msgid "\n" +"⚠️ No report channel set. Set one with `{p}assistant smartmod channel`." msgstr "" -#: assistant\commands\admin.py:2000 assistant\commands\admin.py:2137 -msgid "Processing the following files in the background\n" -"{}" +#: assistant\commands\admin.py:3548 +msgid "Smartmod is now **{}**." msgstr "" -#: assistant\commands\admin.py:2014 assistant\commands\admin.py:2148 -msgid "processing" +#: assistant\commands\admin.py:3548 +msgid "enabled" msgstr "" -#: assistant\commands\admin.py:2016 assistant\commands\admin.py:2150 -msgid "overwriting" +#: assistant\commands\admin.py:3548 +msgid "disabled" msgstr "" -#: assistant\commands\admin.py:2024 assistant\commands\admin.py:2158 -msgid "{}\n" -"`Currently {}: `**{}** ({}/{})" +#: assistant\commands\admin.py:3553 +#, docstring +msgid "Set the channel where moderation proposals are posted. Omit to clear." msgstr "" -#: assistant\commands\admin.py:2030 assistant\commands\admin.py:2165 -msgid "Failed to process embedding: `{}`" +#: assistant\commands\admin.py:3556 +msgid "set to {}" msgstr "" -#: assistant\commands\admin.py:2035 assistant\commands\admin.py:2178 -#: assistant\commands\admin.py:2182 -msgid "{}\n" -"**COMPLETE**" +#: assistant\commands\admin.py:3556 +msgid "cleared" msgstr "" -#: assistant\commands\admin.py:2036 assistant\commands\admin.py:2179 -msgid "Successfully imported {} embeddings!" +#: assistant\commands\admin.py:3557 +msgid "Report channel {}." msgstr "" -#: assistant\commands\admin.py:2041 +#: assistant\commands\admin.py:3562 #, docstring -msgid "Import embeddings to use with the assistant\n\n" -" Args:\n" -" overwrite (bool): overwrite embeddings with existing entry names\n" +msgid "Set the smartmod review model (empty = use the server's default chat model).\n\n" +" Run with no model to open the interactive model picker — endpoint-discovered models when a\n" +" custom endpoint is set, otherwise the built-in OpenAI list.\n" " " msgstr "" -#: assistant\commands\admin.py:2050 assistant\commands\admin.py:3202 -msgid "You must attach **.json** files to this command or reference a message that has them!" +#: assistant\commands\admin.py:3571 +msgid "Review model set to `{}`." msgstr "" -#: assistant\commands\admin.py:2086 -msgid "Failed to import **{}** because it contains invalid formatting!" +#: assistant\commands\admin.py:3582 +msgid "Could not probe `{}` to discover models. Set one manually with `{}assistant smartmod model `." msgstr "" -#: assistant\commands\admin.py:2091 -msgid "Imported the following files: `{}`\n" -"{} embeddings imported" +#: assistant\commands\admin.py:3602 +msgid "The review model uses the server's default chat model unless set. Valid OpenAI models:\n" +"{}\n" +"Set one with `{}assistant smartmod model `." msgstr "" -#: assistant\commands\admin.py:2099 +#: assistant\commands\admin.py:3610 #, docstring -msgid "Import embeddings from an .xlsx file\n\n" -" Args:\n" -" overwrite (bool): overwrite embeddings with existing entry names\n" +msgid "Set the moderation review prompt.\n\n" +" Supports the {flagged_categories} placeholder plus the same standard prompt variables\n" +" as the main system prompt (server name, channel name, display name, custom cog\n" +" variables, etc.).\n\n" +" Run with no text to view the current prompt. Use `defaultprompt` to grab the built-in\n" +" default to customize, and `resetprompt` to restore it.\n" " " msgstr "" -#: assistant\commands\admin.py:2108 -msgid "You must attach **.xlsx** files to this command or reference a message that has them!" +#: assistant\commands\admin.py:3622 +msgid "Current moderation prompt (edit and re-set with `{p}assistant smartmod prompt `):" msgstr "" -#: assistant\commands\admin.py:2129 -msgid "{} is invalid! Must contain the following columns: {}" +#: assistant\commands\admin.py:3629 +msgid "Moderation prompt updated." msgstr "" -#: assistant\commands\admin.py:2183 -msgid "No embeddings needed to be updated!" +#: assistant\commands\admin.py:3634 +#, docstring +msgid "Get the built-in default moderation prompt to copy and customize." +msgstr "" + +#: assistant\commands\admin.py:3636 +msgid "Default moderation prompt - copy, edit, then set with `{p}assistant smartmod prompt `:" msgstr "" -#: assistant\commands\admin.py:2188 +#: assistant\commands\admin.py:3644 #, docstring -msgid "\n" -" Export embeddings to an .xlsx file\n\n" -" **Note:** csv exports do not include the embedding values\n" -" " +msgid "Reset the moderation review prompt to the built-in default." msgstr "" -#: assistant\commands\admin.py:2195 assistant\commands\admin.py:2241 -#: assistant\commands\admin.py:2285 -msgid "There are no embeddings to export!" +#: assistant\commands\admin.py:3647 +msgid "Moderation prompt reset to default." msgstr "" -#: assistant\commands\admin.py:2235 +#: assistant\commands\admin.py:3652 #, docstring -msgid "Export embeddings to a .csv file\n\n" -" **Note:** csv exports do not include the embedding values\n" +msgid "Set a category's flag threshold (0.0-1.0), e.g. `harassment 0.4`.\n\n" +" Run with no arguments to list every moderation category and its current threshold.\n" " " msgstr "" -#: assistant\commands\admin.py:2254 assistant\commands\admin.py:2274 -#: assistant\commands\admin.py:2293 assistant\commands\admin.py:2313 -#: assistant\commands\admin.py:3188 -msgid "Here is your embeddings export!" +#: assistant\commands\admin.py:3661 +msgid "Set one with `{p}assistant smartmod threshold <0.0-1.0>`:\n" +"{box}" msgstr "" -#: assistant\commands\admin.py:2257 assistant\commands\admin.py:2296 -#: assistant\commands\admin.py:3170 -msgid "File too large, attempting to compress..." +#: assistant\commands\admin.py:3669 +msgid "Unknown category. Valid categories:\n" +"{}" msgstr "" -#: assistant\commands\admin.py:2277 assistant\commands\admin.py:2316 -#: assistant\commands\admin.py:3191 -msgid "File is still too large even with compression!" +#: assistant\commands\admin.py:3672 +msgid "Value must be between 0.0 and 1.0." msgstr "" -#: assistant\commands\admin.py:2282 -#, docstring -msgid "Export embeddings to a json file" +#: assistant\commands\admin.py:3675 +msgid "Threshold for `{}` set to `{}`." msgstr "" -#: assistant\commands\admin.py:2324 +#: assistant\commands\admin.py:3680 #, docstring -msgid "\n" -" Manage embeddings for training\n\n" -" Embeddings are used to optimize training of the assistant and minimize token usage.\n\n" -" By using this the bot can store vast amounts of contextual information without going over the token limit.\n\n" -" **Note**\n" -" You can enter a search query with this command to bring up the menu and go directly to that embedding selection.\n" -" " +msgid "View the effective per-category flag thresholds." msgstr "" -#: assistant\commands\admin.py:2374 +#: assistant\commands\admin.py:3687 #, docstring -msgid "\n" -" Add custom function calls for Assistant to use\n\n" -" **READ**\n" -" - [Function Call Docs](https://platform.openai.com/docs/guides/gpt/function-calling)\n" -" - [OpenAI Cookbook](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_call_functions_with_chat_models.ipynb)\n" -" - [JSON Schema Reference](https://json-schema.org/understanding-json-schema/)\n\n" -" The following objects are passed by default as keyword arguments.\n" -" - **user**: the user currently chatting with the bot (discord.Member)\n" -" - **channel**: channel the user is chatting in (TextChannel|Thread|ForumChannel)\n" -" - **guild**: current guild (discord.Guild)\n" -" - **bot**: the bot object (Red)\n" -" - **conf**: the config model for Assistant (GuildSettings)\n" -" - All functions **MUST** include `*args, **kwargs` in the params and return a string\n" -" ```python\n" -" # Can be either sync or async\n" -" async def func(*args, **kwargs) -> str:\n" -" ```\n" -" Only bot owner can manage this, guild owners can see descriptions but not code\n" -" " +msgid "Return (flagged_categories, formatted_table_lines) comparing each score to its threshold." msgstr "" -#: assistant\commands\admin.py:2414 +#: assistant\commands\admin.py:3701 #, docstring -msgid "List custom prompt context variables registered by other cogs." +msgid "Preview a sample message: which trigger phrases match plus each moderation score vs its threshold." msgstr "" -#: assistant\commands\admin.py:2416 -msgid "3rd party docs: {}" +#: assistant\commands\admin.py:3707 assistant\commands\admin.py:3741 +msgid "No OpenAI key available for the scan. Set one with `{p}assistant smartmod key`." msgstr "" -#: assistant\commands\admin.py:2418 -msgid "No custom context variables have been registered yet!\n" -"{}" +#: assistant\commands\admin.py:3716 assistant\commands\admin.py:3750 +msgid "Moderation scan failed — check the key or the bot logs." msgstr "" -#: assistant\commands\admin.py:2432 -msgid "Custom Variables" +#: assistant\commands\admin.py:3719 +msgid "🚩 **Would trigger review**" msgstr "" -#: assistant\commands\admin.py:2437 -msgid "Page {}/{} | {} variables" +#: assistant\commands\admin.py:3719 +msgid "✅ **Would not trigger**" +msgstr "" + +#: assistant\commands\admin.py:3721 +msgid "Matched triggers: {}" msgstr "" -#: assistant\commands\admin.py:2450 +#: assistant\commands\admin.py:3723 +msgid "Scan flagged: {}" +msgstr "" + +#: assistant\commands\admin.py:3730 #, docstring -msgid "\n" -" List all available functions and their enabled/disabled status\n\n" -" This provides a quick overview of all custom functions and 3rd party\n" -" registered functions without having to navigate through the full menu.\n" +msgid "Dry-run the FULL pipeline on sample text: scan / triggers -> review model -> action panel.\n\n" +" The review model runs for real (tools, embeddings, this channel's recent context) with you as\n" +" the simulated offender, but the panel's buttons take no real action. The review runs if a\n" +" category trips its threshold OR a trigger phrase matches (same as production).\n" " " msgstr "" -#: assistant\commands\admin.py:2463 assistant\commands\admin.py:2527 -#: assistant\commands\admin.py:2579 assistant\commands\admin.py:2676 -msgid "No functions have been registered yet!" +#: assistant\commands\admin.py:3758 +msgid "✅ Would not trigger — no category over its threshold and no trigger phrase matched." msgstr "" -#: assistant\commands\admin.py:2490 -msgid "Function List" +#: assistant\commands\admin.py:3760 +msgid "🚩 Tripped: {}" msgstr "" -#: assistant\commands\admin.py:2495 -msgid "Page {}/{} | {} enabled, {} disabled" +#: assistant\commands\admin.py:3765 +msgid "Simulation error: {}" +msgstr "" + +#: assistant\commands\admin.py:3768 +msgid "🧪 Model chose **no action**.\n" +"-# {}" +msgstr "" + +#: assistant\commands\admin.py:3768 +msgid "no reason given" +msgstr "" + +#: assistant\commands\admin.py:3770 +msgid "🧪 Model didn't reach a decision within the review turn limit." +msgstr "" + +#: assistant\commands\admin.py:3772 +msgid "🧪 Model **proposed** an action — see the dry-run panel above (buttons are no-ops)." msgstr "" -#: assistant\commands\admin.py:2511 +#: assistant\commands\admin.py:3788 #, docstring -msgid "Open the mobile-friendly AI tools manager." +msgid "Toggle a channel/category/role/member on the moderation ignore list. Omit to view." +msgstr "" + +#: assistant\commands\admin.py:3791 +msgid "Smartmod blacklist (ignored)" msgstr "" -#: assistant\commands\admin.py:2520 +#: assistant\commands\admin.py:3796 +msgid "{} removed from the smartmod blacklist." +msgstr "" + +#: assistant\commands\admin.py:3799 +msgid "{} added to the smartmod blacklist." +msgstr "" + +#: assistant\commands\admin.py:3816 #, docstring -msgid "List tool categories and their current enabled state." +msgid "Only moderate these channel/category/role/members (used only when the blacklist is empty). Omit to view." msgstr "" -#: assistant\commands\admin.py:2545 -msgid "Tool Categories" +#: assistant\commands\admin.py:3819 +msgid "Smartmod whitelist (only these)" msgstr "" -#: assistant\commands\admin.py:2547 -msgid "Page {}/{} | {} enabled of {} total" +#: assistant\commands\admin.py:3824 +msgid "{} removed from the smartmod whitelist." +msgstr "" + +#: assistant\commands\admin.py:3827 +msgid "{} added to the smartmod whitelist." msgstr "" -#: assistant\commands\admin.py:2572 +#: assistant\commands\admin.py:3832 #, docstring -msgid "Enable or disable all tools in one or more categories." +msgid "Toggle a role to ping (and authorize) when an action is proposed. Omit to view." msgstr "" -#: assistant\commands\admin.py:2589 -msgid "No valid category names provided!" +#: assistant\commands\admin.py:3835 +msgid "Smartmod staff ping roles" msgstr "" -#: assistant\commands\admin.py:2594 -msgid "The following categories do not exist: {}" +#: assistant\commands\admin.py:3840 +msgid "{} removed from the staff ping roles." msgstr "" -#: assistant\commands\admin.py:2616 -msgid "{} **Enabled Categories** ({}):\n" -"{}" +#: assistant\commands\admin.py:3843 +msgid "{} added to the staff ping roles." msgstr "" -#: assistant\commands\admin.py:2624 -msgid "{} **Disabled Categories** ({}):\n" -"{}" +#: assistant\commands\admin.py:3848 +#, docstring +msgid "Set how many messages of context to capture before/after a flagged message." +msgstr "" + +#: assistant\commands\admin.py:3853 +msgid "Context window set to {} before / {} after." msgstr "" -#: assistant\commands\admin.py:2647 +#: assistant\commands\admin.py:3861 #, docstring -msgid "\n" -" Enable or disable multiple functions at once\n\n" -" **Arguments**\n" -" - `enable`: True to enable, False to disable. Omit to toggle current state.\n" -" - `functions`: Comma-separated list of function names, or \"all\" to affect all functions\n\n" -" **Examples**\n" -" - `[p]togglefunctions get_time, get_weather` - Toggle these functions\n" -" - `[p]togglefunctions True all` - Enable all functions\n" -" - `[p]togglefunctions False get_time, get_weather` - Disable specific functions\n" -" " +msgid "Set how long the action panel stays interactive, in seconds (60-86400)." msgstr "" -#: assistant\commands\admin.py:2686 -msgid "No valid function names provided!" +#: assistant\commands\admin.py:3864 +msgid "Panel timeout set to {} seconds." msgstr "" -#: assistant\commands\admin.py:2692 -msgid "The following functions do not exist: {}" +#: assistant\commands\admin.py:3869 +#, docstring +msgid "Toggle whether the proposed action auto-executes when the panel times out." msgstr "" -#: assistant\commands\admin.py:2718 -msgid "✅ **Enabled** ({}):\n" -"{}" +#: assistant\commands\admin.py:3873 assistant\commands\admin.py:3883 +msgid "on" msgstr "" -#: assistant\commands\admin.py:2724 -msgid "❌ **Disabled** ({}):\n" -"{}" +#: assistant\commands\admin.py:3873 assistant\commands\admin.py:3883 +msgid "off" msgstr "" -#: assistant\commands\admin.py:2819 -#, docstring -msgid "\n" -" Add/Remove items from the blacklist\n\n" -" `channel_role_member` can be a member, role, channel, or category channel\n" -" " +#: assistant\commands\admin.py:3874 +msgid "Auto-action on timeout is now **{}**." msgstr "" -#: assistant\commands\admin.py:2827 -msgid "{} has been removed from the blacklist" +#: assistant\commands\admin.py:3879 +#, docstring +msgid "Toggle skipping moderation for members with ban/kick/manage-messages permissions." msgstr "" -#: assistant\commands\admin.py:2830 -msgid "{} has been added to the blacklist" +#: assistant\commands\admin.py:3883 +msgid "Exempt staff is now **{}**." msgstr "" -#: assistant\commands\admin.py:2843 +#: assistant\commands\admin.py:3888 #, docstring -msgid "\n" -" Add/Remove items from the planner list, or view current planners.\n\n" -" Users/roles in the planner list can use the `think_and_plan` tool for complex task breakdown.\n\n" -" If the planner list is empty, everyone can use the planning tool.\n" -" If the planner list has entries, only those users/roles can use it.\n\n" -" `role_or_member` can be a member or role. Omit to view the current list.\n" +msgid "Add or remove a trigger phrase that sends a message straight to moderation review.\n\n" +" A match fires the review pipeline **in place of** the OpenAI moderation scan — so\n" +" triggers work even with no OpenAI key set. Re-run with the exact same phrase to remove it.\n\n" +" Only `*` is a wildcard (it matches any run of characters); everything else is literal,\n" +" so pasting real regex is safe and can never lock the bot up. With no `*`, the phrase\n" +" matches on word boundaries (`idiot` hits the word \"idiot\" but not \"idiotic\"); add `*`\n" +" to loosen it: `idiot*` (prefix), `*idiot` (suffix), `*idiot*` (substring anywhere).\n" " " msgstr "" -#: assistant\commands\admin.py:2858 -msgid "The planner list is empty. Everyone can use the `think_and_plan` tool." +#: assistant\commands\admin.py:3903 +msgid "Removed smartmod trigger: `{}`" msgstr "" -#: assistant\commands\admin.py:2863 -msgid "**Planners:** {}" +#: assistant\commands\admin.py:3906 +msgid "A trigger needs at least one non-`*` character." msgstr "" -#: assistant\commands\admin.py:2865 -msgid "The planner list has invalid entries. Consider clearing it." +#: assistant\commands\admin.py:3908 +msgid "That trigger is too long (max {} characters)." msgstr "" -#: assistant\commands\admin.py:2870 -msgid "{} has been removed from the planner list" +#: assistant\commands\admin.py:3911 +msgid "Added smartmod trigger `{phrase}` (matches as `{regex}`)." msgstr "" -#: assistant\commands\admin.py:2873 -msgid "{} has been added to the planner list" +#: assistant\commands\admin.py:3919 +#, docstring +msgid "List the smartmod trigger phrases and the safe pattern each one compiles to." msgstr "" -#: assistant\commands\admin.py:2878 +#: assistant\commands\admin.py:3924 +msgid "No smartmod triggers set. Add one with `{p}assistant smartmod trigger `." +msgstr "" + +#: assistant\commands\admin.py:3935 #, docstring -msgid "\n" -" Override settings for specific roles\n\n" -" **NOTE**\n" -" If a user has two roles with override settings, override associated with the higher role will be used.\n" +msgid "Set a dedicated OpenAI key for the moderation scan (opens a secure modal).\n\n" +" Use this when your chat endpoint is a custom/non-OpenAI endpoint (OpenRouter, LM Studio,\n" +" etc.): the free OpenAI moderation scan still runs against api.openai.com with this key,\n" +" while the review LLM keeps using your configured endpoint. Enter `none` to clear it.\n" " " msgstr "" -#: assistant\commands\admin.py:2887 +#: assistant\commands\admin.py:3943 +msgid "Click to set the OpenAI key used for the smartmod moderation scan\n\n" +"To remove the key, enter `none`" +msgstr "" + +#: assistant\commands\admin.py:3950 +msgid "Smartmod OpenAI key has been removed!" +msgstr "" + +#: assistant\commands\admin.py:3955 +msgid "Smartmod OpenAI key has been set!" +msgstr "" + +#: assistant\commands\admin.py:3960 #, docstring msgid "\n" " Assign a role to use a model\n\n" @@ -1984,23 +2833,23 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:2899 +#: assistant\commands\admin.py:3974 msgid "Enter a model id supported by your custom endpoint. If it exposes `/v1/models`, you can copy one from there." msgstr "" -#: assistant\commands\admin.py:2916 +#: assistant\commands\admin.py:3991 msgid "Role override for {} removed!" msgstr "" -#: assistant\commands\admin.py:2919 +#: assistant\commands\admin.py:3994 msgid "Role override for {} overwritten!" msgstr "" -#: assistant\commands\admin.py:2922 +#: assistant\commands\admin.py:3997 msgid "Role override for {} added!" msgstr "" -#: assistant\commands\admin.py:2928 +#: assistant\commands\admin.py:4003 #, docstring msgid "\n" " Assign a max token override to a role\n\n" @@ -2008,19 +2857,19 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:2938 +#: assistant\commands\admin.py:4013 msgid "Max token override for {} removed!" msgstr "" -#: assistant\commands\admin.py:2941 +#: assistant\commands\admin.py:4016 msgid "Max token override for {} overwritten!" msgstr "" -#: assistant\commands\admin.py:2944 +#: assistant\commands\admin.py:4019 msgid "Max token override for {} added!" msgstr "" -#: assistant\commands\admin.py:2952 +#: assistant\commands\admin.py:4031 #, docstring msgid "\n" " Assign a max response token override to a role\n\n" @@ -2029,19 +2878,19 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:2964 +#: assistant\commands\admin.py:4043 msgid "Max response token override for {} removed!" msgstr "" -#: assistant\commands\admin.py:2967 +#: assistant\commands\admin.py:4046 msgid "Max response token override for {} overwritten!" msgstr "" -#: assistant\commands\admin.py:2970 +#: assistant\commands\admin.py:4049 msgid "Max response token override for {} added!" msgstr "" -#: assistant\commands\admin.py:2975 +#: assistant\commands\admin.py:4054 #, docstring msgid "\n" " Assign a max message retention override to a role\n\n" @@ -2049,19 +2898,19 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:2987 +#: assistant\commands\admin.py:4066 msgid "Max retention override for {} removed!" msgstr "" -#: assistant\commands\admin.py:2990 +#: assistant\commands\admin.py:4069 msgid "Max retention override for {} overwritten!" msgstr "" -#: assistant\commands\admin.py:2993 +#: assistant\commands\admin.py:4072 msgid "Max retention override for {} added!" msgstr "" -#: assistant\commands\admin.py:2998 +#: assistant\commands\admin.py:4077 #, docstring msgid "\n" " Assign a max retention time override to a role\n\n" @@ -2069,19 +2918,19 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:3010 +#: assistant\commands\admin.py:4089 msgid "Max retention time override for {} removed!" msgstr "" -#: assistant\commands\admin.py:3013 +#: assistant\commands\admin.py:4092 msgid "Max retention time override for {} overwritten!" msgstr "" -#: assistant\commands\admin.py:3016 +#: assistant\commands\admin.py:4095 msgid "Max retention time override for {} added!" msgstr "" -#: assistant\commands\admin.py:3021 +#: assistant\commands\admin.py:4100 #, docstring msgid "\n" " Assign a reasoning effort override to a role\n\n" @@ -2090,23 +2939,23 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:3031 +#: assistant\commands\admin.py:4110 msgid "Invalid effort level. Valid values: {}" msgstr "" -#: assistant\commands\admin.py:3038 +#: assistant\commands\admin.py:4117 msgid "Reasoning effort override for {} removed!" msgstr "" -#: assistant\commands\admin.py:3041 +#: assistant\commands\admin.py:4120 msgid "Reasoning effort override for {} overwritten!" msgstr "" -#: assistant\commands\admin.py:3044 +#: assistant\commands\admin.py:4123 msgid "Reasoning effort override for {} added!" msgstr "" -#: assistant\commands\admin.py:3049 +#: assistant\commands\admin.py:4128 #, docstring msgid "\n" " Switch verbosity level for gpt-5 model between low, medium, and high\n\n" @@ -2114,79 +2963,112 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:3057 +#: assistant\commands\admin.py:4136 msgid "Verbosity has been set to **Medium**" msgstr "" -#: assistant\commands\admin.py:3060 +#: assistant\commands\admin.py:4139 msgid "Verbosity has been set to **High**" msgstr "" -#: assistant\commands\admin.py:3063 +#: assistant\commands\admin.py:4142 msgid "Verbosity has been set to **Low**" msgstr "" -#: assistant\commands\admin.py:3075 +#: assistant\commands\admin.py:4154 +#, docstring +msgid "Set the global default chat model for guilds that haven't picked their own (owner).\n\n" +" Pairs with `[p]assistant api globalendpoint`: e.g. set `openrouter/free` so new servers\n" +" route to OpenRouter's free models instead of the built-in `gpt-5.4` default. Guilds that\n" +" chose their own model are unaffected. Omit to view; pass `none` to clear.\n" +" " +msgstr "" + +#: assistant\commands\admin.py:4161 +msgid "(not set - guilds use their own model)" +msgstr "" + +#: assistant\commands\admin.py:4163 +msgid "Global default model: `{}`\n" +"Set with `{}assistant api globalmodel `." +msgstr "" + +#: assistant\commands\admin.py:4169 +msgid "Global default model cleared." +msgstr "" + +#: assistant\commands\admin.py:4173 +msgid "Global default model set to `{}`. Guilds without their own model will use it." +msgstr "" + +#: assistant\commands\admin.py:4180 #, docstring msgid "\n" -" Override the global OpenAI-compatible API base URL\n\n" -" Pass the full API base URL, including the scheme and the `/v1` suffix.\n\n" +" Set the global default endpoint URL (owner)\n\n" +" When set, every guild without its own endpoint override calls this\n" +" URL instead of OpenAI's default. Pass the full base URL including\n" +" the scheme and the `/v1` suffix.\n\n" " **Examples**\n" " - `http://127.0.0.1:1234/v1`\n" " - `http://localhost:5001/v1`\n" -" - `https://example.com/api/v1`\n\n" +" - `https://example.com/api/v1`\n" +" - `https://openrouter.ai/api/v1`\n\n" " **Notes**\n" -" - When set, all servers can use the assistant without needing their own API key\n" -" - Custom endpoints must be OpenAI-compatible\n" -" - This should be the SDK `base_url`, not a specific route like `/chat/completions`\n" -" - Use `[p]assistant endpointapikey` to set a global key for authenticated custom endpoints\n" +" - Endpoints must be OpenAI-compatible\n" +" - This is the SDK `base_url`, not a specific route like `/chat/completions`\n" +" - Use `[p]assistant api globalkey` to set the API key for this endpoint\n" +" - Router endpoints like OpenRouter accept special model aliases\n" +" (e.g. `openrouter/auto`, `openrouter/free`) via `[p]assistant set model`\n" " - Omit the argument to remove the override\n" " " msgstr "" -#: assistant\commands\admin.py:3097 +#: assistant\commands\admin.py:4206 msgid "Endpoint is already set to **{}**" msgstr "" -#: assistant\commands\admin.py:3101 +#: assistant\commands\admin.py:4210 msgid "Endpoint has been set to **{}**" msgstr "" -#: assistant\commands\admin.py:3109 +#: assistant\commands\admin.py:4218 msgid "Endpoint has been changed from **{}** to **{}**" msgstr "" -#: assistant\commands\admin.py:3116 +#: assistant\commands\admin.py:4225 msgid "Endpoint override has been removed!" msgstr "" -#: assistant\commands\admin.py:3122 +#: assistant\commands\admin.py:4232 #, docstring -msgid "Probe the configured custom endpoint and cache its runtime model/capability profile" +msgid "Probe the active endpoint and refresh its cached model/capability profile\n\n" +" Checks the guild endpoint override first; if none is set, probes the\n" +" global endpoint override. Reports an error if no endpoint is configured.\n" +" " msgstr "" -#: assistant\commands\admin.py:3124 -msgid "No endpoint override is configured." +#: assistant\commands\admin.py:4240 +msgid "No endpoint override is configured for this guild or globally." msgstr "" -#: assistant\commands\admin.py:3130 -msgid "Failed to probe the configured endpoint." +#: assistant\commands\admin.py:4246 +msgid "Failed to probe `{}`." msgstr "" -#: assistant\commands\admin.py:3137 +#: assistant\commands\admin.py:4253 #, docstring msgid "Wipe all settings and data for entire cog" msgstr "" -#: assistant\commands\admin.py:3139 +#: assistant\commands\admin.py:4255 msgid "Not wiping cog" msgstr "" -#: assistant\commands\admin.py:3144 +#: assistant\commands\admin.py:4260 msgid "Cog has been wiped!" msgstr "" -#: assistant\commands\admin.py:3149 +#: assistant\commands\admin.py:4265 #, docstring msgid "\n" " Take a backup of the cog\n\n" @@ -2194,22 +3076,22 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:3167 +#: assistant\commands\admin.py:4283 msgid "Here is your export!" msgstr "" -#: assistant\commands\admin.py:3196 +#: assistant\commands\admin.py:4312 #, docstring msgid "\n" " Restore the cog from a backup\n" " " msgstr "" -#: assistant\commands\admin.py:3206 +#: assistant\commands\admin.py:4322 msgid "Cog has been restored!" msgstr "" -#: assistant\commands\admin.py:3212 +#: assistant\commands\admin.py:4328 #, docstring msgid "\n" " Wipe saved conversations for the assistant in all servers\n\n" @@ -2217,37 +3099,37 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:3221 +#: assistant\commands\admin.py:4337 msgid "Conversations have been wiped for all servers!" msgstr "" -#: assistant\commands\admin.py:3227 +#: assistant\commands\admin.py:4343 #, docstring msgid "Toggle persistent conversations" msgstr "" -#: assistant\commands\admin.py:3230 +#: assistant\commands\admin.py:4346 msgid "Persistent conversations have been **Disabled**" msgstr "" -#: assistant\commands\admin.py:3233 +#: assistant\commands\admin.py:4349 msgid "Persistent conversations have been **Enabled**" msgstr "" -#: assistant\commands\admin.py:3239 +#: assistant\commands\admin.py:4355 #, docstring msgid "Toggle whether reasoning/think blocks are uploaded as files globally" msgstr "" -#: assistant\commands\admin.py:3242 +#: assistant\commands\admin.py:4358 msgid "Reasoning blocks will now be stripped from replies without uploading think files." msgstr "" -#: assistant\commands\admin.py:3245 +#: assistant\commands\admin.py:4361 msgid "Reasoning blocks will now be uploaded as think files when present." msgstr "" -#: assistant\commands\admin.py:3251 +#: assistant\commands\admin.py:4367 #, docstring msgid "\n" " Wipe saved embeddings for all servers\n\n" @@ -2255,11 +3137,11 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:3261 +#: assistant\commands\admin.py:4377 msgid "All embedding data has been wiped for all servers!" msgstr "" -#: assistant\commands\admin.py:3267 +#: assistant\commands\admin.py:4383 #, docstring msgid "\n" " Toggle whether the assistant listens to other bots\n\n" @@ -2267,113 +3149,113 @@ msgid "\n" " " msgstr "" -#: assistant\commands\admin.py:3274 +#: assistant\commands\admin.py:4390 msgid "Assistant will no longer listen to other bot messages" msgstr "" -#: assistant\commands\admin.py:3277 +#: assistant\commands\admin.py:4393 msgid "Assistant will listen to other bot messages" msgstr "" -#: assistant\commands\admin.py:3285 +#: assistant\commands\admin.py:4401 #, docstring msgid "View and manage all scheduled autonomous tasks in this server." msgstr "" -#: assistant\commands\admin.py:3288 +#: assistant\commands\admin.py:4404 msgid "No scheduled tasks in this server." msgstr "" -#: assistant\commands\admin.py:3307 +#: assistant\commands\admin.py:4423 msgid "Scheduled Tasks ({})" msgstr "" -#: assistant\commands\admin.py:3317 +#: assistant\commands\admin.py:4433 #, docstring msgid "Cancel a scheduled task by its ID (admin override)." msgstr "" -#: assistant\commands\admin.py:3320 +#: assistant\commands\admin.py:4436 msgid "No scheduled task found with ID `{}`." msgstr "" -#: assistant\commands\admin.py:3322 +#: assistant\commands\admin.py:4438 msgid "That task belongs to a different server." msgstr "" -#: assistant\commands\admin.py:3331 +#: assistant\commands\admin.py:4447 msgid "Scheduled task `{}` has been cancelled." msgstr "" -#: assistant\commands\admin.py:3337 +#: assistant\commands\admin.py:4453 #, docstring msgid "Clear all scheduled tasks in this server." msgstr "" -#: assistant\commands\admin.py:3339 +#: assistant\commands\admin.py:4455 msgid "Not clearing tasks." msgstr "" -#: assistant\commands\admin.py:3350 +#: assistant\commands\admin.py:4466 msgid "Cleared {} scheduled tasks." msgstr "" -#: assistant\commands\admin.py:3356 +#: assistant\commands\admin.py:4470 #, docstring msgid "Toggle LLM-based conversation compaction on or off" msgstr "" -#: assistant\commands\admin.py:3360 +#: assistant\commands\admin.py:4474 msgid "Conversation compaction is now **Disabled** (blind degradation will be used)" msgstr "" -#: assistant\commands\admin.py:3363 +#: assistant\commands\admin.py:4477 msgid "Conversation compaction is now **Enabled**" msgstr "" -#: assistant\commands\admin.py:3368 +#: assistant\commands\admin.py:4482 #, docstring msgid "Set the model used for compaction (leave blank to use the chat model)" msgstr "" -#: assistant\commands\admin.py:3372 +#: assistant\commands\admin.py:4487 msgid "Compaction model cleared, the main chat model will be used" msgstr "" -#: assistant\commands\admin.py:3377 +#: assistant\commands\admin.py:4492 msgid "Compaction model set to **{}**" msgstr "" -#: assistant\commands\admin.py:3382 +#: assistant\commands\admin.py:4497 #, docstring msgid "Set the token threshold at which compaction triggers\n\n" " When set, the bot will proactively compact conversations once they\n" " exceed this many tokens, even if the model's context window is larger.\n\n" " Set to **0** to only compact when hitting the model's max token limit.\n\n" " **Examples**\n" -" - `[p]assistant compactionthreshold 16000` - compact at 16k tokens\n" -" - `[p]assistant compactionthreshold 0` - reset to default behavior\n" +" - `[p]assistant compaction threshold 16000` - compact at 16k tokens\n" +" - `[p]assistant compaction threshold 0` - reset to default behavior\n" " " msgstr "" -#: assistant\commands\admin.py:3394 +#: assistant\commands\admin.py:4509 msgid "Token limit must be 0 or higher" msgstr "" -#: assistant\commands\admin.py:3398 +#: assistant\commands\admin.py:4513 msgid "Compaction will now trigger at **{}** tokens" msgstr "" -#: assistant\commands\admin.py:3400 +#: assistant\commands\admin.py:4515 msgid "Compaction threshold reset, will only compact at the model's max token limit" msgstr "" -#: assistant\commands\base.py:46 +#: assistant\commands\base.py:45 #, docstring msgid "Get help using assistant" msgstr "" -#: assistant\commands\base.py:48 +#: assistant\commands\base.py:47 msgid "\n" "# How to Use\n\n" "### Commands\n" @@ -2381,6 +3263,7 @@ msgid "\n" "`[p]convocontext` - detailed token breakdown of what's consuming your context window.\n" "`[p]convocompact` - intelligently summarize older messages to free up context space.\n" "`[p]clearconvo` - reset your conversation for the current channel/thread/forum.\n" +"`[p]unchat` - cancel the active assistant response for the current channel/thread/forum.\n" "`[p]showconvo` - get a json dump of your current conversation (this is mostly for debugging)\n" "`[p]chat` or `[p]ask` - command prefix for chatting with the bot outside of the live chat, or just @ it.\n\n" "### Chat Arguments\n" @@ -2407,42 +3290,38 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:109 +#: assistant\commands\base.py:110 msgid "The API key is not set up!" msgstr "" -#: assistant\commands\base.py:111 +#: assistant\commands\base.py:112 msgid "Image generation is disabled!" msgstr "" -#: assistant\commands\base.py:120 +#: assistant\commands\base.py:121 msgid "Generating image..." msgstr "" -#: assistant\commands\base.py:124 +#: assistant\commands\base.py:125 msgid "-# Size: {}\n" "-# Quality: {}\n" "-# Model: {}" msgstr "" -#: assistant\commands\base.py:126 +#: assistant\commands\base.py:127 msgid "\n" "-# Style: {}" msgstr "" -#: assistant\commands\base.py:145 -msgid "Cost: ${}" -msgstr "" - -#: assistant\commands\base.py:150 +#: assistant\commands\base.py:155 msgid "Revised Prompt" msgstr "" -#: assistant\commands\base.py:150 +#: assistant\commands\base.py:155 msgid "Continued" msgstr "" -#: assistant\commands\base.py:170 +#: assistant\commands\base.py:178 #, docstring msgid "\n" " Chat with [botname]!\n\n" @@ -2459,7 +3338,11 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:197 +#: assistant\commands\base.py:208 +msgid "There are too many pending messages for this conversation. Please wait for the current reply." +msgstr "" + +#: assistant\commands\base.py:214 #, docstring msgid "\n" " Check the token and message count of yourself or another user's conversation for this channel\n\n" @@ -2468,7 +3351,7 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:252 +#: assistant\commands\base.py:271 msgid "`Messages: `{}/{}\n" "`Context: `{}/{} ({:.1f}%)\n" "`Conversation:`{}\n" @@ -2477,126 +3360,126 @@ msgid "`Messages: `{}/{}\n" "`Model: `{}" msgstr "" -#: assistant\commands\base.py:271 +#: assistant\commands\base.py:290 msgid "\n" "`Tool Calls: `{}" msgstr "" -#: assistant\commands\base.py:273 +#: assistant\commands\base.py:292 msgid "\n" "`Compacted: `{} time(s)" msgstr "" -#: assistant\commands\base.py:275 +#: assistant\commands\base.py:294 msgid "*Collabroative conversations are enabled*" msgstr "" -#: assistant\commands\base.py:281 +#: assistant\commands\base.py:300 msgid "Conversation stats for {}" msgstr "" -#: assistant\commands\base.py:284 +#: assistant\commands\base.py:303 msgid "Context = conversation + overhead (prompts + function schemas)" msgstr "" -#: assistant\commands\base.py:289 +#: assistant\commands\base.py:308 msgid "System prompt override for this conversation" msgstr "" -#: assistant\commands\base.py:292 +#: assistant\commands\base.py:311 msgid "System prompt override for this channel" msgstr "" -#: assistant\commands\base.py:298 +#: assistant\commands\base.py:317 #, docstring msgid "Show a detailed token breakdown for your conversation context" msgstr "" -#: assistant\commands\base.py:334 +#: assistant\commands\base.py:353 msgid "`Max Context: `{} tokens\n" msgstr "" -#: assistant\commands\base.py:335 +#: assistant\commands\base.py:354 msgid "`Context Fill: `{:.1f}%\n" msgstr "" -#: assistant\commands\base.py:336 +#: assistant\commands\base.py:355 msgid "`Model: `{}\n" msgstr "" -#: assistant\commands\base.py:338 +#: assistant\commands\base.py:357 msgid "**Token Breakdown**\n" msgstr "" -#: assistant\commands\base.py:339 +#: assistant\commands\base.py:358 msgid "`System Prompt: `{}\n" msgstr "" -#: assistant\commands\base.py:340 +#: assistant\commands\base.py:359 msgid "`Initial Prompt: `{}\n" msgstr "" -#: assistant\commands\base.py:341 +#: assistant\commands\base.py:360 msgid "`Channel Prompt: `{}\n" msgstr "" -#: assistant\commands\base.py:342 +#: assistant\commands\base.py:361 msgid "`Function Schemas: `{} ({} functions)\n" msgstr "" -#: assistant\commands\base.py:345 +#: assistant\commands\base.py:364 msgid "`Conversation: `{}\n" msgstr "" -#: assistant\commands\base.py:346 +#: assistant\commands\base.py:365 msgid "`Total: `{}\n" msgstr "" -#: assistant\commands\base.py:348 +#: assistant\commands\base.py:367 msgid "**Message Breakdown**\n" msgstr "" -#: assistant\commands\base.py:349 +#: assistant\commands\base.py:368 msgid "`System/Developer: `{}\n" msgstr "" -#: assistant\commands\base.py:350 +#: assistant\commands\base.py:369 msgid "`User Messages: `{}\n" msgstr "" -#: assistant\commands\base.py:351 +#: assistant\commands\base.py:370 msgid "`Assistant Messages: `{}\n" msgstr "" -#: assistant\commands\base.py:352 +#: assistant\commands\base.py:371 msgid "`Tool Results: `{}\n" msgstr "" -#: assistant\commands\base.py:353 +#: assistant\commands\base.py:372 msgid "`Images: `{}\n" msgstr "" -#: assistant\commands\base.py:354 +#: assistant\commands\base.py:373 msgid "`Compaction Summaries:`{}\n" msgstr "" -#: assistant\commands\base.py:356 +#: assistant\commands\base.py:375 msgid "**Compaction**\n" msgstr "" -#: assistant\commands\base.py:357 +#: assistant\commands\base.py:376 msgid "`Times Compacted: `{}\n" msgstr "" -#: assistant\commands\base.py:367 +#: assistant\commands\base.py:386 msgid "Context Breakdown" msgstr "" -#: assistant\commands\base.py:372 +#: assistant\commands\base.py:391 msgid "Context for {}" msgstr "" -#: assistant\commands\base.py:380 +#: assistant\commands\base.py:399 #, docstring msgid "Compact your conversation using LLM summarization\n\n" " This summarizes older messages instead of deleting them, preserving\n" @@ -2607,35 +3490,35 @@ msgid "Compact your conversation using LLM summarization\n\n" " " msgstr "" -#: assistant\commands\base.py:391 +#: assistant\commands\base.py:411 msgid "No API key has been set!" msgstr "" -#: assistant\commands\base.py:393 +#: assistant\commands\base.py:413 msgid "Conversation compaction is disabled in this server." msgstr "" -#: assistant\commands\base.py:404 +#: assistant\commands\base.py:424 msgid "Only moderators can compact channel conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:409 +#: assistant\commands\base.py:429 msgid "You have no conversation history in this channel." msgstr "" -#: assistant\commands\base.py:414 +#: assistant\commands\base.py:434 msgid "Not enough messages to compact (need more than {})." msgstr "" -#: assistant\commands\base.py:434 +#: assistant\commands\base.py:453 msgid "Conversation compacted! ({} compactions total for this conversation)" msgstr "" -#: assistant\commands\base.py:439 +#: assistant\commands\base.py:458 msgid "Compaction was not needed or failed." msgstr "" -#: assistant\commands\base.py:444 +#: assistant\commands\base.py:463 #, docstring msgid "\n" " Reset your conversation with the bot\n\n" @@ -2643,112 +3526,129 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:457 +#: assistant\commands\base.py:476 msgid "Only moderators can clear channel conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:461 +#: assistant\commands\base.py:481 msgid "Your conversation in this channel has been reset!" msgstr "" -#: assistant\commands\base.py:467 +#: assistant\commands\base.py:486 +#, docstring +msgid "Cancel the active assistant response for this channel" +msgstr "" + +#: assistant\commands\base.py:494 +msgid "Only moderators can cancel channel conversations when collaborative conversations are enabled!" +msgstr "" + +#: assistant\commands\base.py:499 +msgid "There is no active assistant response to cancel in this channel." +msgstr "" + +#: assistant\commands\base.py:500 +msgid "The active assistant response for this channel has been cancelled." +msgstr "" + +#: assistant\commands\base.py:506 #, docstring msgid "\n" " Pop the last message from your conversation\n" " " msgstr "" -#: assistant\commands\base.py:478 +#: assistant\commands\base.py:517 msgid "Only moderators can pop messages from conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:482 assistant\commands\base.py:743 +#: assistant\commands\base.py:521 assistant\commands\base.py:788 msgid "There are no messages in this conversation yet!" msgstr "" -#: assistant\commands\base.py:487 +#: assistant\commands\base.py:526 msgid "Removed the last message from this conversation" msgstr "" -#: assistant\commands\base.py:507 +#: assistant\commands\base.py:546 #, docstring msgid "\n" " Get a summary of whats going on in a channel\n" " " msgstr "" -#: assistant\commands\base.py:513 +#: assistant\commands\base.py:552 msgid "Invalid timeframe! Please use a valid time format like `1h` for an hour" msgstr "" -#: assistant\commands\base.py:516 +#: assistant\commands\base.py:555 msgid "The maximum timeframe is 48 hours!" msgstr "" -#: assistant\commands\base.py:524 +#: assistant\commands\base.py:563 msgid "Only moderators can summarize conversations!" msgstr "" -#: assistant\commands\base.py:531 +#: assistant\commands\base.py:570 msgid "You don't have permission to view the channel!" msgstr "" -#: assistant\commands\base.py:538 +#: assistant\commands\base.py:577 msgid "I don't have permission to view the channel!" msgstr "" -#: assistant\commands\base.py:561 +#: assistant\commands\base.py:600 msgid "No messages found to summarize within that timeframe!" msgstr "" -#: assistant\commands\base.py:563 +#: assistant\commands\base.py:602 msgid "Not enough messages found to summarize within that timeframe!" msgstr "" -#: assistant\commands\base.py:664 +#: assistant\commands\base.py:706 msgid "The request timed out!" msgstr "" -#: assistant\commands\base.py:675 +#: assistant\commands\base.py:717 msgid "Failed to get response" msgstr "" -#: assistant\commands\base.py:678 +#: assistant\commands\base.py:720 msgid "No response was generated!" msgstr "" -#: assistant\commands\base.py:685 +#: assistant\commands\base.py:727 msgid "Timeframe: {}" msgstr "" -#: assistant\commands\base.py:692 assistant\commands\base.py:702 +#: assistant\commands\base.py:734 assistant\commands\base.py:744 msgid "Channel" msgstr "" -#: assistant\commands\base.py:724 +#: assistant\commands\base.py:769 #, docstring msgid "\n" " Copy the conversation to another channel, thread, or forum\n" " " msgstr "" -#: assistant\commands\base.py:735 +#: assistant\commands\base.py:780 msgid "Only moderators can copy conversations when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:746 +#: assistant\commands\base.py:791 msgid "You cannot copy a conversation to a channel you can't see!" msgstr "" -#: assistant\commands\base.py:752 +#: assistant\commands\base.py:797 msgid "This conversation has been overwritten in {}" msgstr "" -#: assistant\commands\base.py:754 +#: assistant\commands\base.py:799 msgid "This conversation has been copied over to {}" msgstr "" -#: assistant\commands\base.py:764 +#: assistant\commands\base.py:809 #, docstring msgid "\n" " Set a system prompt for this conversation!\n\n" @@ -2757,28 +3657,28 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:773 +#: assistant\commands\base.py:818 msgid "Conversation system prompt overriding is **Disabled**." msgstr "" -#: assistant\commands\base.py:783 +#: assistant\commands\base.py:828 msgid "Only moderators can set conversation prompts when collaborative conversations are enabled!" msgstr "" -#: assistant\commands\base.py:803 +#: assistant\commands\base.py:848 msgid "This prompt is uses {} tokens which is more than 90% of the maximum tokens allowed per conversation!\n" "Write a prompt using {} tokens or less to leave 10% of your token limit for responses" msgstr "" -#: assistant\commands\base.py:812 +#: assistant\commands\base.py:857 msgid "System prompt has been set for this conversation!" msgstr "" -#: assistant\commands\base.py:814 +#: assistant\commands\base.py:859 msgid "System prompt has been **Removed** for this conversation!" msgstr "" -#: assistant\commands\base.py:826 +#: assistant\commands\base.py:871 #, docstring msgid "\n" " View the current transcript of a conversation\n\n" @@ -2786,50 +3686,50 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:838 +#: assistant\commands\base.py:883 msgid "You have no conversation in this channel!" msgstr "" -#: assistant\commands\base.py:851 +#: assistant\commands\base.py:896 msgid "Here is your conversation transcript!" msgstr "" -#: assistant\commands\base.py:857 +#: assistant\commands\base.py:902 #, docstring msgid "\n" " Import a conversation from a file\n" " " msgstr "" -#: assistant\commands\base.py:862 +#: assistant\commands\base.py:907 msgid "Please attach a file to import the conversation from!" msgstr "" -#: assistant\commands\base.py:864 +#: assistant\commands\base.py:909 msgid "Please only attach one file to import the conversation from!" msgstr "" -#: assistant\commands\base.py:867 +#: assistant\commands\base.py:912 msgid "Please upload a valid JSON file." msgstr "" -#: assistant\commands\base.py:872 +#: assistant\commands\base.py:917 msgid "Failed to parse conversation file." msgstr "" -#: assistant\commands\base.py:878 +#: assistant\commands\base.py:923 msgid "The conversation file is not in the correct format. It should be a list of messages." msgstr "" -#: assistant\commands\base.py:888 +#: assistant\commands\base.py:933 msgid "You do not have permission to import conversations." msgstr "" -#: assistant\commands\base.py:893 +#: assistant\commands\base.py:938 msgid "Conversation has been imported successfully!" msgstr "" -#: assistant\commands\base.py:899 +#: assistant\commands\base.py:944 #, docstring msgid "\n" " Fetch related embeddings according to the current topn setting along with their scores\n\n" @@ -2837,31 +3737,31 @@ msgid "\n" " " msgstr "" -#: assistant\commands\base.py:906 +#: assistant\commands\base.py:951 msgid "You do not have any embeddings configured!" msgstr "" -#: assistant\commands\base.py:908 +#: assistant\commands\base.py:953 msgid "Top N is set to 0 so no embeddings will be returned" msgstr "" -#: assistant\commands\base.py:914 +#: assistant\commands\base.py:959 msgid "Failed to get embedding for your query" msgstr "" -#: assistant\commands\base.py:923 +#: assistant\commands\base.py:968 msgid "No embeddings could be related to this query with the current settings" msgstr "" -#: assistant\commands\base.py:927 +#: assistant\commands\base.py:972 msgid "`Entry Name: `{}\n" msgstr "" -#: assistant\commands\base.py:928 +#: assistant\commands\base.py:973 msgid "`Relatedness: `{}\n" msgstr "" -#: assistant\commands\base.py:929 +#: assistant\commands\base.py:974 msgid "`Dimensions: `{}\n" msgstr "" From c46945145cadf31aac3029d149a26b9dac03d4ba Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Mon, 1 Jun 2026 11:10:54 -0400 Subject: [PATCH 057/104] New translations messages.pot (French) [ci skip] --- assistant/common/locales/fr-FR.po | 346 +++++++++++++++++++----------- 1 file changed, 223 insertions(+), 123 deletions(-) diff --git a/assistant/common/locales/fr-FR.po b/assistant/common/locales/fr-FR.po index 2fc84630f..d17aca72e 100644 --- a/assistant/common/locales/fr-FR.po +++ b/assistant/common/locales/fr-FR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-07 02:48\n" +"POT-Creation-Date: 2026-06-01 09:46-0400\n" +"PO-Revision-Date: 2026-06-01 15:10\n" "Last-Translator: \n" "Language-Team: French\n" "MIME-Version: 1.0\n" @@ -17,190 +17,226 @@ msgstr "" "X-Crowdin-File-ID: 55\n" "Language: fr_FR\n" -#: assistant\common\api.py:110 assistant\common\api.py:111 -#: assistant\common\api.py:120 assistant\common\api.py:121 -#: assistant\common\api.py:122 assistant\common\api.py:126 -#: assistant\common\chat.py:319 +#: assistant\common\api.py:75 +#, docstring +msgid "Return the effective endpoint URL for a guild (chat and embeddings).\n\n" +" Priority:\n" +" 1. Guild-specific endpoint override\n" +" 2. Global endpoint override\n" +" 3. None (use OpenAI)\n" +" " +msgstr "" + +#: assistant\common\api.py:87 +#, docstring +msgid "Return cached endpoint profile for the effective endpoint.\n\n" +" If ``conf`` is provided, checks the guild-specific profile first,\n" +" then falls back to the global profile.\n" +" " +msgstr "" + +#: assistant\common\api.py:188 assistant\common\api.py:189 +#: assistant\common\api.py:198 assistant\common\api.py:199 +#: assistant\common\api.py:200 assistant\common\api.py:204 +#: assistant\common\chat.py:398 msgid "Unknown" msgstr "" -#: assistant\common\api.py:117 +#: assistant\common\api.py:195 msgid "`Provider: `{}" msgstr "" -#: assistant\common\api.py:118 +#: assistant\common\api.py:196 msgid "`Runtime Chat Model: `{}" msgstr "" -#: assistant\common\api.py:119 +#: assistant\common\api.py:197 msgid "`Runtime Embed Model:`{}" msgstr "" -#: assistant\common\api.py:120 +#: assistant\common\api.py:198 msgid "`Vision: `{}" msgstr "" -#: assistant\common\api.py:121 +#: assistant\common\api.py:199 msgid "`Reasoning: `{}" msgstr "" -#: assistant\common\api.py:122 +#: assistant\common\api.py:200 msgid "`Max Context: `{}" msgstr "" -#: assistant\common\api.py:123 +#: assistant\common\api.py:201 msgid "`Embed Dimensions: `{}" msgstr "" -#: assistant\common\api.py:128 +#: assistant\common\api.py:206 msgid "`Models Discovered: `{}" msgstr "" -#: assistant\common\api.py:395 +#: assistant\common\api.py:601 msgid "Failed to fetch: {}" msgstr "" -#: assistant\common\api.py:659 +#: assistant\common\api.py:913 #, docstring msgid "Get token list from text" msgstr "Obtenir une liste de jetons à partir d'un texte" -#: assistant\common\api.py:691 +#: assistant\common\api.py:946 msgid "No model API key or endpoint override is configured!\n" msgstr "" -#: assistant\common\api.py:693 +#: assistant\common\api.py:948 msgid "- Set this server's API key with `{}`\n" msgstr "" -#: assistant\common\api.py:699 +#: assistant\common\api.py:954 #, docstring msgid "Re-embed all entries using the current embedding model.\n\n" " Handles dimension mismatches by recreating the collection.\n" " " msgstr "" -#: assistant\common\api.py:801 +#: assistant\common\api.py:1057 #, docstring msgid "Get text from token list" msgstr "Obtenir le texte de la liste des jetons" -#: assistant\common\api.py:828 +#: assistant\common\api.py:1085 #, docstring msgid "Summarize older messages via LLM, falling back to degrade_conversation on failure" msgstr "" -#: assistant\common\api.py:934 +#: assistant\common\api.py:1185 #, docstring msgid "Walk backward from target_idx to avoid splitting tool-call/result pairs" msgstr "" -#: assistant\common\api.py:952 +#: assistant\common\api.py:1203 #, docstring msgid "Convert message dicts to a plain-text transcript for summarization" msgstr "" -#: assistant\common\api.py:998 +#: assistant\common\api.py:1249 #, docstring msgid "Last-resort fallback: remove oldest messages to fit within token limit" msgstr "" -#: assistant\common\api.py:1015 +#: assistant\common\api.py:1266 #, docstring msgid "Remove the oldest message of the given role plus its paired tool results." msgstr "" -#: assistant\common\api.py:1098 +#: assistant\common\api.py:1349 #, docstring msgid "Pagify a long string by tokens rather than characters" msgstr "Paginatez une longue chaîne de caractères par jetons plutôt que par caractères" -#: assistant\common\api.py:1169 +#: assistant\common\api.py:1421 msgid "Custom Functions" msgstr "Fonctions personnalisées" -#: assistant\common\api.py:1179 +#: assistant\common\api.py:1431 msgid "Internal Function" msgstr "Fonction interne" -#: assistant\common\api.py:1180 +#: assistant\common\api.py:1432 msgid "This is a built-in function managed by the Assistant cog" msgstr "" -#: assistant\common\api.py:1185 +#: assistant\common\api.py:1437 msgid "3rd Party" msgstr "troisième partie" -#: assistant\common\api.py:1186 +#: assistant\common\api.py:1438 msgid "This function is managed by the `{}` cog" msgstr "Cette fonction est gérée par le `{}` cog" -#: assistant\common\api.py:1189 +#: assistant\common\api.py:1441 msgid "Category" msgstr "" -#: assistant\common\api.py:1191 +#: assistant\common\api.py:1443 msgid "Status" msgstr "" -#: assistant\common\api.py:1192 +#: assistant\common\api.py:1444 msgid "{} {}" msgstr "" -#: assistant\common\api.py:1192 +#: assistant\common\api.py:1444 msgid "Enabled" msgstr "" -#: assistant\common\api.py:1192 +#: assistant\common\api.py:1444 msgid "Disabled" msgstr "" -#: assistant\common\api.py:1198 +#: assistant\common\api.py:1450 msgid "This function consumes `{}` input tokens each call\n" msgstr "Cette fonction consomme des jetons d'entrée `{}` à chaque appel.\n" -#: assistant\common\api.py:1213 +#: assistant\common\api.py:1465 msgid "Hidden..." msgstr "Caché..." -#: assistant\common\api.py:1217 +#: assistant\common\api.py:1469 msgid "\n" "Required: {}" msgstr "" -#: assistant\common\api.py:1218 +#: assistant\common\api.py:1470 msgid "Permission Level" msgstr "" -#: assistant\common\api.py:1219 +#: assistant\common\api.py:1471 msgid "Schema" msgstr "Schéma" -#: assistant\common\api.py:1220 +#: assistant\common\api.py:1472 msgid "Code" msgstr "Code" -#: assistant\common\api.py:1222 assistant\common\api.py:1253 +#: assistant\common\api.py:1474 assistant\common\api.py:1505 msgid "Page {}/{}" msgstr "Page {}/{}" -#: assistant\common\api.py:1229 +#: assistant\common\api.py:1481 msgid "No custom code has been added yet!" msgstr "Aucun code personnalisé n'a encore été ajouté !" -#: assistant\common\api.py:1241 +#: assistant\common\api.py:1493 msgid "No embeddings have been created yet!" msgstr "" -#: assistant\common\api.py:1252 +#: assistant\common\api.py:1504 msgid "Embeddings" msgstr "Emboîtements" -#: assistant\common\api.py:1293 +#: assistant\common\api.py:1545 msgid "No embeddings have been added!" msgstr "Aucun encastrement n'a été ajouté !" -#: assistant\common\chat.py:138 +#: assistant\common\chat.py:141 +#, docstring +msgid "Build the ``[Current Context]`` floating context block.\n\n" +" Rendered into a trailing payload-only user message that the bot sends\n" +" after conversation history. Because that message rides after the\n" +" cached prefix, placing dynamic (per-request) values here keeps the\n" +" cached prompt prefix stable so provider-side prompt caching remains\n" +" effective.\n\n" +" Variables admins have opted to include (via ``[p]floatingcontext``)\n" +" are rendered as self-encapsulated narrative sentences (e.g.\n" +" ``\"The current date is May 16, 2026.\"``) so admins do not need to\n" +" reference the variable in their prompt - toggling it on is enough for\n" +" the model to receive the value.\n\n" +" Returns the formatted block string, or an empty string if no values are\n" +" present.\n" +" " +msgstr "" + +#: assistant\common\chat.py:217 #, docstring msgid "Two-tier pruning of old tool/function results to save context window space.\n\n" " Tier 1 (soft-trim): when *context_fill_ratio* >= ``TOOL_RESULT_SOFT_RATIO``,\n" @@ -212,7 +248,7 @@ msgid "Two-tier pruning of old tool/function results to save context window spac " " msgstr "" -#: assistant\common\chat.py:182 +#: assistant\common\chat.py:261 #, docstring msgid "Remove images from messages once the model has responded enough times.\n\n" " Images are the most token-expensive content in a conversation (easily\n" @@ -226,7 +262,7 @@ msgid "Remove images from messages once the model has responded enough times.\n\ " " msgstr "" -#: assistant\common\chat.py:239 +#: assistant\common\chat.py:318 #, docstring msgid "Cap individual tool results to a fraction of the context window.\n\n" " Prevents a single massive tool result from crowding out everything else.\n" @@ -235,121 +271,130 @@ msgid "Cap individual tool results to a fraction of the context window.\n\n" " " msgstr "" -#: assistant\common\chat.py:265 +#: assistant\common\chat.py:344 #, docstring msgid "Filter kwargs for callables that do not accept arbitrary keyword args." msgstr "" -#: assistant\common\chat.py:285 +#: assistant\common\chat.py:364 #, docstring msgid "Return AllowedMentions allowing role/user pings for privileged members" msgstr "" -#: assistant\common\chat.py:314 +#: assistant\common\chat.py:393 msgid "Execution of admin tool `{}` requires interactive approval, but no interactive message context was available." msgstr "" -#: assistant\common\chat.py:325 +#: assistant\common\chat.py:402 msgid "`{}` wants to run admin tool `{}` from `{}` ({})\n" -"Choose `Approve Once`, `Allow This Session`, or `Skip`." +"Choose `Approve Once`, `Allow This Session`, `Skip`, or `Skip With Feedback`." msgstr "" -#: assistant\common\chat.py:340 +#: assistant\common\chat.py:413 assistant\common\chat.py:439 msgid "Approved once." msgstr "" -#: assistant\common\chat.py:341 +#: assistant\common\chat.py:414 assistant\common\chat.py:440 msgid "Approved for this session." msgstr "" -#: assistant\common\chat.py:342 +#: assistant\common\chat.py:415 assistant\common\chat.py:441 msgid "Skipped." msgstr "" -#: assistant\common\chat.py:343 +#: assistant\common\chat.py:416 assistant\common\chat.py:443 msgid "Approval timed out." msgstr "" -#: assistant\common\chat.py:355 +#: assistant\common\chat.py:442 +msgid "Skipped with feedback." +msgstr "" + +#: assistant\common\chat.py:456 msgid "SKIPPED: Approval for admin tool `{}` timed out. Do not claim it ran. Continue without it, ask again later, or try a different tool." msgstr "" -#: assistant\common\chat.py:360 +#: assistant\common\chat.py:461 msgid "SKIPPED: The user skipped admin tool `{}` for this call. Do not claim it ran. You may continue without it, ask for approval again later, or try a different tool." msgstr "" -#: assistant\common\chat.py:560 +#: assistant\common\chat.py:465 +msgid "\n\n" +"The user's feedback on why they skipped: {}" +msgstr "" + +#: assistant\common\chat.py:663 msgid "No message history!" msgstr "Pas d'historique des messages !" -#: assistant\common\chat.py:582 assistant\common\chat.py:585 -#: assistant\common\chat.py:587 +#: assistant\common\chat.py:685 assistant\common\chat.py:688 +#: assistant\common\chat.py:690 msgid "Internal Server Error({}): {}" msgstr "" -#: assistant\common\chat.py:589 +#: assistant\common\chat.py:692 msgid "Failed to communicate with API!" msgstr "" -#: assistant\common\chat.py:593 +#: assistant\common\chat.py:696 msgid "Invalid API key, please set a new valid key!" msgstr "Clé API invalide, veuillez définir une nouvelle clé valide !" -#: assistant\common\chat.py:595 +#: assistant\common\chat.py:698 msgid "Uh oh, looks like my API key is invalid!" msgstr "On dirait que ma clé API n'est pas valide !" -#: assistant\common\chat.py:597 +#: assistant\common\chat.py:700 msgid "Rate limit error: {}" msgstr "" -#: assistant\common\chat.py:599 +#: assistant\common\chat.py:702 msgid "Read timeout error: {}" msgstr "" -#: assistant\common\chat.py:605 +#: assistant\common\chat.py:711 msgid "Uh oh, something went wrong! Bot owner can use `{}` to view the error." msgstr "Uh oh, quelque chose s'est mal passé ! Le propriétaire du bot peut utiliser `{}` pour voir l'erreur." -#: assistant\common\chat.py:608 +#: assistant\common\chat.py:714 msgid "API Status: {}" msgstr "" -#: assistant\common\chat.py:643 +#: assistant\common\chat.py:749 msgid "No results found" msgstr "Aucun résultat trouvé" -#: assistant\common\chat.py:685 +#: assistant\common\chat.py:791 #, docstring msgid "Call the API asynchronously" msgstr "Appeler l'API de manière asynchrone" -#: assistant\common\chat.py:803 +#: assistant\common\chat.py:909 msgid "None" msgstr "" -#: assistant\common\chat.py:911 +#: assistant\common\chat.py:1027 msgid "Request timed out, please try again." msgstr "" -#: assistant\common\chat.py:922 +#: assistant\common\chat.py:1044 msgid "Bad Request Error2({}): {}" msgstr "" -#: assistant\common\chat.py:924 +#: assistant\common\chat.py:1046 msgid "Bad Request Error({}): {}" msgstr "" -#: assistant\common\chat.py:1109 assistant\common\chat.py:1166 -#: assistant\common\chat.py:1199 +#: assistant\common\chat.py:1288 assistant\common\chat.py:1345 +#: assistant\common\chat.py:1378 msgid "Result sent!" msgstr "" -#: assistant\common\chat.py:1235 +#: assistant\common\chat.py:1414 msgid "Response failed due to invalid regex, check logs for more info." msgstr "Traduisez le texte suivant en français." -#: assistant\common\chat.py:1278 +#: assistant\common\chat.py:1457 #, docstring msgid "Prepare content for calling the GPT API\n\n" " Args:\n" @@ -370,85 +415,94 @@ msgid "Prepare content for calling the GPT API\n\n" " " msgstr "" -#: assistant\common\chat.py:1386 +#: assistant\common\utils.py:29 #, docstring -msgid "Instead of format(**params) possibly giving a KeyError if prompt has code in it" -msgstr "Au lieu de format(**params) qui peut donner une KeyError si l'invite contient du code" +msgid "Translate a simple wildcard trigger phrase into a SAFE, linear regex string.\n\n" +" Only ``*`` (any run of characters, including none) is honored as a metacharacter;\n" +" everything else is escaped via ``re.escape``. This means staff of a public bot can\n" +" paste arbitrary text — including real regex like ``(a+)+`` — and it can never inject\n" +" catastrophic backtracking (ReDoS): the output contains only literals, ``.*`` and ``\\b``,\n" +" which the engine matches in linear time, so no multiprocessing timeout guard is needed.\n\n" +" A phrase with no leading/trailing ``*`` is anchored on word boundaries, so ``idiot``\n" +" hits the whole word ``idiot`` but not ``idiotic``. Add ``*`` to loosen it:\n" +" ``idiot*`` (prefix), ``*idiot`` (suffix), ``*idiot*`` (substring anywhere).\n" +" " +msgstr "" -#: assistant\common\utils.py:28 assistant\common\utils.py:82 +#: assistant\common\utils.py:51 assistant\common\utils.py:105 msgid "Playing" msgstr "" -#: assistant\common\utils.py:29 assistant\common\utils.py:75 +#: assistant\common\utils.py:52 assistant\common\utils.py:98 msgid "Streaming" msgstr "" -#: assistant\common\utils.py:30 +#: assistant\common\utils.py:53 msgid "Listening" msgstr "" -#: assistant\common\utils.py:31 +#: assistant\common\utils.py:54 msgid "Watching" msgstr "" -#: assistant\common\utils.py:32 assistant\common\utils.py:67 +#: assistant\common\utils.py:55 assistant\common\utils.py:90 msgid "Custom status" msgstr "" -#: assistant\common\utils.py:33 +#: assistant\common\utils.py:56 msgid "Competing" msgstr "" -#: assistant\common\utils.py:38 +#: assistant\common\utils.py:61 msgid "Activity" msgstr "" -#: assistant\common\utils.py:55 +#: assistant\common\utils.py:78 msgid "Unknown track" msgstr "" -#: assistant\common\utils.py:56 +#: assistant\common\utils.py:79 msgid "Unknown artist" msgstr "" -#: assistant\common\utils.py:60 +#: assistant\common\utils.py:83 msgid "by {artist}" msgstr "" -#: assistant\common\utils.py:61 +#: assistant\common\utils.py:84 msgid "album: {album}" msgstr "" -#: assistant\common\utils.py:63 +#: assistant\common\utils.py:86 msgid "Listening to Spotify: {details}" msgstr "" -#: assistant\common\utils.py:67 +#: assistant\common\utils.py:90 msgid "Custom status: {status}" msgstr "" -#: assistant\common\utils.py:72 +#: assistant\common\utils.py:95 msgid "game: {game}" msgstr "" -#: assistant\common\utils.py:73 assistant\common\utils.py:80 -#: assistant\common\utils.py:91 +#: assistant\common\utils.py:96 assistant\common\utils.py:103 +#: assistant\common\utils.py:114 msgid "platform: {platform}" msgstr "" -#: assistant\common\utils.py:75 +#: assistant\common\utils.py:98 msgid "Streaming: {details}" msgstr "" -#: assistant\common\utils.py:82 +#: assistant\common\utils.py:105 msgid "Playing: {details}" msgstr "" -#: assistant\common\utils.py:92 +#: assistant\common\utils.py:115 msgid "buttons: {buttons}" msgstr "" -#: assistant\common\utils.py:181 +#: assistant\common\utils.py:204 #, docstring msgid "\n" " Cleans the function name to ensure it only contains alphanumeric characters,\n" @@ -460,53 +514,99 @@ msgid "\n" " " msgstr "" -#: assistant\common\utils.py:201 +#: assistant\common\utils.py:224 #, docstring msgid "Get all attachments from context" msgstr "Obtenir toutes les pièces jointes du contexte" -#: assistant\common\utils.py:222 +#: assistant\common\utils.py:245 msgid "Canceled" msgstr "Annulé" -#: assistant\common\utils.py:235 +#: assistant\common\utils.py:258 msgid "You have been blacklisted from using this command!" msgstr "Vous avez été mis sur liste noire pour l'utilisation de cette commande !" -#: assistant\common\utils.py:239 +#: assistant\common\utils.py:262 msgid "You have a blacklisted role and cannot use this command!" msgstr "Vous avez un rôle sur liste noire et ne pouvez pas utiliser cette commande !" -#: assistant\common\utils.py:243 +#: assistant\common\utils.py:266 msgid "You cannot use that command in this channel!" msgstr "Vous ne pouvez pas utiliser cette commande dans ce canal !" -#: assistant\common\utils.py:247 +#: assistant\common\utils.py:270 msgid "You cannot use that command in any channels under this category" msgstr "Vous ne pouvez pas utiliser cette commande dans les canaux de cette catégorie" -#: assistant\common\utils.py:282 assistant\common\utils.py:283 +#: assistant\common\utils.py:305 assistant\common\utils.py:306 msgid "[Code Removed]" msgstr "[Code supprimé]" -#: assistant\common\utils.py:409 +#: assistant\common\utils.py:457 +#, docstring +msgid "Substitute ``{key}`` placeholders in ``text`` from ``params``.\n\n" +" Uses ``str.replace`` rather than ``str.format`` so prompts containing\n" +" code blocks with curly braces don't raise ``KeyError``.\n" +" " +msgstr "" + +#: assistant\common\utils.py:478 +#, docstring +msgid "Stable, cache-safe prompt template variables.\n\n" +" These values do not change per-request and are safe to inject into the\n" +" `system_prompt` and `initial_prompt` without invalidating provider-side\n" +" prompt caching.\n\n" +" The `extras` dict is expected to only contain stable values (e.g. bank\n" +" type, currency, bank name). Per-user balances belong in\n" +" `get_dynamic_params()`.\n" +" " +msgstr "" + +#: assistant\common\utils.py:525 +#, docstring +msgid "Per-request prompt template variables that change frequently.\n\n" +" These values are kept separate from `get_base_params()` so callers can\n" +" choose to inject them into a trailing system-context block (preserving\n" +" prompt prefix stability for caching) rather than into the system/initial\n" +" prompts.\n\n" +" `dynamic_extras` may carry per-user dynamic values (such as the bank\n" +" balance) that need to be grouped with the other dynamic variables.\n\n" +" `last_interaction_seconds` is the elapsed time (in seconds) since the\n" +" user's previous message in the active conversation. Pass ``None`` if\n" +" this is the user's first message - the resulting value is the literal\n" +" string \"first message\".\n" +" " +msgstr "" + +#: assistant\common\utils.py:601 +#, docstring +msgid "Combined stable + dynamic prompt template variables.\n\n" +" Convenience helper that merges `get_base_params()` with\n" +" `get_dynamic_params()` for callers that don't care about cache-safe\n" +" separation. Cache-aware code paths should call the two split helpers\n" +" directly.\n" +" " +msgstr "" + +#: assistant\common\utils.py:645 #, docstring msgid "Make sure that if a conversation payload contains images that the model supports vision" msgstr "" -#: assistant\common\utils.py:429 +#: assistant\common\utils.py:665 #, docstring msgid "Remove all images sourced from URLs from the message payload" msgstr "" -#: assistant\common\utils.py:449 +#: assistant\common\utils.py:685 #, docstring msgid "Remove invisible Unicode characters that AI detectors might flag.\n\n" " Returns: (cleaned_text, was_modified)\n" " " msgstr "" -#: assistant\common\utils.py:479 +#: assistant\common\utils.py:715 #, docstring msgid "Clean the model response since its stupid and breaks itself\n\n" " Example\n" @@ -524,12 +624,12 @@ msgid "Clean the model response since its stupid and breaks itself\n\n" " " msgstr "" -#: assistant\common\utils.py:531 +#: assistant\common\utils.py:767 #, docstring msgid "Same as clean_response but cleans the whole message payload" msgstr "" -#: assistant\common\utils.py:546 +#: assistant\common\utils.py:782 #, docstring msgid "\n" " Ensure all tool calls satisfy schema requirements, modifying the messages payload in-place.\n\n" @@ -570,17 +670,17 @@ msgid "\n" " " msgstr "" -#: assistant\common\utils.py:650 +#: assistant\common\utils.py:886 #, docstring msgid "Check if a file is a supported document type" msgstr "" -#: assistant\common\utils.py:655 +#: assistant\common\utils.py:891 #, docstring msgid "Get the lowercase file extension from a filename" msgstr "" -#: assistant\common\utils.py:662 +#: assistant\common\utils.py:898 #, docstring msgid "Extract text content from PDF, Word, or Excel files\n\n" " Args:\n" @@ -591,17 +691,17 @@ msgid "Extract text content from PDF, Word, or Excel files\n\n" " " msgstr "" -#: assistant\common\utils.py:688 +#: assistant\common\utils.py:924 #, docstring msgid "Extract text from PDF files using PyMuPDF" msgstr "" -#: assistant\common\utils.py:726 +#: assistant\common\utils.py:962 #, docstring msgid "Extract text from Word documents using pypandoc" msgstr "" -#: assistant\common\utils.py:747 +#: assistant\common\utils.py:983 #, docstring msgid "Extract text from Excel files using pandas" msgstr "" From 55e3355da08f7fffc25ed6c18cfaa8752118582c Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Mon, 1 Jun 2026 11:10:56 -0400 Subject: [PATCH 058/104] New translations messages.pot (French) [ci skip] --- assistant/locales/fr-FR.po | 457 +++++++++++++++++++++++++++++++------ 1 file changed, 390 insertions(+), 67 deletions(-) diff --git a/assistant/locales/fr-FR.po b/assistant/locales/fr-FR.po index 57adc0329..2ee5d5f6f 100644 --- a/assistant/locales/fr-FR.po +++ b/assistant/locales/fr-FR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-07 02:48\n" +"POT-Creation-Date: 2026-06-01 09:46-0400\n" +"PO-Revision-Date: 2026-06-01 15:10\n" "Last-Translator: \n" "Language-Team: French\n" "MIME-Version: 1.0\n" @@ -17,40 +17,145 @@ msgstr "" "X-Crowdin-File-ID: 57\n" "Language: fr_FR\n" -#: assistant\views.py:46 +#: assistant\views.py:54 msgid "Custom" msgstr "" -#: assistant\views.py:58 +#: assistant\views.py:66 msgid "Set API Key" msgstr "" -#: assistant\views.py:60 +#: assistant\views.py:68 msgid "Enter your API Key below" msgstr "" -#: assistant\views.py:81 assistant\views.py:214 assistant\views.py:663 -#: assistant\views.py:905 +#: assistant\views.py:89 assistant\views.py:519 assistant\views.py:968 +#: assistant\views.py:1484 assistant\views.py:1974 assistant\views.py:2264 msgid "This isn't your menu!" msgstr "Ce n'est pas votre menu !" -#: assistant\views.py:104 +#: assistant\views.py:105 +msgid "Skip with feedback" +msgstr "" + +#: assistant\views.py:108 +msgid "Why are you skipping? (optional)" +msgstr "" + +#: assistant\views.py:130 msgid "This approval prompt isn't for you!" msgstr "" -#: assistant\views.py:145 +#: assistant\views.py:177 +msgid "Confirm: {}" +msgstr "" + +#: assistant\views.py:181 +msgid "Reason (blank = use AI's reason)" +msgstr "" + +#: assistant\views.py:204 +#, docstring +msgid "Dropdown of every action available on this server (built-ins + Ark/Notes)." +msgstr "" + +#: assistant\views.py:208 +msgid "Choose a different action…" +msgstr "" + +#: assistant\views.py:215 +#, docstring +msgid "Interactive staff panel proposing a moderation action suggested by the LLM." +msgstr "" + +#: assistant\views.py:245 +msgid "No reason provided." +msgstr "" + +#: assistant\views.py:268 +msgid "# 🧪 SIMULATION — dry run" +msgstr "" + +#: assistant\views.py:269 +msgid "-# Buttons take no real action; this is a test." +msgstr "" + +#: assistant\views.py:272 +msgid "# ⚠️ Proposed Moderation Action" +msgstr "" + +#: assistant\views.py:275 +msgid "**Suggested:** {emoji} {action} • **Severity:** {sev}" +msgstr "" + +#: assistant\views.py:282 +msgid "**User:** {mention} `{uid}`\n" +"**Message:** [jump to message]({url})\n" +"**Channel:** {channel}" +msgstr "" + +#: assistant\views.py:290 +msgid "-# Flagged for: {}" +msgstr "" + +#: assistant\views.py:292 +msgid "**Reason**\n" +"{}" +msgstr "" + +#: assistant\views.py:311 +msgid "**Context**\n" +"{}" +msgstr "" + +#: assistant\views.py:323 +msgid "{} (suggested)" +msgstr "" + +#: assistant\views.py:328 +msgid "No action" +msgstr "" + +#: assistant\views.py:354 assistant\views.py:378 +msgid "This panel was already resolved." +msgstr "" + +#: assistant\views.py:358 +msgid "You don't have permission to perform that action." +msgstr "" + +#: assistant\views.py:364 +msgid "✅ Dismissed — no action taken.\n" +"-# By {}" +msgstr "" + +#: assistant\views.py:383 +msgid "{outcome}\n" +"-# Action by {user}" +msgstr "" + +#: assistant\views.py:389 +msgid "🧪 (dry-run) Would **{action}** {target}.\n" +"-# {reason}" +msgstr "" + +#: assistant\views.py:434 +msgid "⏱️ Auto-action on timeout: {}" +msgstr "" + +#: assistant\views.py:450 msgid "Entry name" msgstr "Nom d'entrée" -#: assistant\views.py:153 +#: assistant\views.py:458 msgid "Training context" msgstr "Contexte de formation" -#: assistant\views.py:172 +#: assistant\views.py:477 msgid "Search Query" msgstr "Requête de recherche" -#: assistant\views.py:264 +#: assistant\views.py:569 msgid "Failed to process embedding `{}`\n" "Content: ```\n" "{}\n" @@ -61,165 +166,383 @@ msgstr "Échec du traitement de l'intégration `{}`\n" "{}\n" "```" -#: assistant\views.py:266 +#: assistant\views.py:571 msgid "An embedding with the name `{}` already exists!" msgstr "Un encastrement portant le nom `{}` existe déjà !" -#: assistant\views.py:271 +#: assistant\views.py:576 msgid "Your embedding labeled `{}` has been processed!" msgstr "Votre intégration étiquetée `{}` a été traitée !" -#: assistant\views.py:282 +#: assistant\views.py:587 msgid "No embeddings to inspect!" msgstr "Pas d'encastrement à inspecter !" -#: assistant\views.py:287 +#: assistant\views.py:592 msgid "Embedding not found!" msgstr "" -#: assistant\views.py:305 +#: assistant\views.py:610 msgid "No embeddings to edit!" msgstr "Pas d'embeddings à éditer !" -#: assistant\views.py:317 +#: assistant\views.py:622 msgid "Failed to edit that embedding, please try again later" msgstr "La modification de l'intégration a échoué, veuillez réessayer plus tard" -#: assistant\views.py:324 +#: assistant\views.py:629 msgid "Your embedding has been modified!" msgstr "Votre intégration a été modifiée !" -#: assistant\views.py:364 +#: assistant\views.py:669 msgid "Add an embedding" msgstr "Ajouter un encastrement" -#: assistant\views.py:370 +#: assistant\views.py:675 msgid "Your embedding is processing and will appear when ready!" msgstr "Votre intégration est en cours de traitement et apparaîtra dès qu'elle sera prête !" -#: assistant\views.py:386 +#: assistant\views.py:691 msgid "No embeddings to delete!" msgstr "Pas d'encastrements à supprimer !" -#: assistant\views.py:388 +#: assistant\views.py:693 msgid "Deleted `{}` embedding." msgstr "Suppression de l'intégration `{}`." -#: assistant\views.py:414 +#: assistant\views.py:719 msgid "No embeddings to search!" msgstr "Pas d'embeddings à rechercher !" -#: assistant\views.py:415 +#: assistant\views.py:720 msgid "Search for an embedding" msgstr "Recherche d'un encastrement" -#: assistant\views.py:437 +#: assistant\views.py:742 msgid "Search result: **{}**" msgstr "Résultat de la recherche : **{}**" -#: assistant\views.py:474 +#: assistant\views.py:779 msgid "Function Edit" msgstr "Fonction Modifier" -#: assistant\views.py:483 +#: assistant\views.py:788 msgid "JSON Schema" msgstr "Schéma JSON" -#: assistant\views.py:489 +#: assistant\views.py:794 msgid "Code" msgstr "Code" -#: assistant\views.py:495 +#: assistant\views.py:800 msgid "Permission Level" msgstr "" -#: assistant\views.py:496 +#: assistant\views.py:801 msgid "User, Mod, Admin, or Owner" msgstr "" -#: assistant\views.py:502 +#: assistant\views.py:807 msgid "Required Discord Permissions" msgstr "" -#: assistant\views.py:503 +#: assistant\views.py:808 msgid "e.g. manage_messages, kick_members (comma-separated, or leave blank)" msgstr "" -#: assistant\views.py:510 +#: assistant\views.py:815 msgid "Category" msgstr "" -#: assistant\views.py:511 +#: assistant\views.py:816 msgid "memory, web, utility" msgstr "" -#: assistant\views.py:523 +#: assistant\views.py:828 msgid "Invalid permission level, must be one of `User`, `Mod`, `Admin`, or `Owner`" msgstr "" -#: assistant\views.py:536 +#: assistant\views.py:841 msgid "Invalid Discord permission names: {}" msgstr "" -#: assistant\views.py:552 +#: assistant\views.py:857 assistant\views.py:1865 msgid "Toggle" msgstr "" -#: assistant\views.py:582 +#: assistant\views.py:887 msgid "Choose tools for {} ({}/{})..." msgstr "" -#: assistant\views.py:588 +#: assistant\views.py:893 msgid "Choose tools for {}..." msgstr "" -#: assistant\views.py:593 +#: assistant\views.py:898 msgid "No tools available" msgstr "" -#: assistant\views.py:606 +#: assistant\views.py:911 assistant\views.py:1387 assistant\views.py:1916 msgid "Prev" msgstr "" -#: assistant\views.py:615 +#: assistant\views.py:920 assistant\views.py:1396 assistant\views.py:1925 msgid "Next" msgstr "" -#: assistant\views.py:623 +#: assistant\views.py:928 assistant\views.py:1420 assistant\views.py:1933 msgid "Close" msgstr "" -#: assistant\views.py:718 +#: assistant\views.py:1023 msgid "{} {}/{} enabled • {} categories • Page {}/{}" msgstr "" -#: assistant\views.py:839 assistant\views.py:859 +#: assistant\views.py:1144 assistant\views.py:1164 assistant\views.py:2200 msgid "That category no longer exists." msgstr "" -#: assistant\views.py:1014 +#: assistant\views.py:1199 +#, docstring +msgid "Split a model id into (provider, short_name).\n\n" +" For ids like ``openai/gpt-4-turbo`` returns ``(\"openai\", \"gpt-4-turbo\")``.\n" +" For ids with no slash returns ``(PROVIDER_OTHER, model_id)``.\n" +" " +msgstr "" + +#: assistant\views.py:1214 +#, docstring +msgid "Group endpoint model ids by their provider prefix.\n\n" +" Returns an ordered dict: providers sorted alphabetically (``other`` last),\n" +" each value is the list of full model ids sorted by short name.\n" +" " +msgstr "" + +#: assistant\views.py:1235 +msgid "Other" +msgstr "" + +#: assistant\views.py:1265 +msgid "Pick a model from {} ({}/{})..." +msgstr "" + +#: assistant\views.py:1271 +msgid "Pick a model from {}..." +msgstr "" + +#: assistant\views.py:1276 +msgid "No models" +msgstr "" + +#: assistant\views.py:1295 +msgid "Enter Model ID" +msgstr "" + +#: assistant\views.py:1298 +msgid "Model ID" +msgstr "" + +#: assistant\views.py:1299 +msgid "e.g. openrouter/auto, openai/gpt-4o, anthropic/claude-3-opus" +msgstr "" + +#: assistant\views.py:1315 +msgid "Search Models" +msgstr "" + +#: assistant\views.py:1318 +msgid "Filter" +msgstr "" + +#: assistant\views.py:1319 +msgid "e.g. claude, gpt-4, mistral" +msgstr "" + +#: assistant\views.py:1335 +msgid "Model Slug Suffix" +msgstr "" + +#: assistant\views.py:1338 assistant\views.py:1360 +msgid "Suffix" +msgstr "" + +#: assistant\views.py:1339 +msgid ":nitro (throughput) :floor (price) :extended (blank = remove)" +msgstr "" + +#: assistant\views.py:1356 +msgid "Search" +msgstr "" + +#: assistant\views.py:1365 +msgid "Clear search" +msgstr "" + +#: assistant\views.py:1405 +msgid "Manual entry" +msgstr "" + +#: assistant\views.py:1413 +msgid "Re-probe" +msgstr "" + +#: assistant\views.py:1445 +#, docstring +msgid "Endpoint model picker grouped by provider prefix." +msgstr "" + +#: assistant\views.py:1532 +msgid "Chat model" +msgstr "" + +#: assistant\views.py:1532 +msgid "Embedding model" +msgstr "" + +#: assistant\views.py:1540 +msgid "# 🤖 {} picker" +msgstr "" + +#: assistant\views.py:1541 +msgid "-# Endpoint: `{}`" +msgstr "" + +#: assistant\views.py:1542 +msgid "Current: **{}**" +msgstr "" + +#: assistant\views.py:1542 assistant\views.py:1760 +msgid "(none)" +msgstr "" + +#: assistant\views.py:1545 +msgid "No models were discovered from this endpoint. Try **Re-probe** or use **Manual entry** to type a model id. Router endpoints like OpenRouter accept aliases such as `{}` or `{}`." +msgstr "" + +#: assistant\views.py:1565 +msgid "-# Search: `{}` • {} result(s)" +msgstr "" + +#: assistant\views.py:1568 +msgid "{} models across {} providers • Page {}/{}" +msgstr "" + +#: assistant\views.py:1577 +msgid "-# Tip: router endpoints accept aliases like `{}` or `{}` via **Manual entry**." +msgstr "" + +#: assistant\views.py:1687 assistant\views.py:1703 +msgid "{} set to **{}**" +msgstr "" + +#: assistant\views.py:1743 +msgid "Invalid suffix `{}`. Valid: {}." +msgstr "" + +#: assistant\views.py:1762 +msgid "Model set to **{}** (suffix: {})" +msgstr "" + +#: assistant\views.py:1784 +#, docstring +msgid "Return on/off/mixed for a trailing-block category.\n\n" +" Inclusion defaults to **off** for every variable on a fresh install.\n" +" " +msgstr "" + +#: assistant\views.py:1801 +#, docstring +msgid "Return every category eligible for the trailing-context-block menu.\n\n" +" Output: ``{category_key: {\"label\": str, \"variables\": [str, ...]}}``.\n\n" +" Inclusion in the floating block is fully admin-controlled - there is\n" +" no implicit default. On a fresh install everything is OFF (blank\n" +" slate). Admins opt variables in one at a time via the floatingcontext\n" +" menu.\n" +" " +msgstr "" + +#: assistant\views.py:1847 +#, docstring +msgid "Return a short human-readable description for a context variable." +msgstr "" + +#: assistant\views.py:1900 +msgid "Toggle individual vars in {}..." +msgstr "" + +#: assistant\views.py:1903 +msgid "No variables" +msgstr "" + +#: assistant\views.py:1993 +#, docstring +msgid "Return formatted warning lines for prompts containing dynamic vars." +msgstr "" + +#: assistant\views.py:2003 +msgid "**System prompt** - `{}`" +msgstr "" + +#: assistant\views.py:2006 +msgid "**Initial prompt** - `{}`" +msgstr "" + +#: assistant\views.py:2011 +msgid "<#{}> - `{}`" +msgstr "" + +#: assistant\views.py:2015 +#, docstring +msgid "Build a mapping of variable name → description for 3rd-party vars." +msgstr "" + +#: assistant\views.py:2049 +msgid "Toggle which variables are included in the trailing `[Current Context]` system message that the bot appends after conversation history. Everything is OFF by default - opt variables in one at a time. Variables you toggle on are rendered as self-encapsulated sentences (e.g. `\"The current date is May 16, 2026.\"`), so you do not need to author a prompt that references them." +msgstr "" + +#: assistant\views.py:2060 +msgid "{} {}/{} variables in block • {} categories • Page {}/{}" +msgstr "" + +#: assistant\views.py:2088 +msgid "(no variables)" +msgstr "" + +#: assistant\views.py:2104 +msgid "## ⚠️ Cache Warning" +msgstr "" + +#: assistant\views.py:2107 +msgid "These prompts contain dynamic variable placeholders that are substituted inline, which busts provider-side prompt-prefix caching on every request:" +msgstr "" + +#: assistant\views.py:2117 +msgid "Tip: remove the placeholder from your prompt and toggle the variable on in the menu above instead - the bot will append the value to the floating context block automatically." +msgstr "" + +#: assistant\views.py:2373 msgid "No code to inspect!" msgstr "Pas de code à inspecter !" -#: assistant\views.py:1038 +#: assistant\views.py:2397 msgid "Here are your custom functions" msgstr "Voici vos fonctions personnalisées" -#: assistant\views.py:1043 +#: assistant\views.py:2402 msgid "Reply to this message with the json schema for your function\n" "- [Example Functions](https://github.com/vertyco/vrt-cogs/tree/main/assistant/example-funcs)" msgstr "Répondez à ce message avec le schéma JSON de votre fonction" -#: assistant\views.py:1064 assistant\views.py:1142 +#: assistant\views.py:2423 assistant\views.py:2501 msgid "SchemaError\n" "{}" msgstr "Erreur de schéma {}" -#: assistant\views.py:1066 assistant\views.py:1144 +#: assistant\views.py:2425 assistant\views.py:2503 msgid "Empty schema!" msgstr "Schéma vide !" -#: assistant\views.py:1069 assistant\views.py:1147 +#: assistant\views.py:2428 assistant\views.py:2506 msgid "Invalid schema!\n" "**Missing**\n" "{}" @@ -227,63 +550,63 @@ msgstr "Schéma non valide !\n" "**Manquant**\n" "{}" -#: assistant\views.py:1073 +#: assistant\views.py:2432 msgid "Reply to this message with the custom code" msgstr "Répondez à ce message avec le code personnalisé" -#: assistant\views.py:1088 assistant\views.py:1153 +#: assistant\views.py:2447 assistant\views.py:2512 msgid "Invalid function" msgstr "Fonction non valide" -#: assistant\views.py:1092 +#: assistant\views.py:2451 msgid "`{}` has been overwritten!" msgstr "`{}` a été écrasé !" -#: assistant\views.py:1094 +#: assistant\views.py:2453 msgid "`{}` has been created!" msgstr "`{}` a été créé !" -#: assistant\views.py:1105 +#: assistant\views.py:2464 msgid "No code to edit!" msgstr "Aucun code à modifier !" -#: assistant\views.py:1113 assistant\views.py:1185 +#: assistant\views.py:2472 assistant\views.py:2544 msgid "Could not find function!" msgstr "Je n'ai pas pu trouver la fonction !" -#: assistant\views.py:1115 +#: assistant\views.py:2474 msgid "This function is managed by the `{}` cog and cannot be edited" msgstr "Cette fonction est gérée par le rouage `{}` et ne peut pas être modifiée" -#: assistant\views.py:1121 +#: assistant\views.py:2480 msgid "The json schema for this function is too long, you'll need to re-upload it to modify" msgstr "Le schéma json de cette fonction est trop long, vous devrez le recharger pour le modifier" -#: assistant\views.py:1126 +#: assistant\views.py:2485 msgid "The code for this function is too long, you'll need to re-upload it to modify" msgstr "Le code de cette fonction est trop long, vous devrez le télécharger à nouveau pour le modifier" -#: assistant\views.py:1170 +#: assistant\views.py:2529 msgid "`{}` function updated!" msgstr "La fonction `{}` a été mise à jour !" -#: assistant\views.py:1178 +#: assistant\views.py:2537 msgid "No code to delete!" msgstr "Pas de code à supprimer !" -#: assistant\views.py:1187 +#: assistant\views.py:2546 msgid "This function is managed by the `{}` cog and cannot be deleted" msgstr "Cette fonction est gérée par le cog `{}` et ne peut pas être supprimée" -#: assistant\views.py:1194 +#: assistant\views.py:2553 msgid "`{}` has been deleted!" msgstr "`{}` a été supprimé !" -#: assistant\views.py:1201 +#: assistant\views.py:2560 msgid "No code to toggle!" msgstr "Pas de code à basculer !" -#: assistant\views.py:1215 +#: assistant\views.py:2574 msgid "Search for a function" msgstr "" From ccf3a00ed6c8a0e516c2359a2196a73d83baa22f Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Mon, 1 Jun 2026 11:10:57 -0400 Subject: [PATCH 059/104] New translations messages.pot (Spanish) [ci skip] --- assistant/common/locales/es-ES.po | 346 +++++++++++++++++++----------- 1 file changed, 223 insertions(+), 123 deletions(-) diff --git a/assistant/common/locales/es-ES.po b/assistant/common/locales/es-ES.po index 7e5f05437..bdc8e4910 100644 --- a/assistant/common/locales/es-ES.po +++ b/assistant/common/locales/es-ES.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-07 02:51\n" +"POT-Creation-Date: 2026-06-01 09:46-0400\n" +"PO-Revision-Date: 2026-06-01 15:10\n" "Last-Translator: \n" "Language-Team: Spanish\n" "MIME-Version: 1.0\n" @@ -17,190 +17,226 @@ msgstr "" "X-Crowdin-File-ID: 55\n" "Language: es_ES\n" -#: assistant\common\api.py:110 assistant\common\api.py:111 -#: assistant\common\api.py:120 assistant\common\api.py:121 -#: assistant\common\api.py:122 assistant\common\api.py:126 -#: assistant\common\chat.py:319 +#: assistant\common\api.py:75 +#, docstring +msgid "Return the effective endpoint URL for a guild (chat and embeddings).\n\n" +" Priority:\n" +" 1. Guild-specific endpoint override\n" +" 2. Global endpoint override\n" +" 3. None (use OpenAI)\n" +" " +msgstr "" + +#: assistant\common\api.py:87 +#, docstring +msgid "Return cached endpoint profile for the effective endpoint.\n\n" +" If ``conf`` is provided, checks the guild-specific profile first,\n" +" then falls back to the global profile.\n" +" " +msgstr "" + +#: assistant\common\api.py:188 assistant\common\api.py:189 +#: assistant\common\api.py:198 assistant\common\api.py:199 +#: assistant\common\api.py:200 assistant\common\api.py:204 +#: assistant\common\chat.py:398 msgid "Unknown" msgstr "" -#: assistant\common\api.py:117 +#: assistant\common\api.py:195 msgid "`Provider: `{}" msgstr "" -#: assistant\common\api.py:118 +#: assistant\common\api.py:196 msgid "`Runtime Chat Model: `{}" msgstr "" -#: assistant\common\api.py:119 +#: assistant\common\api.py:197 msgid "`Runtime Embed Model:`{}" msgstr "" -#: assistant\common\api.py:120 +#: assistant\common\api.py:198 msgid "`Vision: `{}" msgstr "" -#: assistant\common\api.py:121 +#: assistant\common\api.py:199 msgid "`Reasoning: `{}" msgstr "" -#: assistant\common\api.py:122 +#: assistant\common\api.py:200 msgid "`Max Context: `{}" msgstr "" -#: assistant\common\api.py:123 +#: assistant\common\api.py:201 msgid "`Embed Dimensions: `{}" msgstr "" -#: assistant\common\api.py:128 +#: assistant\common\api.py:206 msgid "`Models Discovered: `{}" msgstr "" -#: assistant\common\api.py:395 +#: assistant\common\api.py:601 msgid "Failed to fetch: {}" msgstr "Error al obtener: {}" -#: assistant\common\api.py:659 +#: assistant\common\api.py:913 #, docstring msgid "Get token list from text" msgstr "Obtener lista de tokens a partir de texto" -#: assistant\common\api.py:691 +#: assistant\common\api.py:946 msgid "No model API key or endpoint override is configured!\n" msgstr "" -#: assistant\common\api.py:693 +#: assistant\common\api.py:948 msgid "- Set this server's API key with `{}`\n" msgstr "" -#: assistant\common\api.py:699 +#: assistant\common\api.py:954 #, docstring msgid "Re-embed all entries using the current embedding model.\n\n" " Handles dimension mismatches by recreating the collection.\n" " " msgstr "" -#: assistant\common\api.py:801 +#: assistant\common\api.py:1057 #, docstring msgid "Get text from token list" msgstr "Obtener texto de la lista de tokens" -#: assistant\common\api.py:828 +#: assistant\common\api.py:1085 #, docstring msgid "Summarize older messages via LLM, falling back to degrade_conversation on failure" msgstr "" -#: assistant\common\api.py:934 +#: assistant\common\api.py:1185 #, docstring msgid "Walk backward from target_idx to avoid splitting tool-call/result pairs" msgstr "" -#: assistant\common\api.py:952 +#: assistant\common\api.py:1203 #, docstring msgid "Convert message dicts to a plain-text transcript for summarization" msgstr "" -#: assistant\common\api.py:998 +#: assistant\common\api.py:1249 #, docstring msgid "Last-resort fallback: remove oldest messages to fit within token limit" msgstr "" -#: assistant\common\api.py:1015 +#: assistant\common\api.py:1266 #, docstring msgid "Remove the oldest message of the given role plus its paired tool results." msgstr "" -#: assistant\common\api.py:1098 +#: assistant\common\api.py:1349 #, docstring msgid "Pagify a long string by tokens rather than characters" msgstr "Paginar una cadena larga por tokens en lugar de caracteres" -#: assistant\common\api.py:1169 +#: assistant\common\api.py:1421 msgid "Custom Functions" msgstr "Funciones personalizadas" -#: assistant\common\api.py:1179 +#: assistant\common\api.py:1431 msgid "Internal Function" msgstr "Función interna" -#: assistant\common\api.py:1180 +#: assistant\common\api.py:1432 msgid "This is a built-in function managed by the Assistant cog" msgstr "" -#: assistant\common\api.py:1185 +#: assistant\common\api.py:1437 msgid "3rd Party" msgstr "3ª Parte" -#: assistant\common\api.py:1186 +#: assistant\common\api.py:1438 msgid "This function is managed by the `{}` cog" msgstr "Esta función es gestionada por el engranaje `{}`" -#: assistant\common\api.py:1189 +#: assistant\common\api.py:1441 msgid "Category" msgstr "" -#: assistant\common\api.py:1191 +#: assistant\common\api.py:1443 msgid "Status" msgstr "" -#: assistant\common\api.py:1192 +#: assistant\common\api.py:1444 msgid "{} {}" msgstr "" -#: assistant\common\api.py:1192 +#: assistant\common\api.py:1444 msgid "Enabled" msgstr "" -#: assistant\common\api.py:1192 +#: assistant\common\api.py:1444 msgid "Disabled" msgstr "" -#: assistant\common\api.py:1198 +#: assistant\common\api.py:1450 msgid "This function consumes `{}` input tokens each call\n" msgstr "Esta función consume {} tokens de entrada en cada llamada.\n" -#: assistant\common\api.py:1213 +#: assistant\common\api.py:1465 msgid "Hidden..." msgstr "Oculto..." -#: assistant\common\api.py:1217 +#: assistant\common\api.py:1469 msgid "\n" "Required: {}" msgstr "" -#: assistant\common\api.py:1218 +#: assistant\common\api.py:1470 msgid "Permission Level" msgstr "" -#: assistant\common\api.py:1219 +#: assistant\common\api.py:1471 msgid "Schema" msgstr "Esquema" -#: assistant\common\api.py:1220 +#: assistant\common\api.py:1472 msgid "Code" msgstr "Código" -#: assistant\common\api.py:1222 assistant\common\api.py:1253 +#: assistant\common\api.py:1474 assistant\common\api.py:1505 msgid "Page {}/{}" msgstr "Página {}/{}" -#: assistant\common\api.py:1229 +#: assistant\common\api.py:1481 msgid "No custom code has been added yet!" msgstr "¡Aún no se ha añadido ningún código personalizado!" -#: assistant\common\api.py:1241 +#: assistant\common\api.py:1493 msgid "No embeddings have been created yet!" msgstr "" -#: assistant\common\api.py:1252 +#: assistant\common\api.py:1504 msgid "Embeddings" msgstr "Incrustaciones" -#: assistant\common\api.py:1293 +#: assistant\common\api.py:1545 msgid "No embeddings have been added!" msgstr "¡No se han añadido incrustaciones!" -#: assistant\common\chat.py:138 +#: assistant\common\chat.py:141 +#, docstring +msgid "Build the ``[Current Context]`` floating context block.\n\n" +" Rendered into a trailing payload-only user message that the bot sends\n" +" after conversation history. Because that message rides after the\n" +" cached prefix, placing dynamic (per-request) values here keeps the\n" +" cached prompt prefix stable so provider-side prompt caching remains\n" +" effective.\n\n" +" Variables admins have opted to include (via ``[p]floatingcontext``)\n" +" are rendered as self-encapsulated narrative sentences (e.g.\n" +" ``\"The current date is May 16, 2026.\"``) so admins do not need to\n" +" reference the variable in their prompt - toggling it on is enough for\n" +" the model to receive the value.\n\n" +" Returns the formatted block string, or an empty string if no values are\n" +" present.\n" +" " +msgstr "" + +#: assistant\common\chat.py:217 #, docstring msgid "Two-tier pruning of old tool/function results to save context window space.\n\n" " Tier 1 (soft-trim): when *context_fill_ratio* >= ``TOOL_RESULT_SOFT_RATIO``,\n" @@ -212,7 +248,7 @@ msgid "Two-tier pruning of old tool/function results to save context window spac " " msgstr "" -#: assistant\common\chat.py:182 +#: assistant\common\chat.py:261 #, docstring msgid "Remove images from messages once the model has responded enough times.\n\n" " Images are the most token-expensive content in a conversation (easily\n" @@ -226,7 +262,7 @@ msgid "Remove images from messages once the model has responded enough times.\n\ " " msgstr "" -#: assistant\common\chat.py:239 +#: assistant\common\chat.py:318 #, docstring msgid "Cap individual tool results to a fraction of the context window.\n\n" " Prevents a single massive tool result from crowding out everything else.\n" @@ -235,121 +271,130 @@ msgid "Cap individual tool results to a fraction of the context window.\n\n" " " msgstr "" -#: assistant\common\chat.py:265 +#: assistant\common\chat.py:344 #, docstring msgid "Filter kwargs for callables that do not accept arbitrary keyword args." msgstr "" -#: assistant\common\chat.py:285 +#: assistant\common\chat.py:364 #, docstring msgid "Return AllowedMentions allowing role/user pings for privileged members" msgstr "" -#: assistant\common\chat.py:314 +#: assistant\common\chat.py:393 msgid "Execution of admin tool `{}` requires interactive approval, but no interactive message context was available." msgstr "" -#: assistant\common\chat.py:325 +#: assistant\common\chat.py:402 msgid "`{}` wants to run admin tool `{}` from `{}` ({})\n" -"Choose `Approve Once`, `Allow This Session`, or `Skip`." +"Choose `Approve Once`, `Allow This Session`, `Skip`, or `Skip With Feedback`." msgstr "" -#: assistant\common\chat.py:340 +#: assistant\common\chat.py:413 assistant\common\chat.py:439 msgid "Approved once." msgstr "" -#: assistant\common\chat.py:341 +#: assistant\common\chat.py:414 assistant\common\chat.py:440 msgid "Approved for this session." msgstr "" -#: assistant\common\chat.py:342 +#: assistant\common\chat.py:415 assistant\common\chat.py:441 msgid "Skipped." msgstr "" -#: assistant\common\chat.py:343 +#: assistant\common\chat.py:416 assistant\common\chat.py:443 msgid "Approval timed out." msgstr "" -#: assistant\common\chat.py:355 +#: assistant\common\chat.py:442 +msgid "Skipped with feedback." +msgstr "" + +#: assistant\common\chat.py:456 msgid "SKIPPED: Approval for admin tool `{}` timed out. Do not claim it ran. Continue without it, ask again later, or try a different tool." msgstr "" -#: assistant\common\chat.py:360 +#: assistant\common\chat.py:461 msgid "SKIPPED: The user skipped admin tool `{}` for this call. Do not claim it ran. You may continue without it, ask for approval again later, or try a different tool." msgstr "" -#: assistant\common\chat.py:560 +#: assistant\common\chat.py:465 +msgid "\n\n" +"The user's feedback on why they skipped: {}" +msgstr "" + +#: assistant\common\chat.py:663 msgid "No message history!" msgstr "¡Sin historial de mensajes!" -#: assistant\common\chat.py:582 assistant\common\chat.py:585 -#: assistant\common\chat.py:587 +#: assistant\common\chat.py:685 assistant\common\chat.py:688 +#: assistant\common\chat.py:690 msgid "Internal Server Error({}): {}" msgstr "" -#: assistant\common\chat.py:589 +#: assistant\common\chat.py:692 msgid "Failed to communicate with API!" msgstr "¡No se ha podido comunicar con la API!" -#: assistant\common\chat.py:593 +#: assistant\common\chat.py:696 msgid "Invalid API key, please set a new valid key!" msgstr "¡Clave API no válida, por favor establezca una nueva clave válida!" -#: assistant\common\chat.py:595 +#: assistant\common\chat.py:698 msgid "Uh oh, looks like my API key is invalid!" msgstr "¡Parece que mi clave API no es válida!" -#: assistant\common\chat.py:597 +#: assistant\common\chat.py:700 msgid "Rate limit error: {}" msgstr "" -#: assistant\common\chat.py:599 +#: assistant\common\chat.py:702 msgid "Read timeout error: {}" msgstr "" -#: assistant\common\chat.py:605 +#: assistant\common\chat.py:711 msgid "Uh oh, something went wrong! Bot owner can use `{}` to view the error." msgstr "Uh oh, ¡algo salió mal! El propietario del bot puede usar `{}` para ver el error." -#: assistant\common\chat.py:608 +#: assistant\common\chat.py:714 msgid "API Status: {}" msgstr "Estado de la API: {}" -#: assistant\common\chat.py:643 +#: assistant\common\chat.py:749 msgid "No results found" msgstr "No se encontraron resultados" -#: assistant\common\chat.py:685 +#: assistant\common\chat.py:791 #, docstring msgid "Call the API asynchronously" msgstr "Llamar a la API de forma asíncrona" -#: assistant\common\chat.py:803 +#: assistant\common\chat.py:909 msgid "None" msgstr "Ninguno" -#: assistant\common\chat.py:911 +#: assistant\common\chat.py:1027 msgid "Request timed out, please try again." msgstr "Tiempo de espera agotado, por favor intente de nuevo." -#: assistant\common\chat.py:922 +#: assistant\common\chat.py:1044 msgid "Bad Request Error2({}): {}" msgstr "" -#: assistant\common\chat.py:924 +#: assistant\common\chat.py:1046 msgid "Bad Request Error({}): {}" msgstr "" -#: assistant\common\chat.py:1109 assistant\common\chat.py:1166 -#: assistant\common\chat.py:1199 +#: assistant\common\chat.py:1288 assistant\common\chat.py:1345 +#: assistant\common\chat.py:1378 msgid "Result sent!" msgstr "" -#: assistant\common\chat.py:1235 +#: assistant\common\chat.py:1414 msgid "Response failed due to invalid regex, check logs for more info." msgstr "La respuesta ha fallado debido a una expresión regular no válida, verifica los registros para obtener más información." -#: assistant\common\chat.py:1278 +#: assistant\common\chat.py:1457 #, docstring msgid "Prepare content for calling the GPT API\n\n" " Args:\n" @@ -370,85 +415,94 @@ msgid "Prepare content for calling the GPT API\n\n" " " msgstr "" -#: assistant\common\chat.py:1386 +#: assistant\common\utils.py:29 #, docstring -msgid "Instead of format(**params) possibly giving a KeyError if prompt has code in it" -msgstr "En lugar de format(**params) que posiblemente genere un KeyError si el prompt contiene código en él" +msgid "Translate a simple wildcard trigger phrase into a SAFE, linear regex string.\n\n" +" Only ``*`` (any run of characters, including none) is honored as a metacharacter;\n" +" everything else is escaped via ``re.escape``. This means staff of a public bot can\n" +" paste arbitrary text — including real regex like ``(a+)+`` — and it can never inject\n" +" catastrophic backtracking (ReDoS): the output contains only literals, ``.*`` and ``\\b``,\n" +" which the engine matches in linear time, so no multiprocessing timeout guard is needed.\n\n" +" A phrase with no leading/trailing ``*`` is anchored on word boundaries, so ``idiot``\n" +" hits the whole word ``idiot`` but not ``idiotic``. Add ``*`` to loosen it:\n" +" ``idiot*`` (prefix), ``*idiot`` (suffix), ``*idiot*`` (substring anywhere).\n" +" " +msgstr "" -#: assistant\common\utils.py:28 assistant\common\utils.py:82 +#: assistant\common\utils.py:51 assistant\common\utils.py:105 msgid "Playing" msgstr "" -#: assistant\common\utils.py:29 assistant\common\utils.py:75 +#: assistant\common\utils.py:52 assistant\common\utils.py:98 msgid "Streaming" msgstr "" -#: assistant\common\utils.py:30 +#: assistant\common\utils.py:53 msgid "Listening" msgstr "" -#: assistant\common\utils.py:31 +#: assistant\common\utils.py:54 msgid "Watching" msgstr "" -#: assistant\common\utils.py:32 assistant\common\utils.py:67 +#: assistant\common\utils.py:55 assistant\common\utils.py:90 msgid "Custom status" msgstr "" -#: assistant\common\utils.py:33 +#: assistant\common\utils.py:56 msgid "Competing" msgstr "" -#: assistant\common\utils.py:38 +#: assistant\common\utils.py:61 msgid "Activity" msgstr "" -#: assistant\common\utils.py:55 +#: assistant\common\utils.py:78 msgid "Unknown track" msgstr "" -#: assistant\common\utils.py:56 +#: assistant\common\utils.py:79 msgid "Unknown artist" msgstr "" -#: assistant\common\utils.py:60 +#: assistant\common\utils.py:83 msgid "by {artist}" msgstr "" -#: assistant\common\utils.py:61 +#: assistant\common\utils.py:84 msgid "album: {album}" msgstr "" -#: assistant\common\utils.py:63 +#: assistant\common\utils.py:86 msgid "Listening to Spotify: {details}" msgstr "" -#: assistant\common\utils.py:67 +#: assistant\common\utils.py:90 msgid "Custom status: {status}" msgstr "" -#: assistant\common\utils.py:72 +#: assistant\common\utils.py:95 msgid "game: {game}" msgstr "" -#: assistant\common\utils.py:73 assistant\common\utils.py:80 -#: assistant\common\utils.py:91 +#: assistant\common\utils.py:96 assistant\common\utils.py:103 +#: assistant\common\utils.py:114 msgid "platform: {platform}" msgstr "" -#: assistant\common\utils.py:75 +#: assistant\common\utils.py:98 msgid "Streaming: {details}" msgstr "" -#: assistant\common\utils.py:82 +#: assistant\common\utils.py:105 msgid "Playing: {details}" msgstr "" -#: assistant\common\utils.py:92 +#: assistant\common\utils.py:115 msgid "buttons: {buttons}" msgstr "" -#: assistant\common\utils.py:181 +#: assistant\common\utils.py:204 #, docstring msgid "\n" " Cleans the function name to ensure it only contains alphanumeric characters,\n" @@ -467,53 +521,99 @@ msgstr "\n" " str: El nombre de la función limpiado.\n" " " -#: assistant\common\utils.py:201 +#: assistant\common\utils.py:224 #, docstring msgid "Get all attachments from context" msgstr "Obtener todos los archivos adjuntos del contexto" -#: assistant\common\utils.py:222 +#: assistant\common\utils.py:245 msgid "Canceled" msgstr "Cancelado" -#: assistant\common\utils.py:235 +#: assistant\common\utils.py:258 msgid "You have been blacklisted from using this command!" msgstr "¡Has sido incluido en la lista negra de usuarios de este comando!" -#: assistant\common\utils.py:239 +#: assistant\common\utils.py:262 msgid "You have a blacklisted role and cannot use this command!" msgstr "¡Tienes un rol en la lista negra y no puedes usar este comando!" -#: assistant\common\utils.py:243 +#: assistant\common\utils.py:266 msgid "You cannot use that command in this channel!" msgstr "¡No puedes usar ese comando en este canal!" -#: assistant\common\utils.py:247 +#: assistant\common\utils.py:270 msgid "You cannot use that command in any channels under this category" msgstr "No puedes usar ese comando en ningún canal bajo esta categoría" -#: assistant\common\utils.py:282 assistant\common\utils.py:283 +#: assistant\common\utils.py:305 assistant\common\utils.py:306 msgid "[Code Removed]" msgstr "[Código eliminado]" -#: assistant\common\utils.py:409 +#: assistant\common\utils.py:457 +#, docstring +msgid "Substitute ``{key}`` placeholders in ``text`` from ``params``.\n\n" +" Uses ``str.replace`` rather than ``str.format`` so prompts containing\n" +" code blocks with curly braces don't raise ``KeyError``.\n" +" " +msgstr "" + +#: assistant\common\utils.py:478 +#, docstring +msgid "Stable, cache-safe prompt template variables.\n\n" +" These values do not change per-request and are safe to inject into the\n" +" `system_prompt` and `initial_prompt` without invalidating provider-side\n" +" prompt caching.\n\n" +" The `extras` dict is expected to only contain stable values (e.g. bank\n" +" type, currency, bank name). Per-user balances belong in\n" +" `get_dynamic_params()`.\n" +" " +msgstr "" + +#: assistant\common\utils.py:525 +#, docstring +msgid "Per-request prompt template variables that change frequently.\n\n" +" These values are kept separate from `get_base_params()` so callers can\n" +" choose to inject them into a trailing system-context block (preserving\n" +" prompt prefix stability for caching) rather than into the system/initial\n" +" prompts.\n\n" +" `dynamic_extras` may carry per-user dynamic values (such as the bank\n" +" balance) that need to be grouped with the other dynamic variables.\n\n" +" `last_interaction_seconds` is the elapsed time (in seconds) since the\n" +" user's previous message in the active conversation. Pass ``None`` if\n" +" this is the user's first message - the resulting value is the literal\n" +" string \"first message\".\n" +" " +msgstr "" + +#: assistant\common\utils.py:601 +#, docstring +msgid "Combined stable + dynamic prompt template variables.\n\n" +" Convenience helper that merges `get_base_params()` with\n" +" `get_dynamic_params()` for callers that don't care about cache-safe\n" +" separation. Cache-aware code paths should call the two split helpers\n" +" directly.\n" +" " +msgstr "" + +#: assistant\common\utils.py:645 #, docstring msgid "Make sure that if a conversation payload contains images that the model supports vision" msgstr "Asegúrese de que si una carga de conversación contiene imágenes, el modelo sea compatible con la visión" -#: assistant\common\utils.py:429 +#: assistant\common\utils.py:665 #, docstring msgid "Remove all images sourced from URLs from the message payload" msgstr "" -#: assistant\common\utils.py:449 +#: assistant\common\utils.py:685 #, docstring msgid "Remove invisible Unicode characters that AI detectors might flag.\n\n" " Returns: (cleaned_text, was_modified)\n" " " msgstr "" -#: assistant\common\utils.py:479 +#: assistant\common\utils.py:715 #, docstring msgid "Clean the model response since its stupid and breaks itself\n\n" " Example\n" @@ -531,12 +631,12 @@ msgid "Clean the model response since its stupid and breaks itself\n\n" " " msgstr "" -#: assistant\common\utils.py:531 +#: assistant\common\utils.py:767 #, docstring msgid "Same as clean_response but cleans the whole message payload" msgstr "" -#: assistant\common\utils.py:546 +#: assistant\common\utils.py:782 #, docstring msgid "\n" " Ensure all tool calls satisfy schema requirements, modifying the messages payload in-place.\n\n" @@ -613,17 +713,17 @@ msgstr "\n" " Devuelve: booleano, True si se purgó alguna llamada o respuesta de herramienta.\n" " " -#: assistant\common\utils.py:650 +#: assistant\common\utils.py:886 #, docstring msgid "Check if a file is a supported document type" msgstr "" -#: assistant\common\utils.py:655 +#: assistant\common\utils.py:891 #, docstring msgid "Get the lowercase file extension from a filename" msgstr "" -#: assistant\common\utils.py:662 +#: assistant\common\utils.py:898 #, docstring msgid "Extract text content from PDF, Word, or Excel files\n\n" " Args:\n" @@ -634,17 +734,17 @@ msgid "Extract text content from PDF, Word, or Excel files\n\n" " " msgstr "" -#: assistant\common\utils.py:688 +#: assistant\common\utils.py:924 #, docstring msgid "Extract text from PDF files using PyMuPDF" msgstr "" -#: assistant\common\utils.py:726 +#: assistant\common\utils.py:962 #, docstring msgid "Extract text from Word documents using pypandoc" msgstr "" -#: assistant\common\utils.py:747 +#: assistant\common\utils.py:983 #, docstring msgid "Extract text from Excel files using pandas" msgstr "" From 43dce8a5709c2cf48394b6160cbfca17f2363b12 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Mon, 1 Jun 2026 11:11:02 -0400 Subject: [PATCH 060/104] New translations messages.pot (Spanish) [ci skip] --- assistant/locales/es-ES.po | 457 +++++++++++++++++++++++++++++++------ 1 file changed, 390 insertions(+), 67 deletions(-) diff --git a/assistant/locales/es-ES.po b/assistant/locales/es-ES.po index ebccdbc43..2a0bb40e6 100644 --- a/assistant/locales/es-ES.po +++ b/assistant/locales/es-ES.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-07 02:51\n" +"POT-Creation-Date: 2026-06-01 09:46-0400\n" +"PO-Revision-Date: 2026-06-01 15:10\n" "Last-Translator: \n" "Language-Team: Spanish\n" "MIME-Version: 1.0\n" @@ -17,40 +17,145 @@ msgstr "" "X-Crowdin-File-ID: 57\n" "Language: es_ES\n" -#: assistant\views.py:46 +#: assistant\views.py:54 msgid "Custom" msgstr "" -#: assistant\views.py:58 +#: assistant\views.py:66 msgid "Set API Key" msgstr "" -#: assistant\views.py:60 +#: assistant\views.py:68 msgid "Enter your API Key below" msgstr "" -#: assistant\views.py:81 assistant\views.py:214 assistant\views.py:663 -#: assistant\views.py:905 +#: assistant\views.py:89 assistant\views.py:519 assistant\views.py:968 +#: assistant\views.py:1484 assistant\views.py:1974 assistant\views.py:2264 msgid "This isn't your menu!" msgstr "¡Este no es tu menú!" -#: assistant\views.py:104 +#: assistant\views.py:105 +msgid "Skip with feedback" +msgstr "" + +#: assistant\views.py:108 +msgid "Why are you skipping? (optional)" +msgstr "" + +#: assistant\views.py:130 msgid "This approval prompt isn't for you!" msgstr "" -#: assistant\views.py:145 +#: assistant\views.py:177 +msgid "Confirm: {}" +msgstr "" + +#: assistant\views.py:181 +msgid "Reason (blank = use AI's reason)" +msgstr "" + +#: assistant\views.py:204 +#, docstring +msgid "Dropdown of every action available on this server (built-ins + Ark/Notes)." +msgstr "" + +#: assistant\views.py:208 +msgid "Choose a different action…" +msgstr "" + +#: assistant\views.py:215 +#, docstring +msgid "Interactive staff panel proposing a moderation action suggested by the LLM." +msgstr "" + +#: assistant\views.py:245 +msgid "No reason provided." +msgstr "" + +#: assistant\views.py:268 +msgid "# 🧪 SIMULATION — dry run" +msgstr "" + +#: assistant\views.py:269 +msgid "-# Buttons take no real action; this is a test." +msgstr "" + +#: assistant\views.py:272 +msgid "# ⚠️ Proposed Moderation Action" +msgstr "" + +#: assistant\views.py:275 +msgid "**Suggested:** {emoji} {action} • **Severity:** {sev}" +msgstr "" + +#: assistant\views.py:282 +msgid "**User:** {mention} `{uid}`\n" +"**Message:** [jump to message]({url})\n" +"**Channel:** {channel}" +msgstr "" + +#: assistant\views.py:290 +msgid "-# Flagged for: {}" +msgstr "" + +#: assistant\views.py:292 +msgid "**Reason**\n" +"{}" +msgstr "" + +#: assistant\views.py:311 +msgid "**Context**\n" +"{}" +msgstr "" + +#: assistant\views.py:323 +msgid "{} (suggested)" +msgstr "" + +#: assistant\views.py:328 +msgid "No action" +msgstr "" + +#: assistant\views.py:354 assistant\views.py:378 +msgid "This panel was already resolved." +msgstr "" + +#: assistant\views.py:358 +msgid "You don't have permission to perform that action." +msgstr "" + +#: assistant\views.py:364 +msgid "✅ Dismissed — no action taken.\n" +"-# By {}" +msgstr "" + +#: assistant\views.py:383 +msgid "{outcome}\n" +"-# Action by {user}" +msgstr "" + +#: assistant\views.py:389 +msgid "🧪 (dry-run) Would **{action}** {target}.\n" +"-# {reason}" +msgstr "" + +#: assistant\views.py:434 +msgid "⏱️ Auto-action on timeout: {}" +msgstr "" + +#: assistant\views.py:450 msgid "Entry name" msgstr "Nombre de la entrada" -#: assistant\views.py:153 +#: assistant\views.py:458 msgid "Training context" msgstr "Contexto de la formación" -#: assistant\views.py:172 +#: assistant\views.py:477 msgid "Search Query" msgstr "Consulta de búsqueda" -#: assistant\views.py:264 +#: assistant\views.py:569 msgid "Failed to process embedding `{}`\n" "Content: ```\n" "{}\n" @@ -60,229 +165,447 @@ msgstr "Error al procesar la incrustación `{}`\n" "{}\n" "```" -#: assistant\views.py:266 +#: assistant\views.py:571 msgid "An embedding with the name `{}` already exists!" msgstr "¡Ya existe una incrustación con el nombre `{}`!" -#: assistant\views.py:271 +#: assistant\views.py:576 msgid "Your embedding labeled `{}` has been processed!" msgstr "¡Su incrustación etiquetada `{}` ha sido procesada!" -#: assistant\views.py:282 +#: assistant\views.py:587 msgid "No embeddings to inspect!" msgstr "¡No hay incrustaciones para inspeccionar!" -#: assistant\views.py:287 +#: assistant\views.py:592 msgid "Embedding not found!" msgstr "" -#: assistant\views.py:305 +#: assistant\views.py:610 msgid "No embeddings to edit!" msgstr "¡No hay incrustaciones para editar!" -#: assistant\views.py:317 +#: assistant\views.py:622 msgid "Failed to edit that embedding, please try again later" msgstr "No se ha podido editar esa incrustación, por favor inténtalo de nuevo más tarde" -#: assistant\views.py:324 +#: assistant\views.py:629 msgid "Your embedding has been modified!" msgstr "¡Tu incrustación ha sido modificada!" -#: assistant\views.py:364 +#: assistant\views.py:669 msgid "Add an embedding" msgstr "Añadir una incrustación" -#: assistant\views.py:370 +#: assistant\views.py:675 msgid "Your embedding is processing and will appear when ready!" msgstr "¡Su incrustación se está procesando y aparecerá cuando esté lista!" -#: assistant\views.py:386 +#: assistant\views.py:691 msgid "No embeddings to delete!" msgstr "¡No hay incrustaciones que borrar!" -#: assistant\views.py:388 +#: assistant\views.py:693 msgid "Deleted `{}` embedding." msgstr "Se ha eliminado la incrustación `{}`." -#: assistant\views.py:414 +#: assistant\views.py:719 msgid "No embeddings to search!" msgstr "¡No hay incrustaciones para buscar!" -#: assistant\views.py:415 +#: assistant\views.py:720 msgid "Search for an embedding" msgstr "Buscar una incrustación" -#: assistant\views.py:437 +#: assistant\views.py:742 msgid "Search result: **{}**" msgstr "Resultado de la búsqueda: **{}**" -#: assistant\views.py:474 +#: assistant\views.py:779 msgid "Function Edit" msgstr "Función Editar" -#: assistant\views.py:483 +#: assistant\views.py:788 msgid "JSON Schema" msgstr "Esquema JSON" -#: assistant\views.py:489 +#: assistant\views.py:794 msgid "Code" msgstr "Código" -#: assistant\views.py:495 +#: assistant\views.py:800 msgid "Permission Level" msgstr "" -#: assistant\views.py:496 +#: assistant\views.py:801 msgid "User, Mod, Admin, or Owner" msgstr "" -#: assistant\views.py:502 +#: assistant\views.py:807 msgid "Required Discord Permissions" msgstr "" -#: assistant\views.py:503 +#: assistant\views.py:808 msgid "e.g. manage_messages, kick_members (comma-separated, or leave blank)" msgstr "" -#: assistant\views.py:510 +#: assistant\views.py:815 msgid "Category" msgstr "" -#: assistant\views.py:511 +#: assistant\views.py:816 msgid "memory, web, utility" msgstr "" -#: assistant\views.py:523 +#: assistant\views.py:828 msgid "Invalid permission level, must be one of `User`, `Mod`, `Admin`, or `Owner`" msgstr "" -#: assistant\views.py:536 +#: assistant\views.py:841 msgid "Invalid Discord permission names: {}" msgstr "" -#: assistant\views.py:552 +#: assistant\views.py:857 assistant\views.py:1865 msgid "Toggle" msgstr "" -#: assistant\views.py:582 +#: assistant\views.py:887 msgid "Choose tools for {} ({}/{})..." msgstr "" -#: assistant\views.py:588 +#: assistant\views.py:893 msgid "Choose tools for {}..." msgstr "" -#: assistant\views.py:593 +#: assistant\views.py:898 msgid "No tools available" msgstr "" -#: assistant\views.py:606 +#: assistant\views.py:911 assistant\views.py:1387 assistant\views.py:1916 msgid "Prev" msgstr "" -#: assistant\views.py:615 +#: assistant\views.py:920 assistant\views.py:1396 assistant\views.py:1925 msgid "Next" msgstr "" -#: assistant\views.py:623 +#: assistant\views.py:928 assistant\views.py:1420 assistant\views.py:1933 msgid "Close" msgstr "" -#: assistant\views.py:718 +#: assistant\views.py:1023 msgid "{} {}/{} enabled • {} categories • Page {}/{}" msgstr "" -#: assistant\views.py:839 assistant\views.py:859 +#: assistant\views.py:1144 assistant\views.py:1164 assistant\views.py:2200 msgid "That category no longer exists." msgstr "" -#: assistant\views.py:1014 +#: assistant\views.py:1199 +#, docstring +msgid "Split a model id into (provider, short_name).\n\n" +" For ids like ``openai/gpt-4-turbo`` returns ``(\"openai\", \"gpt-4-turbo\")``.\n" +" For ids with no slash returns ``(PROVIDER_OTHER, model_id)``.\n" +" " +msgstr "" + +#: assistant\views.py:1214 +#, docstring +msgid "Group endpoint model ids by their provider prefix.\n\n" +" Returns an ordered dict: providers sorted alphabetically (``other`` last),\n" +" each value is the list of full model ids sorted by short name.\n" +" " +msgstr "" + +#: assistant\views.py:1235 +msgid "Other" +msgstr "" + +#: assistant\views.py:1265 +msgid "Pick a model from {} ({}/{})..." +msgstr "" + +#: assistant\views.py:1271 +msgid "Pick a model from {}..." +msgstr "" + +#: assistant\views.py:1276 +msgid "No models" +msgstr "" + +#: assistant\views.py:1295 +msgid "Enter Model ID" +msgstr "" + +#: assistant\views.py:1298 +msgid "Model ID" +msgstr "" + +#: assistant\views.py:1299 +msgid "e.g. openrouter/auto, openai/gpt-4o, anthropic/claude-3-opus" +msgstr "" + +#: assistant\views.py:1315 +msgid "Search Models" +msgstr "" + +#: assistant\views.py:1318 +msgid "Filter" +msgstr "" + +#: assistant\views.py:1319 +msgid "e.g. claude, gpt-4, mistral" +msgstr "" + +#: assistant\views.py:1335 +msgid "Model Slug Suffix" +msgstr "" + +#: assistant\views.py:1338 assistant\views.py:1360 +msgid "Suffix" +msgstr "" + +#: assistant\views.py:1339 +msgid ":nitro (throughput) :floor (price) :extended (blank = remove)" +msgstr "" + +#: assistant\views.py:1356 +msgid "Search" +msgstr "" + +#: assistant\views.py:1365 +msgid "Clear search" +msgstr "" + +#: assistant\views.py:1405 +msgid "Manual entry" +msgstr "" + +#: assistant\views.py:1413 +msgid "Re-probe" +msgstr "" + +#: assistant\views.py:1445 +#, docstring +msgid "Endpoint model picker grouped by provider prefix." +msgstr "" + +#: assistant\views.py:1532 +msgid "Chat model" +msgstr "" + +#: assistant\views.py:1532 +msgid "Embedding model" +msgstr "" + +#: assistant\views.py:1540 +msgid "# 🤖 {} picker" +msgstr "" + +#: assistant\views.py:1541 +msgid "-# Endpoint: `{}`" +msgstr "" + +#: assistant\views.py:1542 +msgid "Current: **{}**" +msgstr "" + +#: assistant\views.py:1542 assistant\views.py:1760 +msgid "(none)" +msgstr "" + +#: assistant\views.py:1545 +msgid "No models were discovered from this endpoint. Try **Re-probe** or use **Manual entry** to type a model id. Router endpoints like OpenRouter accept aliases such as `{}` or `{}`." +msgstr "" + +#: assistant\views.py:1565 +msgid "-# Search: `{}` • {} result(s)" +msgstr "" + +#: assistant\views.py:1568 +msgid "{} models across {} providers • Page {}/{}" +msgstr "" + +#: assistant\views.py:1577 +msgid "-# Tip: router endpoints accept aliases like `{}` or `{}` via **Manual entry**." +msgstr "" + +#: assistant\views.py:1687 assistant\views.py:1703 +msgid "{} set to **{}**" +msgstr "" + +#: assistant\views.py:1743 +msgid "Invalid suffix `{}`. Valid: {}." +msgstr "" + +#: assistant\views.py:1762 +msgid "Model set to **{}** (suffix: {})" +msgstr "" + +#: assistant\views.py:1784 +#, docstring +msgid "Return on/off/mixed for a trailing-block category.\n\n" +" Inclusion defaults to **off** for every variable on a fresh install.\n" +" " +msgstr "" + +#: assistant\views.py:1801 +#, docstring +msgid "Return every category eligible for the trailing-context-block menu.\n\n" +" Output: ``{category_key: {\"label\": str, \"variables\": [str, ...]}}``.\n\n" +" Inclusion in the floating block is fully admin-controlled - there is\n" +" no implicit default. On a fresh install everything is OFF (blank\n" +" slate). Admins opt variables in one at a time via the floatingcontext\n" +" menu.\n" +" " +msgstr "" + +#: assistant\views.py:1847 +#, docstring +msgid "Return a short human-readable description for a context variable." +msgstr "" + +#: assistant\views.py:1900 +msgid "Toggle individual vars in {}..." +msgstr "" + +#: assistant\views.py:1903 +msgid "No variables" +msgstr "" + +#: assistant\views.py:1993 +#, docstring +msgid "Return formatted warning lines for prompts containing dynamic vars." +msgstr "" + +#: assistant\views.py:2003 +msgid "**System prompt** - `{}`" +msgstr "" + +#: assistant\views.py:2006 +msgid "**Initial prompt** - `{}`" +msgstr "" + +#: assistant\views.py:2011 +msgid "<#{}> - `{}`" +msgstr "" + +#: assistant\views.py:2015 +#, docstring +msgid "Build a mapping of variable name → description for 3rd-party vars." +msgstr "" + +#: assistant\views.py:2049 +msgid "Toggle which variables are included in the trailing `[Current Context]` system message that the bot appends after conversation history. Everything is OFF by default - opt variables in one at a time. Variables you toggle on are rendered as self-encapsulated sentences (e.g. `\"The current date is May 16, 2026.\"`), so you do not need to author a prompt that references them." +msgstr "" + +#: assistant\views.py:2060 +msgid "{} {}/{} variables in block • {} categories • Page {}/{}" +msgstr "" + +#: assistant\views.py:2088 +msgid "(no variables)" +msgstr "" + +#: assistant\views.py:2104 +msgid "## ⚠️ Cache Warning" +msgstr "" + +#: assistant\views.py:2107 +msgid "These prompts contain dynamic variable placeholders that are substituted inline, which busts provider-side prompt-prefix caching on every request:" +msgstr "" + +#: assistant\views.py:2117 +msgid "Tip: remove the placeholder from your prompt and toggle the variable on in the menu above instead - the bot will append the value to the floating context block automatically." +msgstr "" + +#: assistant\views.py:2373 msgid "No code to inspect!" msgstr "¡No hay código para inspeccionar!" -#: assistant\views.py:1038 +#: assistant\views.py:2397 msgid "Here are your custom functions" msgstr "Aquí están tus funciones personalizadas" -#: assistant\views.py:1043 +#: assistant\views.py:2402 msgid "Reply to this message with the json schema for your function\n" "- [Example Functions](https://github.com/vertyco/vrt-cogs/tree/main/assistant/example-funcs)" msgstr "Responda a este mensaje con el esquema JSON de su función\n" "- [Funciones de Ejemplo](https://github.com/vertyco/vrt-cogs/tree/main/assistant/example-funcs)" -#: assistant\views.py:1064 assistant\views.py:1142 +#: assistant\views.py:2423 assistant\views.py:2501 msgid "SchemaError\n" "{}" msgstr "Error de esquema {}" -#: assistant\views.py:1066 assistant\views.py:1144 +#: assistant\views.py:2425 assistant\views.py:2503 msgid "Empty schema!" msgstr "Esquema vacío!" -#: assistant\views.py:1069 assistant\views.py:1147 +#: assistant\views.py:2428 assistant\views.py:2506 msgid "Invalid schema!\n" "**Missing**\n" "{}" msgstr "Esquema no válido.\n" "**Falta** {}" -#: assistant\views.py:1073 +#: assistant\views.py:2432 msgid "Reply to this message with the custom code" msgstr "Responder a este mensaje con el código personalizado" -#: assistant\views.py:1088 assistant\views.py:1153 +#: assistant\views.py:2447 assistant\views.py:2512 msgid "Invalid function" msgstr "Función no válida" -#: assistant\views.py:1092 +#: assistant\views.py:2451 msgid "`{}` has been overwritten!" msgstr "¡`{}` ha sido sobrescrito!" -#: assistant\views.py:1094 +#: assistant\views.py:2453 msgid "`{}` has been created!" msgstr "¡`{}` ha sido creado!" -#: assistant\views.py:1105 +#: assistant\views.py:2464 msgid "No code to edit!" msgstr "¡No hay código para editar!" -#: assistant\views.py:1113 assistant\views.py:1185 +#: assistant\views.py:2472 assistant\views.py:2544 msgid "Could not find function!" msgstr "¡No se pudo encontrar la función!" -#: assistant\views.py:1115 +#: assistant\views.py:2474 msgid "This function is managed by the `{}` cog and cannot be edited" msgstr "Esta función es gestionada por el engranaje `{}` y no se puede editar" -#: assistant\views.py:1121 +#: assistant\views.py:2480 msgid "The json schema for this function is too long, you'll need to re-upload it to modify" msgstr "El esquema JSON de esta función es demasiado largo, deberás volver a cargarlo para modificarlo" -#: assistant\views.py:1126 +#: assistant\views.py:2485 msgid "The code for this function is too long, you'll need to re-upload it to modify" msgstr "El código de esta función es demasiado largo, tendrás que volver a cargarlo para modificarlo" -#: assistant\views.py:1170 +#: assistant\views.py:2529 msgid "`{}` function updated!" msgstr "¡Función `{}` actualizada!" -#: assistant\views.py:1178 +#: assistant\views.py:2537 msgid "No code to delete!" msgstr "¡No hay código para eliminar!" -#: assistant\views.py:1187 +#: assistant\views.py:2546 msgid "This function is managed by the `{}` cog and cannot be deleted" msgstr "Esta función es gestionada por el engranaje `{}` y no puede ser eliminada" -#: assistant\views.py:1194 +#: assistant\views.py:2553 msgid "`{}` has been deleted!" msgstr "¡`{}` ha sido borrado!" -#: assistant\views.py:1201 +#: assistant\views.py:2560 msgid "No code to toggle!" msgstr "¡No hay código para alternar!" -#: assistant\views.py:1215 +#: assistant\views.py:2574 msgid "Search for a function" msgstr "Buscar una función" From 076a4677e18b558ab219b3e38f2087ac22e251ba Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Mon, 1 Jun 2026 11:11:03 -0400 Subject: [PATCH 061/104] New translations messages.pot (German) [ci skip] --- assistant/common/locales/de-DE.po | 346 +++++++++++++++++++----------- 1 file changed, 223 insertions(+), 123 deletions(-) diff --git a/assistant/common/locales/de-DE.po b/assistant/common/locales/de-DE.po index cfd1c9bd9..6279b62fe 100644 --- a/assistant/common/locales/de-DE.po +++ b/assistant/common/locales/de-DE.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-07 02:53\n" +"POT-Creation-Date: 2026-06-01 09:46-0400\n" +"PO-Revision-Date: 2026-06-01 15:11\n" "Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" @@ -17,190 +17,226 @@ msgstr "" "X-Crowdin-File-ID: 55\n" "Language: de_DE\n" -#: assistant\common\api.py:110 assistant\common\api.py:111 -#: assistant\common\api.py:120 assistant\common\api.py:121 -#: assistant\common\api.py:122 assistant\common\api.py:126 -#: assistant\common\chat.py:319 +#: assistant\common\api.py:75 +#, docstring +msgid "Return the effective endpoint URL for a guild (chat and embeddings).\n\n" +" Priority:\n" +" 1. Guild-specific endpoint override\n" +" 2. Global endpoint override\n" +" 3. None (use OpenAI)\n" +" " +msgstr "" + +#: assistant\common\api.py:87 +#, docstring +msgid "Return cached endpoint profile for the effective endpoint.\n\n" +" If ``conf`` is provided, checks the guild-specific profile first,\n" +" then falls back to the global profile.\n" +" " +msgstr "" + +#: assistant\common\api.py:188 assistant\common\api.py:189 +#: assistant\common\api.py:198 assistant\common\api.py:199 +#: assistant\common\api.py:200 assistant\common\api.py:204 +#: assistant\common\chat.py:398 msgid "Unknown" msgstr "" -#: assistant\common\api.py:117 +#: assistant\common\api.py:195 msgid "`Provider: `{}" msgstr "" -#: assistant\common\api.py:118 +#: assistant\common\api.py:196 msgid "`Runtime Chat Model: `{}" msgstr "" -#: assistant\common\api.py:119 +#: assistant\common\api.py:197 msgid "`Runtime Embed Model:`{}" msgstr "" -#: assistant\common\api.py:120 +#: assistant\common\api.py:198 msgid "`Vision: `{}" msgstr "" -#: assistant\common\api.py:121 +#: assistant\common\api.py:199 msgid "`Reasoning: `{}" msgstr "" -#: assistant\common\api.py:122 +#: assistant\common\api.py:200 msgid "`Max Context: `{}" msgstr "" -#: assistant\common\api.py:123 +#: assistant\common\api.py:201 msgid "`Embed Dimensions: `{}" msgstr "" -#: assistant\common\api.py:128 +#: assistant\common\api.py:206 msgid "`Models Discovered: `{}" msgstr "" -#: assistant\common\api.py:395 +#: assistant\common\api.py:601 msgid "Failed to fetch: {}" msgstr "" -#: assistant\common\api.py:659 +#: assistant\common\api.py:913 #, docstring msgid "Get token list from text" msgstr "Tokenliste aus Text abrufen" -#: assistant\common\api.py:691 +#: assistant\common\api.py:946 msgid "No model API key or endpoint override is configured!\n" msgstr "" -#: assistant\common\api.py:693 +#: assistant\common\api.py:948 msgid "- Set this server's API key with `{}`\n" msgstr "" -#: assistant\common\api.py:699 +#: assistant\common\api.py:954 #, docstring msgid "Re-embed all entries using the current embedding model.\n\n" " Handles dimension mismatches by recreating the collection.\n" " " msgstr "" -#: assistant\common\api.py:801 +#: assistant\common\api.py:1057 #, docstring msgid "Get text from token list" msgstr "Text aus der Tokenliste holen" -#: assistant\common\api.py:828 +#: assistant\common\api.py:1085 #, docstring msgid "Summarize older messages via LLM, falling back to degrade_conversation on failure" msgstr "" -#: assistant\common\api.py:934 +#: assistant\common\api.py:1185 #, docstring msgid "Walk backward from target_idx to avoid splitting tool-call/result pairs" msgstr "" -#: assistant\common\api.py:952 +#: assistant\common\api.py:1203 #, docstring msgid "Convert message dicts to a plain-text transcript for summarization" msgstr "" -#: assistant\common\api.py:998 +#: assistant\common\api.py:1249 #, docstring msgid "Last-resort fallback: remove oldest messages to fit within token limit" msgstr "" -#: assistant\common\api.py:1015 +#: assistant\common\api.py:1266 #, docstring msgid "Remove the oldest message of the given role plus its paired tool results." msgstr "" -#: assistant\common\api.py:1098 +#: assistant\common\api.py:1349 #, docstring msgid "Pagify a long string by tokens rather than characters" msgstr "Paginieren Sie eine lange Zeichenkette nach Tokens anstelle von Zeichen" -#: assistant\common\api.py:1169 +#: assistant\common\api.py:1421 msgid "Custom Functions" msgstr "Benutzerdefinierte Funktionen" -#: assistant\common\api.py:1179 +#: assistant\common\api.py:1431 msgid "Internal Function" msgstr "Interne Funktion" -#: assistant\common\api.py:1180 +#: assistant\common\api.py:1432 msgid "This is a built-in function managed by the Assistant cog" msgstr "" -#: assistant\common\api.py:1185 +#: assistant\common\api.py:1437 msgid "3rd Party" msgstr "3. Partei" -#: assistant\common\api.py:1186 +#: assistant\common\api.py:1438 msgid "This function is managed by the `{}` cog" msgstr "Diese Funktion wird vom `{}`-Zahnrad verwaltet" -#: assistant\common\api.py:1189 +#: assistant\common\api.py:1441 msgid "Category" msgstr "" -#: assistant\common\api.py:1191 +#: assistant\common\api.py:1443 msgid "Status" msgstr "" -#: assistant\common\api.py:1192 +#: assistant\common\api.py:1444 msgid "{} {}" msgstr "" -#: assistant\common\api.py:1192 +#: assistant\common\api.py:1444 msgid "Enabled" msgstr "" -#: assistant\common\api.py:1192 +#: assistant\common\api.py:1444 msgid "Disabled" msgstr "" -#: assistant\common\api.py:1198 +#: assistant\common\api.py:1450 msgid "This function consumes `{}` input tokens each call\n" msgstr "Diese Funktion verbraucht bei jedem Aufruf {}-Eingabe-Token.\n" -#: assistant\common\api.py:1213 +#: assistant\common\api.py:1465 msgid "Hidden..." msgstr "Versteckt..." -#: assistant\common\api.py:1217 +#: assistant\common\api.py:1469 msgid "\n" "Required: {}" msgstr "" -#: assistant\common\api.py:1218 +#: assistant\common\api.py:1470 msgid "Permission Level" msgstr "" -#: assistant\common\api.py:1219 +#: assistant\common\api.py:1471 msgid "Schema" msgstr "Schema" -#: assistant\common\api.py:1220 +#: assistant\common\api.py:1472 msgid "Code" msgstr "Code" -#: assistant\common\api.py:1222 assistant\common\api.py:1253 +#: assistant\common\api.py:1474 assistant\common\api.py:1505 msgid "Page {}/{}" msgstr "Seite {}/{}" -#: assistant\common\api.py:1229 +#: assistant\common\api.py:1481 msgid "No custom code has been added yet!" msgstr "Es wurde noch kein benutzerdefinierter Code hinzugefügt!" -#: assistant\common\api.py:1241 +#: assistant\common\api.py:1493 msgid "No embeddings have been created yet!" msgstr "" -#: assistant\common\api.py:1252 +#: assistant\common\api.py:1504 msgid "Embeddings" msgstr "Einbettungen" -#: assistant\common\api.py:1293 +#: assistant\common\api.py:1545 msgid "No embeddings have been added!" msgstr "Es wurden keine Einbettungen hinzugefügt!" -#: assistant\common\chat.py:138 +#: assistant\common\chat.py:141 +#, docstring +msgid "Build the ``[Current Context]`` floating context block.\n\n" +" Rendered into a trailing payload-only user message that the bot sends\n" +" after conversation history. Because that message rides after the\n" +" cached prefix, placing dynamic (per-request) values here keeps the\n" +" cached prompt prefix stable so provider-side prompt caching remains\n" +" effective.\n\n" +" Variables admins have opted to include (via ``[p]floatingcontext``)\n" +" are rendered as self-encapsulated narrative sentences (e.g.\n" +" ``\"The current date is May 16, 2026.\"``) so admins do not need to\n" +" reference the variable in their prompt - toggling it on is enough for\n" +" the model to receive the value.\n\n" +" Returns the formatted block string, or an empty string if no values are\n" +" present.\n" +" " +msgstr "" + +#: assistant\common\chat.py:217 #, docstring msgid "Two-tier pruning of old tool/function results to save context window space.\n\n" " Tier 1 (soft-trim): when *context_fill_ratio* >= ``TOOL_RESULT_SOFT_RATIO``,\n" @@ -212,7 +248,7 @@ msgid "Two-tier pruning of old tool/function results to save context window spac " " msgstr "" -#: assistant\common\chat.py:182 +#: assistant\common\chat.py:261 #, docstring msgid "Remove images from messages once the model has responded enough times.\n\n" " Images are the most token-expensive content in a conversation (easily\n" @@ -226,7 +262,7 @@ msgid "Remove images from messages once the model has responded enough times.\n\ " " msgstr "" -#: assistant\common\chat.py:239 +#: assistant\common\chat.py:318 #, docstring msgid "Cap individual tool results to a fraction of the context window.\n\n" " Prevents a single massive tool result from crowding out everything else.\n" @@ -235,123 +271,132 @@ msgid "Cap individual tool results to a fraction of the context window.\n\n" " " msgstr "" -#: assistant\common\chat.py:265 +#: assistant\common\chat.py:344 #, docstring msgid "Filter kwargs for callables that do not accept arbitrary keyword args." msgstr "" -#: assistant\common\chat.py:285 +#: assistant\common\chat.py:364 #, docstring msgid "Return AllowedMentions allowing role/user pings for privileged members" msgstr "" -#: assistant\common\chat.py:314 +#: assistant\common\chat.py:393 msgid "Execution of admin tool `{}` requires interactive approval, but no interactive message context was available." msgstr "" -#: assistant\common\chat.py:325 +#: assistant\common\chat.py:402 msgid "`{}` wants to run admin tool `{}` from `{}` ({})\n" -"Choose `Approve Once`, `Allow This Session`, or `Skip`." +"Choose `Approve Once`, `Allow This Session`, `Skip`, or `Skip With Feedback`." msgstr "" -#: assistant\common\chat.py:340 +#: assistant\common\chat.py:413 assistant\common\chat.py:439 msgid "Approved once." msgstr "" -#: assistant\common\chat.py:341 +#: assistant\common\chat.py:414 assistant\common\chat.py:440 msgid "Approved for this session." msgstr "" -#: assistant\common\chat.py:342 +#: assistant\common\chat.py:415 assistant\common\chat.py:441 msgid "Skipped." msgstr "" -#: assistant\common\chat.py:343 +#: assistant\common\chat.py:416 assistant\common\chat.py:443 msgid "Approval timed out." msgstr "" -#: assistant\common\chat.py:355 +#: assistant\common\chat.py:442 +msgid "Skipped with feedback." +msgstr "" + +#: assistant\common\chat.py:456 msgid "SKIPPED: Approval for admin tool `{}` timed out. Do not claim it ran. Continue without it, ask again later, or try a different tool." msgstr "" -#: assistant\common\chat.py:360 +#: assistant\common\chat.py:461 msgid "SKIPPED: The user skipped admin tool `{}` for this call. Do not claim it ran. You may continue without it, ask for approval again later, or try a different tool." msgstr "" -#: assistant\common\chat.py:560 +#: assistant\common\chat.py:465 +msgid "\n\n" +"The user's feedback on why they skipped: {}" +msgstr "" + +#: assistant\common\chat.py:663 msgid "No message history!" msgstr "Kein Nachrichtenverlauf!\n" "Kein Nachrichtenverlauf!" -#: assistant\common\chat.py:582 assistant\common\chat.py:585 -#: assistant\common\chat.py:587 +#: assistant\common\chat.py:685 assistant\common\chat.py:688 +#: assistant\common\chat.py:690 msgid "Internal Server Error({}): {}" msgstr "" -#: assistant\common\chat.py:589 +#: assistant\common\chat.py:692 msgid "Failed to communicate with API!" msgstr "" -#: assistant\common\chat.py:593 +#: assistant\common\chat.py:696 msgid "Invalid API key, please set a new valid key!" msgstr "Ungültiger API-Schlüssel, bitte geben Sie einen neuen gültigen Schlüssel ein!" -#: assistant\common\chat.py:595 +#: assistant\common\chat.py:698 msgid "Uh oh, looks like my API key is invalid!" msgstr "Oh oh, mein API-Schlüssel scheint ungültig zu sein!" -#: assistant\common\chat.py:597 +#: assistant\common\chat.py:700 msgid "Rate limit error: {}" msgstr "" -#: assistant\common\chat.py:599 +#: assistant\common\chat.py:702 msgid "Read timeout error: {}" msgstr "" -#: assistant\common\chat.py:605 +#: assistant\common\chat.py:711 msgid "Uh oh, something went wrong! Bot owner can use `{}` to view the error." msgstr "Oh oh, etwas ist schiefgegangen! Der Bot-Besitzer kann `{}` verwenden, um den Fehler anzuzeigen." -#: assistant\common\chat.py:608 +#: assistant\common\chat.py:714 msgid "API Status: {}" msgstr "" -#: assistant\common\chat.py:643 +#: assistant\common\chat.py:749 msgid "No results found" msgstr "Keine Ergebnisse gefunden" -#: assistant\common\chat.py:685 +#: assistant\common\chat.py:791 #, docstring msgid "Call the API asynchronously" msgstr "Asynchroner Aufruf der API\n" "Asynchroner Aufruf der API" -#: assistant\common\chat.py:803 +#: assistant\common\chat.py:909 msgid "None" msgstr "" -#: assistant\common\chat.py:911 +#: assistant\common\chat.py:1027 msgid "Request timed out, please try again." msgstr "" -#: assistant\common\chat.py:922 +#: assistant\common\chat.py:1044 msgid "Bad Request Error2({}): {}" msgstr "" -#: assistant\common\chat.py:924 +#: assistant\common\chat.py:1046 msgid "Bad Request Error({}): {}" msgstr "" -#: assistant\common\chat.py:1109 assistant\common\chat.py:1166 -#: assistant\common\chat.py:1199 +#: assistant\common\chat.py:1288 assistant\common\chat.py:1345 +#: assistant\common\chat.py:1378 msgid "Result sent!" msgstr "" -#: assistant\common\chat.py:1235 +#: assistant\common\chat.py:1414 msgid "Response failed due to invalid regex, check logs for more info." msgstr "Die Antwort ist aufgrund einer ungültigen Regex fehlgeschlagen. Überprüfen Sie die Protokolle für weitere Informationen." -#: assistant\common\chat.py:1278 +#: assistant\common\chat.py:1457 #, docstring msgid "Prepare content for calling the GPT API\n\n" " Args:\n" @@ -372,85 +417,94 @@ msgid "Prepare content for calling the GPT API\n\n" " " msgstr "" -#: assistant\common\chat.py:1386 +#: assistant\common\utils.py:29 #, docstring -msgid "Instead of format(**params) possibly giving a KeyError if prompt has code in it" -msgstr "Anstatt dass `format(**params)` möglicherweise einen KeyError auslöst, wenn die Eingabeaufforderung Code enthält" +msgid "Translate a simple wildcard trigger phrase into a SAFE, linear regex string.\n\n" +" Only ``*`` (any run of characters, including none) is honored as a metacharacter;\n" +" everything else is escaped via ``re.escape``. This means staff of a public bot can\n" +" paste arbitrary text — including real regex like ``(a+)+`` — and it can never inject\n" +" catastrophic backtracking (ReDoS): the output contains only literals, ``.*`` and ``\\b``,\n" +" which the engine matches in linear time, so no multiprocessing timeout guard is needed.\n\n" +" A phrase with no leading/trailing ``*`` is anchored on word boundaries, so ``idiot``\n" +" hits the whole word ``idiot`` but not ``idiotic``. Add ``*`` to loosen it:\n" +" ``idiot*`` (prefix), ``*idiot`` (suffix), ``*idiot*`` (substring anywhere).\n" +" " +msgstr "" -#: assistant\common\utils.py:28 assistant\common\utils.py:82 +#: assistant\common\utils.py:51 assistant\common\utils.py:105 msgid "Playing" msgstr "" -#: assistant\common\utils.py:29 assistant\common\utils.py:75 +#: assistant\common\utils.py:52 assistant\common\utils.py:98 msgid "Streaming" msgstr "" -#: assistant\common\utils.py:30 +#: assistant\common\utils.py:53 msgid "Listening" msgstr "" -#: assistant\common\utils.py:31 +#: assistant\common\utils.py:54 msgid "Watching" msgstr "" -#: assistant\common\utils.py:32 assistant\common\utils.py:67 +#: assistant\common\utils.py:55 assistant\common\utils.py:90 msgid "Custom status" msgstr "" -#: assistant\common\utils.py:33 +#: assistant\common\utils.py:56 msgid "Competing" msgstr "" -#: assistant\common\utils.py:38 +#: assistant\common\utils.py:61 msgid "Activity" msgstr "" -#: assistant\common\utils.py:55 +#: assistant\common\utils.py:78 msgid "Unknown track" msgstr "" -#: assistant\common\utils.py:56 +#: assistant\common\utils.py:79 msgid "Unknown artist" msgstr "" -#: assistant\common\utils.py:60 +#: assistant\common\utils.py:83 msgid "by {artist}" msgstr "" -#: assistant\common\utils.py:61 +#: assistant\common\utils.py:84 msgid "album: {album}" msgstr "" -#: assistant\common\utils.py:63 +#: assistant\common\utils.py:86 msgid "Listening to Spotify: {details}" msgstr "" -#: assistant\common\utils.py:67 +#: assistant\common\utils.py:90 msgid "Custom status: {status}" msgstr "" -#: assistant\common\utils.py:72 +#: assistant\common\utils.py:95 msgid "game: {game}" msgstr "" -#: assistant\common\utils.py:73 assistant\common\utils.py:80 -#: assistant\common\utils.py:91 +#: assistant\common\utils.py:96 assistant\common\utils.py:103 +#: assistant\common\utils.py:114 msgid "platform: {platform}" msgstr "" -#: assistant\common\utils.py:75 +#: assistant\common\utils.py:98 msgid "Streaming: {details}" msgstr "" -#: assistant\common\utils.py:82 +#: assistant\common\utils.py:105 msgid "Playing: {details}" msgstr "" -#: assistant\common\utils.py:92 +#: assistant\common\utils.py:115 msgid "buttons: {buttons}" msgstr "" -#: assistant\common\utils.py:181 +#: assistant\common\utils.py:204 #, docstring msgid "\n" " Cleans the function name to ensure it only contains alphanumeric characters,\n" @@ -462,53 +516,99 @@ msgid "\n" " " msgstr "" -#: assistant\common\utils.py:201 +#: assistant\common\utils.py:224 #, docstring msgid "Get all attachments from context" msgstr "Alle Anhänge aus dem Kontext abrufen" -#: assistant\common\utils.py:222 +#: assistant\common\utils.py:245 msgid "Canceled" msgstr "Abgesagt" -#: assistant\common\utils.py:235 +#: assistant\common\utils.py:258 msgid "You have been blacklisted from using this command!" msgstr "Sie wurden von der Verwendung dieses Befehls auf die schwarze Liste gesetzt!" -#: assistant\common\utils.py:239 +#: assistant\common\utils.py:262 msgid "You have a blacklisted role and cannot use this command!" msgstr "Sie haben eine gesperrte Rolle und können diesen Befehl nicht verwenden!" -#: assistant\common\utils.py:243 +#: assistant\common\utils.py:266 msgid "You cannot use that command in this channel!" msgstr "In diesem Kanal können Sie diesen Befehl nicht verwenden!" -#: assistant\common\utils.py:247 +#: assistant\common\utils.py:270 msgid "You cannot use that command in any channels under this category" msgstr "Sie können diesen Befehl in keiner Kanal unter dieser Kategorie verwenden" -#: assistant\common\utils.py:282 assistant\common\utils.py:283 +#: assistant\common\utils.py:305 assistant\common\utils.py:306 msgid "[Code Removed]" msgstr "[Code entfernt]" -#: assistant\common\utils.py:409 +#: assistant\common\utils.py:457 +#, docstring +msgid "Substitute ``{key}`` placeholders in ``text`` from ``params``.\n\n" +" Uses ``str.replace`` rather than ``str.format`` so prompts containing\n" +" code blocks with curly braces don't raise ``KeyError``.\n" +" " +msgstr "" + +#: assistant\common\utils.py:478 +#, docstring +msgid "Stable, cache-safe prompt template variables.\n\n" +" These values do not change per-request and are safe to inject into the\n" +" `system_prompt` and `initial_prompt` without invalidating provider-side\n" +" prompt caching.\n\n" +" The `extras` dict is expected to only contain stable values (e.g. bank\n" +" type, currency, bank name). Per-user balances belong in\n" +" `get_dynamic_params()`.\n" +" " +msgstr "" + +#: assistant\common\utils.py:525 +#, docstring +msgid "Per-request prompt template variables that change frequently.\n\n" +" These values are kept separate from `get_base_params()` so callers can\n" +" choose to inject them into a trailing system-context block (preserving\n" +" prompt prefix stability for caching) rather than into the system/initial\n" +" prompts.\n\n" +" `dynamic_extras` may carry per-user dynamic values (such as the bank\n" +" balance) that need to be grouped with the other dynamic variables.\n\n" +" `last_interaction_seconds` is the elapsed time (in seconds) since the\n" +" user's previous message in the active conversation. Pass ``None`` if\n" +" this is the user's first message - the resulting value is the literal\n" +" string \"first message\".\n" +" " +msgstr "" + +#: assistant\common\utils.py:601 +#, docstring +msgid "Combined stable + dynamic prompt template variables.\n\n" +" Convenience helper that merges `get_base_params()` with\n" +" `get_dynamic_params()` for callers that don't care about cache-safe\n" +" separation. Cache-aware code paths should call the two split helpers\n" +" directly.\n" +" " +msgstr "" + +#: assistant\common\utils.py:645 #, docstring msgid "Make sure that if a conversation payload contains images that the model supports vision" msgstr "" -#: assistant\common\utils.py:429 +#: assistant\common\utils.py:665 #, docstring msgid "Remove all images sourced from URLs from the message payload" msgstr "" -#: assistant\common\utils.py:449 +#: assistant\common\utils.py:685 #, docstring msgid "Remove invisible Unicode characters that AI detectors might flag.\n\n" " Returns: (cleaned_text, was_modified)\n" " " msgstr "" -#: assistant\common\utils.py:479 +#: assistant\common\utils.py:715 #, docstring msgid "Clean the model response since its stupid and breaks itself\n\n" " Example\n" @@ -526,12 +626,12 @@ msgid "Clean the model response since its stupid and breaks itself\n\n" " " msgstr "" -#: assistant\common\utils.py:531 +#: assistant\common\utils.py:767 #, docstring msgid "Same as clean_response but cleans the whole message payload" msgstr "" -#: assistant\common\utils.py:546 +#: assistant\common\utils.py:782 #, docstring msgid "\n" " Ensure all tool calls satisfy schema requirements, modifying the messages payload in-place.\n\n" @@ -572,17 +672,17 @@ msgid "\n" " " msgstr "" -#: assistant\common\utils.py:650 +#: assistant\common\utils.py:886 #, docstring msgid "Check if a file is a supported document type" msgstr "" -#: assistant\common\utils.py:655 +#: assistant\common\utils.py:891 #, docstring msgid "Get the lowercase file extension from a filename" msgstr "" -#: assistant\common\utils.py:662 +#: assistant\common\utils.py:898 #, docstring msgid "Extract text content from PDF, Word, or Excel files\n\n" " Args:\n" @@ -593,17 +693,17 @@ msgid "Extract text content from PDF, Word, or Excel files\n\n" " " msgstr "" -#: assistant\common\utils.py:688 +#: assistant\common\utils.py:924 #, docstring msgid "Extract text from PDF files using PyMuPDF" msgstr "" -#: assistant\common\utils.py:726 +#: assistant\common\utils.py:962 #, docstring msgid "Extract text from Word documents using pypandoc" msgstr "" -#: assistant\common\utils.py:747 +#: assistant\common\utils.py:983 #, docstring msgid "Extract text from Excel files using pandas" msgstr "" From 9afcd16f4ea14b3c0cb1dbcb469eddd2773c63d7 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Mon, 1 Jun 2026 11:11:05 -0400 Subject: [PATCH 062/104] New translations messages.pot (German) [ci skip] --- assistant/locales/de-DE.po | 457 +++++++++++++++++++++++++++++++------ 1 file changed, 390 insertions(+), 67 deletions(-) diff --git a/assistant/locales/de-DE.po b/assistant/locales/de-DE.po index bbad40846..2266d2cef 100644 --- a/assistant/locales/de-DE.po +++ b/assistant/locales/de-DE.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-07 02:53\n" +"POT-Creation-Date: 2026-06-01 09:46-0400\n" +"PO-Revision-Date: 2026-06-01 15:11\n" "Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" @@ -17,40 +17,145 @@ msgstr "" "X-Crowdin-File-ID: 57\n" "Language: de_DE\n" -#: assistant\views.py:46 +#: assistant\views.py:54 msgid "Custom" msgstr "" -#: assistant\views.py:58 +#: assistant\views.py:66 msgid "Set API Key" msgstr "" -#: assistant\views.py:60 +#: assistant\views.py:68 msgid "Enter your API Key below" msgstr "" -#: assistant\views.py:81 assistant\views.py:214 assistant\views.py:663 -#: assistant\views.py:905 +#: assistant\views.py:89 assistant\views.py:519 assistant\views.py:968 +#: assistant\views.py:1484 assistant\views.py:1974 assistant\views.py:2264 msgid "This isn't your menu!" msgstr "Das ist nicht Ihre Speisekarte!" -#: assistant\views.py:104 +#: assistant\views.py:105 +msgid "Skip with feedback" +msgstr "" + +#: assistant\views.py:108 +msgid "Why are you skipping? (optional)" +msgstr "" + +#: assistant\views.py:130 msgid "This approval prompt isn't for you!" msgstr "" -#: assistant\views.py:145 +#: assistant\views.py:177 +msgid "Confirm: {}" +msgstr "" + +#: assistant\views.py:181 +msgid "Reason (blank = use AI's reason)" +msgstr "" + +#: assistant\views.py:204 +#, docstring +msgid "Dropdown of every action available on this server (built-ins + Ark/Notes)." +msgstr "" + +#: assistant\views.py:208 +msgid "Choose a different action…" +msgstr "" + +#: assistant\views.py:215 +#, docstring +msgid "Interactive staff panel proposing a moderation action suggested by the LLM." +msgstr "" + +#: assistant\views.py:245 +msgid "No reason provided." +msgstr "" + +#: assistant\views.py:268 +msgid "# 🧪 SIMULATION — dry run" +msgstr "" + +#: assistant\views.py:269 +msgid "-# Buttons take no real action; this is a test." +msgstr "" + +#: assistant\views.py:272 +msgid "# ⚠️ Proposed Moderation Action" +msgstr "" + +#: assistant\views.py:275 +msgid "**Suggested:** {emoji} {action} • **Severity:** {sev}" +msgstr "" + +#: assistant\views.py:282 +msgid "**User:** {mention} `{uid}`\n" +"**Message:** [jump to message]({url})\n" +"**Channel:** {channel}" +msgstr "" + +#: assistant\views.py:290 +msgid "-# Flagged for: {}" +msgstr "" + +#: assistant\views.py:292 +msgid "**Reason**\n" +"{}" +msgstr "" + +#: assistant\views.py:311 +msgid "**Context**\n" +"{}" +msgstr "" + +#: assistant\views.py:323 +msgid "{} (suggested)" +msgstr "" + +#: assistant\views.py:328 +msgid "No action" +msgstr "" + +#: assistant\views.py:354 assistant\views.py:378 +msgid "This panel was already resolved." +msgstr "" + +#: assistant\views.py:358 +msgid "You don't have permission to perform that action." +msgstr "" + +#: assistant\views.py:364 +msgid "✅ Dismissed — no action taken.\n" +"-# By {}" +msgstr "" + +#: assistant\views.py:383 +msgid "{outcome}\n" +"-# Action by {user}" +msgstr "" + +#: assistant\views.py:389 +msgid "🧪 (dry-run) Would **{action}** {target}.\n" +"-# {reason}" +msgstr "" + +#: assistant\views.py:434 +msgid "⏱️ Auto-action on timeout: {}" +msgstr "" + +#: assistant\views.py:450 msgid "Entry name" msgstr "Name des Eintrags" -#: assistant\views.py:153 +#: assistant\views.py:458 msgid "Training context" msgstr "Kontext des Trainings" -#: assistant\views.py:172 +#: assistant\views.py:477 msgid "Search Query" msgstr "Suchanfrage" -#: assistant\views.py:264 +#: assistant\views.py:569 msgid "Failed to process embedding `{}`\n" "Content: ```\n" "{}\n" @@ -60,170 +165,388 @@ msgstr "Die Einbettung `{}` konnte nicht verarbeitet werden.\n" "{}\n" "```" -#: assistant\views.py:266 +#: assistant\views.py:571 msgid "An embedding with the name `{}` already exists!" msgstr "Eine Einbettung mit dem Namen `{}` existiert bereits!" -#: assistant\views.py:271 +#: assistant\views.py:576 msgid "Your embedding labeled `{}` has been processed!" msgstr "Ihre Einbettung mit der Bezeichnung `{}` wurde verarbeitet!" -#: assistant\views.py:282 +#: assistant\views.py:587 msgid "No embeddings to inspect!" msgstr "Keine Einbettungen zur Überprüfung vorhanden!" -#: assistant\views.py:287 +#: assistant\views.py:592 msgid "Embedding not found!" msgstr "" -#: assistant\views.py:305 +#: assistant\views.py:610 msgid "No embeddings to edit!" msgstr "Keine Einbettungen zum Bearbeiten vorhanden!" -#: assistant\views.py:317 +#: assistant\views.py:622 msgid "Failed to edit that embedding, please try again later" msgstr "Diese Einbettung konnte nicht bearbeitet werden, bitte versuchen Sie es später erneut" -#: assistant\views.py:324 +#: assistant\views.py:629 msgid "Your embedding has been modified!" msgstr "Ihre Einbettung wurde geändert!" -#: assistant\views.py:364 +#: assistant\views.py:669 msgid "Add an embedding" msgstr "Eine Einbettung hinzufügen\n" "Eine Einbettung hinzufügen" -#: assistant\views.py:370 +#: assistant\views.py:675 msgid "Your embedding is processing and will appear when ready!" msgstr "Ihre Einbettung wird verarbeitet und erscheint, sobald sie bereit ist!" -#: assistant\views.py:386 +#: assistant\views.py:691 msgid "No embeddings to delete!" msgstr "Keine Einbettungen zum Löschen!\n" "Keine Einbettungen zum Löschen!" -#: assistant\views.py:388 +#: assistant\views.py:693 msgid "Deleted `{}` embedding." msgstr "Gelöschte `{}`-Einbettung." -#: assistant\views.py:414 +#: assistant\views.py:719 msgid "No embeddings to search!" msgstr "Keine Einbettungen zum Suchen!" -#: assistant\views.py:415 +#: assistant\views.py:720 msgid "Search for an embedding" msgstr "Suche nach einer Einbettung" -#: assistant\views.py:437 +#: assistant\views.py:742 msgid "Search result: **{}**" msgstr "Suchergebnis: **{}**" -#: assistant\views.py:474 +#: assistant\views.py:779 msgid "Function Edit" msgstr "Funktion Editieren" -#: assistant\views.py:483 +#: assistant\views.py:788 msgid "JSON Schema" msgstr "JSON-Schema" -#: assistant\views.py:489 +#: assistant\views.py:794 msgid "Code" msgstr "Code" -#: assistant\views.py:495 +#: assistant\views.py:800 msgid "Permission Level" msgstr "" -#: assistant\views.py:496 +#: assistant\views.py:801 msgid "User, Mod, Admin, or Owner" msgstr "" -#: assistant\views.py:502 +#: assistant\views.py:807 msgid "Required Discord Permissions" msgstr "" -#: assistant\views.py:503 +#: assistant\views.py:808 msgid "e.g. manage_messages, kick_members (comma-separated, or leave blank)" msgstr "" -#: assistant\views.py:510 +#: assistant\views.py:815 msgid "Category" msgstr "" -#: assistant\views.py:511 +#: assistant\views.py:816 msgid "memory, web, utility" msgstr "" -#: assistant\views.py:523 +#: assistant\views.py:828 msgid "Invalid permission level, must be one of `User`, `Mod`, `Admin`, or `Owner`" msgstr "" -#: assistant\views.py:536 +#: assistant\views.py:841 msgid "Invalid Discord permission names: {}" msgstr "" -#: assistant\views.py:552 +#: assistant\views.py:857 assistant\views.py:1865 msgid "Toggle" msgstr "" -#: assistant\views.py:582 +#: assistant\views.py:887 msgid "Choose tools for {} ({}/{})..." msgstr "" -#: assistant\views.py:588 +#: assistant\views.py:893 msgid "Choose tools for {}..." msgstr "" -#: assistant\views.py:593 +#: assistant\views.py:898 msgid "No tools available" msgstr "" -#: assistant\views.py:606 +#: assistant\views.py:911 assistant\views.py:1387 assistant\views.py:1916 msgid "Prev" msgstr "" -#: assistant\views.py:615 +#: assistant\views.py:920 assistant\views.py:1396 assistant\views.py:1925 msgid "Next" msgstr "" -#: assistant\views.py:623 +#: assistant\views.py:928 assistant\views.py:1420 assistant\views.py:1933 msgid "Close" msgstr "" -#: assistant\views.py:718 +#: assistant\views.py:1023 msgid "{} {}/{} enabled • {} categories • Page {}/{}" msgstr "" -#: assistant\views.py:839 assistant\views.py:859 +#: assistant\views.py:1144 assistant\views.py:1164 assistant\views.py:2200 msgid "That category no longer exists." msgstr "" -#: assistant\views.py:1014 +#: assistant\views.py:1199 +#, docstring +msgid "Split a model id into (provider, short_name).\n\n" +" For ids like ``openai/gpt-4-turbo`` returns ``(\"openai\", \"gpt-4-turbo\")``.\n" +" For ids with no slash returns ``(PROVIDER_OTHER, model_id)``.\n" +" " +msgstr "" + +#: assistant\views.py:1214 +#, docstring +msgid "Group endpoint model ids by their provider prefix.\n\n" +" Returns an ordered dict: providers sorted alphabetically (``other`` last),\n" +" each value is the list of full model ids sorted by short name.\n" +" " +msgstr "" + +#: assistant\views.py:1235 +msgid "Other" +msgstr "" + +#: assistant\views.py:1265 +msgid "Pick a model from {} ({}/{})..." +msgstr "" + +#: assistant\views.py:1271 +msgid "Pick a model from {}..." +msgstr "" + +#: assistant\views.py:1276 +msgid "No models" +msgstr "" + +#: assistant\views.py:1295 +msgid "Enter Model ID" +msgstr "" + +#: assistant\views.py:1298 +msgid "Model ID" +msgstr "" + +#: assistant\views.py:1299 +msgid "e.g. openrouter/auto, openai/gpt-4o, anthropic/claude-3-opus" +msgstr "" + +#: assistant\views.py:1315 +msgid "Search Models" +msgstr "" + +#: assistant\views.py:1318 +msgid "Filter" +msgstr "" + +#: assistant\views.py:1319 +msgid "e.g. claude, gpt-4, mistral" +msgstr "" + +#: assistant\views.py:1335 +msgid "Model Slug Suffix" +msgstr "" + +#: assistant\views.py:1338 assistant\views.py:1360 +msgid "Suffix" +msgstr "" + +#: assistant\views.py:1339 +msgid ":nitro (throughput) :floor (price) :extended (blank = remove)" +msgstr "" + +#: assistant\views.py:1356 +msgid "Search" +msgstr "" + +#: assistant\views.py:1365 +msgid "Clear search" +msgstr "" + +#: assistant\views.py:1405 +msgid "Manual entry" +msgstr "" + +#: assistant\views.py:1413 +msgid "Re-probe" +msgstr "" + +#: assistant\views.py:1445 +#, docstring +msgid "Endpoint model picker grouped by provider prefix." +msgstr "" + +#: assistant\views.py:1532 +msgid "Chat model" +msgstr "" + +#: assistant\views.py:1532 +msgid "Embedding model" +msgstr "" + +#: assistant\views.py:1540 +msgid "# 🤖 {} picker" +msgstr "" + +#: assistant\views.py:1541 +msgid "-# Endpoint: `{}`" +msgstr "" + +#: assistant\views.py:1542 +msgid "Current: **{}**" +msgstr "" + +#: assistant\views.py:1542 assistant\views.py:1760 +msgid "(none)" +msgstr "" + +#: assistant\views.py:1545 +msgid "No models were discovered from this endpoint. Try **Re-probe** or use **Manual entry** to type a model id. Router endpoints like OpenRouter accept aliases such as `{}` or `{}`." +msgstr "" + +#: assistant\views.py:1565 +msgid "-# Search: `{}` • {} result(s)" +msgstr "" + +#: assistant\views.py:1568 +msgid "{} models across {} providers • Page {}/{}" +msgstr "" + +#: assistant\views.py:1577 +msgid "-# Tip: router endpoints accept aliases like `{}` or `{}` via **Manual entry**." +msgstr "" + +#: assistant\views.py:1687 assistant\views.py:1703 +msgid "{} set to **{}**" +msgstr "" + +#: assistant\views.py:1743 +msgid "Invalid suffix `{}`. Valid: {}." +msgstr "" + +#: assistant\views.py:1762 +msgid "Model set to **{}** (suffix: {})" +msgstr "" + +#: assistant\views.py:1784 +#, docstring +msgid "Return on/off/mixed for a trailing-block category.\n\n" +" Inclusion defaults to **off** for every variable on a fresh install.\n" +" " +msgstr "" + +#: assistant\views.py:1801 +#, docstring +msgid "Return every category eligible for the trailing-context-block menu.\n\n" +" Output: ``{category_key: {\"label\": str, \"variables\": [str, ...]}}``.\n\n" +" Inclusion in the floating block is fully admin-controlled - there is\n" +" no implicit default. On a fresh install everything is OFF (blank\n" +" slate). Admins opt variables in one at a time via the floatingcontext\n" +" menu.\n" +" " +msgstr "" + +#: assistant\views.py:1847 +#, docstring +msgid "Return a short human-readable description for a context variable." +msgstr "" + +#: assistant\views.py:1900 +msgid "Toggle individual vars in {}..." +msgstr "" + +#: assistant\views.py:1903 +msgid "No variables" +msgstr "" + +#: assistant\views.py:1993 +#, docstring +msgid "Return formatted warning lines for prompts containing dynamic vars." +msgstr "" + +#: assistant\views.py:2003 +msgid "**System prompt** - `{}`" +msgstr "" + +#: assistant\views.py:2006 +msgid "**Initial prompt** - `{}`" +msgstr "" + +#: assistant\views.py:2011 +msgid "<#{}> - `{}`" +msgstr "" + +#: assistant\views.py:2015 +#, docstring +msgid "Build a mapping of variable name → description for 3rd-party vars." +msgstr "" + +#: assistant\views.py:2049 +msgid "Toggle which variables are included in the trailing `[Current Context]` system message that the bot appends after conversation history. Everything is OFF by default - opt variables in one at a time. Variables you toggle on are rendered as self-encapsulated sentences (e.g. `\"The current date is May 16, 2026.\"`), so you do not need to author a prompt that references them." +msgstr "" + +#: assistant\views.py:2060 +msgid "{} {}/{} variables in block • {} categories • Page {}/{}" +msgstr "" + +#: assistant\views.py:2088 +msgid "(no variables)" +msgstr "" + +#: assistant\views.py:2104 +msgid "## ⚠️ Cache Warning" +msgstr "" + +#: assistant\views.py:2107 +msgid "These prompts contain dynamic variable placeholders that are substituted inline, which busts provider-side prompt-prefix caching on every request:" +msgstr "" + +#: assistant\views.py:2117 +msgid "Tip: remove the placeholder from your prompt and toggle the variable on in the menu above instead - the bot will append the value to the floating context block automatically." +msgstr "" + +#: assistant\views.py:2373 msgid "No code to inspect!" msgstr "Kein Code zu überprüfen!\n" "Kein Code zum Überprüfen!" -#: assistant\views.py:1038 +#: assistant\views.py:2397 msgid "Here are your custom functions" msgstr "Hier sind Ihre maßgeschneiderten Funktionen" -#: assistant\views.py:1043 +#: assistant\views.py:2402 msgid "Reply to this message with the json schema for your function\n" "- [Example Functions](https://github.com/vertyco/vrt-cogs/tree/main/assistant/example-funcs)" msgstr "Antworten Sie bitte auf diese Nachricht mit dem JSON-Schema für Ihre Funktion.\n" "- [Beispielfunktionen](https://github.com/vertyco/vrt-cogs/tree/main/assistant/example-funcs)" -#: assistant\views.py:1064 assistant\views.py:1142 +#: assistant\views.py:2423 assistant\views.py:2501 msgid "SchemaError\n" "{}" msgstr "SchemaFehler\n" "{}" -#: assistant\views.py:1066 assistant\views.py:1144 +#: assistant\views.py:2425 assistant\views.py:2503 msgid "Empty schema!" msgstr "Leeres Schema!" -#: assistant\views.py:1069 assistant\views.py:1147 +#: assistant\views.py:2428 assistant\views.py:2506 msgid "Invalid schema!\n" "**Missing**\n" "{}" @@ -231,64 +554,64 @@ msgstr "Ungültiger Schema!\n" "**Fehlt**\n" "{}" -#: assistant\views.py:1073 +#: assistant\views.py:2432 msgid "Reply to this message with the custom code" msgstr "Antworten Sie auf diese Nachricht mit dem benutzerdefinierten Code" -#: assistant\views.py:1088 assistant\views.py:1153 +#: assistant\views.py:2447 assistant\views.py:2512 msgid "Invalid function" msgstr "Ungültige Funktion" -#: assistant\views.py:1092 +#: assistant\views.py:2451 msgid "`{}` has been overwritten!" msgstr "`{}` wurde überschrieben!" -#: assistant\views.py:1094 +#: assistant\views.py:2453 msgid "`{}` has been created!" msgstr "`{}` wurde erstellt!" -#: assistant\views.py:1105 +#: assistant\views.py:2464 msgid "No code to edit!" msgstr "Kein Code zu bearbeiten!\n" "Kein Code zum Bearbeiten!" -#: assistant\views.py:1113 assistant\views.py:1185 +#: assistant\views.py:2472 assistant\views.py:2544 msgid "Could not find function!" msgstr "Die Funktion wurde nicht gefunden!" -#: assistant\views.py:1115 +#: assistant\views.py:2474 msgid "This function is managed by the `{}` cog and cannot be edited" msgstr "Diese Funktion wird durch das `{}`-Zahnrad verwaltet und kann nicht bearbeitet werden" -#: assistant\views.py:1121 +#: assistant\views.py:2480 msgid "The json schema for this function is too long, you'll need to re-upload it to modify" msgstr "Das JSON-Schema für diese Funktion ist zu lang. Sie müssen es erneut hochladen, um es zu ändern" -#: assistant\views.py:1126 +#: assistant\views.py:2485 msgid "The code for this function is too long, you'll need to re-upload it to modify" msgstr "Der Code für diese Funktion ist zu lang. Sie müssen ihn neu hochladen, um ihn zu ändern" -#: assistant\views.py:1170 +#: assistant\views.py:2529 msgid "`{}` function updated!" msgstr "Die Funktion `{}` wurde aktualisiert!" -#: assistant\views.py:1178 +#: assistant\views.py:2537 msgid "No code to delete!" msgstr "Kein Code zu löschen!" -#: assistant\views.py:1187 +#: assistant\views.py:2546 msgid "This function is managed by the `{}` cog and cannot be deleted" msgstr "Diese Funktion wird durch das `{}`-Ritzel verwaltet und kann nicht gelöscht werden" -#: assistant\views.py:1194 +#: assistant\views.py:2553 msgid "`{}` has been deleted!" msgstr "`{}` wurde gelöscht!" -#: assistant\views.py:1201 +#: assistant\views.py:2560 msgid "No code to toggle!" msgstr "Kein Code zum Umschalten!" -#: assistant\views.py:1215 +#: assistant\views.py:2574 msgid "Search for a function" msgstr "" From 26ee622d6f4a9b546a9eb3ac4bc98b09378585d1 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Mon, 1 Jun 2026 11:11:06 -0400 Subject: [PATCH 063/104] New translations messages.pot (Korean) [ci skip] --- assistant/common/locales/ko-KR.po | 346 +++++++++++++++++++----------- 1 file changed, 223 insertions(+), 123 deletions(-) diff --git a/assistant/common/locales/ko-KR.po b/assistant/common/locales/ko-KR.po index d12868143..12caf0dc0 100644 --- a/assistant/common/locales/ko-KR.po +++ b/assistant/common/locales/ko-KR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-07 02:55\n" +"POT-Creation-Date: 2026-06-01 09:46-0400\n" +"PO-Revision-Date: 2026-06-01 15:11\n" "Last-Translator: \n" "Language-Team: Korean\n" "MIME-Version: 1.0\n" @@ -17,191 +17,227 @@ msgstr "" "X-Crowdin-File-ID: 55\n" "Language: ko_KR\n" -#: assistant\common\api.py:110 assistant\common\api.py:111 -#: assistant\common\api.py:120 assistant\common\api.py:121 -#: assistant\common\api.py:122 assistant\common\api.py:126 -#: assistant\common\chat.py:319 +#: assistant\common\api.py:75 +#, docstring +msgid "Return the effective endpoint URL for a guild (chat and embeddings).\n\n" +" Priority:\n" +" 1. Guild-specific endpoint override\n" +" 2. Global endpoint override\n" +" 3. None (use OpenAI)\n" +" " +msgstr "" + +#: assistant\common\api.py:87 +#, docstring +msgid "Return cached endpoint profile for the effective endpoint.\n\n" +" If ``conf`` is provided, checks the guild-specific profile first,\n" +" then falls back to the global profile.\n" +" " +msgstr "" + +#: assistant\common\api.py:188 assistant\common\api.py:189 +#: assistant\common\api.py:198 assistant\common\api.py:199 +#: assistant\common\api.py:200 assistant\common\api.py:204 +#: assistant\common\chat.py:398 msgid "Unknown" msgstr "" -#: assistant\common\api.py:117 +#: assistant\common\api.py:195 msgid "`Provider: `{}" msgstr "" -#: assistant\common\api.py:118 +#: assistant\common\api.py:196 msgid "`Runtime Chat Model: `{}" msgstr "" -#: assistant\common\api.py:119 +#: assistant\common\api.py:197 msgid "`Runtime Embed Model:`{}" msgstr "" -#: assistant\common\api.py:120 +#: assistant\common\api.py:198 msgid "`Vision: `{}" msgstr "" -#: assistant\common\api.py:121 +#: assistant\common\api.py:199 msgid "`Reasoning: `{}" msgstr "" -#: assistant\common\api.py:122 +#: assistant\common\api.py:200 msgid "`Max Context: `{}" msgstr "" -#: assistant\common\api.py:123 +#: assistant\common\api.py:201 msgid "`Embed Dimensions: `{}" msgstr "" -#: assistant\common\api.py:128 +#: assistant\common\api.py:206 msgid "`Models Discovered: `{}" msgstr "" -#: assistant\common\api.py:395 +#: assistant\common\api.py:601 msgid "Failed to fetch: {}" msgstr "" -#: assistant\common\api.py:659 +#: assistant\common\api.py:913 #, docstring msgid "Get token list from text" msgstr "텍스트에서 토큰 목록을 가져옵니다" -#: assistant\common\api.py:691 +#: assistant\common\api.py:946 msgid "No model API key or endpoint override is configured!\n" msgstr "" -#: assistant\common\api.py:693 +#: assistant\common\api.py:948 msgid "- Set this server's API key with `{}`\n" msgstr "" -#: assistant\common\api.py:699 +#: assistant\common\api.py:954 #, docstring msgid "Re-embed all entries using the current embedding model.\n\n" " Handles dimension mismatches by recreating the collection.\n" " " msgstr "" -#: assistant\common\api.py:801 +#: assistant\common\api.py:1057 #, docstring msgid "Get text from token list" msgstr "I apologize for any confusion. Could you please provide the specific text that you would like me to translate?" -#: assistant\common\api.py:828 +#: assistant\common\api.py:1085 #, docstring msgid "Summarize older messages via LLM, falling back to degrade_conversation on failure" msgstr "" -#: assistant\common\api.py:934 +#: assistant\common\api.py:1185 #, docstring msgid "Walk backward from target_idx to avoid splitting tool-call/result pairs" msgstr "" -#: assistant\common\api.py:952 +#: assistant\common\api.py:1203 #, docstring msgid "Convert message dicts to a plain-text transcript for summarization" msgstr "" -#: assistant\common\api.py:998 +#: assistant\common\api.py:1249 #, docstring msgid "Last-resort fallback: remove oldest messages to fit within token limit" msgstr "" -#: assistant\common\api.py:1015 +#: assistant\common\api.py:1266 #, docstring msgid "Remove the oldest message of the given role plus its paired tool results." msgstr "" -#: assistant\common\api.py:1098 +#: assistant\common\api.py:1349 #, docstring msgid "Pagify a long string by tokens rather than characters" msgstr "토큰 대신 문자로 긴 문자열을 페이지로 나누세요" -#: assistant\common\api.py:1169 +#: assistant\common\api.py:1421 msgid "Custom Functions" msgstr "사용자 정의 함수" -#: assistant\common\api.py:1179 +#: assistant\common\api.py:1431 msgid "Internal Function" msgstr "내부 함수" -#: assistant\common\api.py:1180 +#: assistant\common\api.py:1432 msgid "This is a built-in function managed by the Assistant cog" msgstr "" -#: assistant\common\api.py:1185 +#: assistant\common\api.py:1437 msgid "3rd Party" msgstr "3rd Party" -#: assistant\common\api.py:1186 +#: assistant\common\api.py:1438 msgid "This function is managed by the `{}` cog" msgstr "이 함수는 `{}` 코그에 의해 관리됩니다" -#: assistant\common\api.py:1189 +#: assistant\common\api.py:1441 msgid "Category" msgstr "" -#: assistant\common\api.py:1191 +#: assistant\common\api.py:1443 msgid "Status" msgstr "" -#: assistant\common\api.py:1192 +#: assistant\common\api.py:1444 msgid "{} {}" msgstr "" -#: assistant\common\api.py:1192 +#: assistant\common\api.py:1444 msgid "Enabled" msgstr "" -#: assistant\common\api.py:1192 +#: assistant\common\api.py:1444 msgid "Disabled" msgstr "" -#: assistant\common\api.py:1198 +#: assistant\common\api.py:1450 msgid "This function consumes `{}` input tokens each call\n" msgstr "이 함수는 각 호출마다 `{}` 입력 토큰을 소비합니다.\n" -#: assistant\common\api.py:1213 +#: assistant\common\api.py:1465 msgid "Hidden..." msgstr "숨겨진...\n" "숨겨진..." -#: assistant\common\api.py:1217 +#: assistant\common\api.py:1469 msgid "\n" "Required: {}" msgstr "" -#: assistant\common\api.py:1218 +#: assistant\common\api.py:1470 msgid "Permission Level" msgstr "" -#: assistant\common\api.py:1219 +#: assistant\common\api.py:1471 msgid "Schema" msgstr "스키마" -#: assistant\common\api.py:1220 +#: assistant\common\api.py:1472 msgid "Code" msgstr "코드" -#: assistant\common\api.py:1222 assistant\common\api.py:1253 +#: assistant\common\api.py:1474 assistant\common\api.py:1505 msgid "Page {}/{}" msgstr "페이지 {}/{}" -#: assistant\common\api.py:1229 +#: assistant\common\api.py:1481 msgid "No custom code has been added yet!" msgstr "아직 사용자 정의 코드가 추가되지 않았습니다!" -#: assistant\common\api.py:1241 +#: assistant\common\api.py:1493 msgid "No embeddings have been created yet!" msgstr "" -#: assistant\common\api.py:1252 +#: assistant\common\api.py:1504 msgid "Embeddings" msgstr "임베딩(embeddings)은 텍스트나 이미지와 같은 데이터를 수치화하여 컴퓨터가 이해할 수 있는 형태로 변환하는 기술입니다. 임베딩은 주어진 데이터의 의미와 특징을 포착하여 벡터 형태로 표현합니다. 이러한 임베딩 벡터는 유사한 의미를 가진 데이터들이 비슷한 벡터 공간에 위치하게 됩니다. 임베딩은 자연어 처리, 이미지 분류, 추천 시스템 등 다양한 분야에서 활용됩니다" -#: assistant\common\api.py:1293 +#: assistant\common\api.py:1545 msgid "No embeddings have been added!" msgstr "임베딩이 추가되지 않았습니다!" -#: assistant\common\chat.py:138 +#: assistant\common\chat.py:141 +#, docstring +msgid "Build the ``[Current Context]`` floating context block.\n\n" +" Rendered into a trailing payload-only user message that the bot sends\n" +" after conversation history. Because that message rides after the\n" +" cached prefix, placing dynamic (per-request) values here keeps the\n" +" cached prompt prefix stable so provider-side prompt caching remains\n" +" effective.\n\n" +" Variables admins have opted to include (via ``[p]floatingcontext``)\n" +" are rendered as self-encapsulated narrative sentences (e.g.\n" +" ``\"The current date is May 16, 2026.\"``) so admins do not need to\n" +" reference the variable in their prompt - toggling it on is enough for\n" +" the model to receive the value.\n\n" +" Returns the formatted block string, or an empty string if no values are\n" +" present.\n" +" " +msgstr "" + +#: assistant\common\chat.py:217 #, docstring msgid "Two-tier pruning of old tool/function results to save context window space.\n\n" " Tier 1 (soft-trim): when *context_fill_ratio* >= ``TOOL_RESULT_SOFT_RATIO``,\n" @@ -213,7 +249,7 @@ msgid "Two-tier pruning of old tool/function results to save context window spac " " msgstr "" -#: assistant\common\chat.py:182 +#: assistant\common\chat.py:261 #, docstring msgid "Remove images from messages once the model has responded enough times.\n\n" " Images are the most token-expensive content in a conversation (easily\n" @@ -227,7 +263,7 @@ msgid "Remove images from messages once the model has responded enough times.\n\ " " msgstr "" -#: assistant\common\chat.py:239 +#: assistant\common\chat.py:318 #, docstring msgid "Cap individual tool results to a fraction of the context window.\n\n" " Prevents a single massive tool result from crowding out everything else.\n" @@ -236,121 +272,130 @@ msgid "Cap individual tool results to a fraction of the context window.\n\n" " " msgstr "" -#: assistant\common\chat.py:265 +#: assistant\common\chat.py:344 #, docstring msgid "Filter kwargs for callables that do not accept arbitrary keyword args." msgstr "" -#: assistant\common\chat.py:285 +#: assistant\common\chat.py:364 #, docstring msgid "Return AllowedMentions allowing role/user pings for privileged members" msgstr "" -#: assistant\common\chat.py:314 +#: assistant\common\chat.py:393 msgid "Execution of admin tool `{}` requires interactive approval, but no interactive message context was available." msgstr "" -#: assistant\common\chat.py:325 +#: assistant\common\chat.py:402 msgid "`{}` wants to run admin tool `{}` from `{}` ({})\n" -"Choose `Approve Once`, `Allow This Session`, or `Skip`." +"Choose `Approve Once`, `Allow This Session`, `Skip`, or `Skip With Feedback`." msgstr "" -#: assistant\common\chat.py:340 +#: assistant\common\chat.py:413 assistant\common\chat.py:439 msgid "Approved once." msgstr "" -#: assistant\common\chat.py:341 +#: assistant\common\chat.py:414 assistant\common\chat.py:440 msgid "Approved for this session." msgstr "" -#: assistant\common\chat.py:342 +#: assistant\common\chat.py:415 assistant\common\chat.py:441 msgid "Skipped." msgstr "" -#: assistant\common\chat.py:343 +#: assistant\common\chat.py:416 assistant\common\chat.py:443 msgid "Approval timed out." msgstr "" -#: assistant\common\chat.py:355 +#: assistant\common\chat.py:442 +msgid "Skipped with feedback." +msgstr "" + +#: assistant\common\chat.py:456 msgid "SKIPPED: Approval for admin tool `{}` timed out. Do not claim it ran. Continue without it, ask again later, or try a different tool." msgstr "" -#: assistant\common\chat.py:360 +#: assistant\common\chat.py:461 msgid "SKIPPED: The user skipped admin tool `{}` for this call. Do not claim it ran. You may continue without it, ask for approval again later, or try a different tool." msgstr "" -#: assistant\common\chat.py:560 +#: assistant\common\chat.py:465 +msgid "\n\n" +"The user's feedback on why they skipped: {}" +msgstr "" + +#: assistant\common\chat.py:663 msgid "No message history!" msgstr "메시지 기록이 없습니다!" -#: assistant\common\chat.py:582 assistant\common\chat.py:585 -#: assistant\common\chat.py:587 +#: assistant\common\chat.py:685 assistant\common\chat.py:688 +#: assistant\common\chat.py:690 msgid "Internal Server Error({}): {}" msgstr "" -#: assistant\common\chat.py:589 +#: assistant\common\chat.py:692 msgid "Failed to communicate with API!" msgstr "" -#: assistant\common\chat.py:593 +#: assistant\common\chat.py:696 msgid "Invalid API key, please set a new valid key!" msgstr "잘못된 API 키입니다. 새로운 유효한 키를 설정해주세요!" -#: assistant\common\chat.py:595 +#: assistant\common\chat.py:698 msgid "Uh oh, looks like my API key is invalid!" msgstr "앗, API 키가 유효하지 않은 것 같아요!" -#: assistant\common\chat.py:597 +#: assistant\common\chat.py:700 msgid "Rate limit error: {}" msgstr "" -#: assistant\common\chat.py:599 +#: assistant\common\chat.py:702 msgid "Read timeout error: {}" msgstr "" -#: assistant\common\chat.py:605 +#: assistant\common\chat.py:711 msgid "Uh oh, something went wrong! Bot owner can use `{}` to view the error." msgstr "앗, 문제가 발생했습니다! 봇 소유자는 `{}`를 사용하여 오류를 확인할 수 있습니다." -#: assistant\common\chat.py:608 +#: assistant\common\chat.py:714 msgid "API Status: {}" msgstr "" -#: assistant\common\chat.py:643 +#: assistant\common\chat.py:749 msgid "No results found" msgstr "결과를 찾을 수 없습니다" -#: assistant\common\chat.py:685 +#: assistant\common\chat.py:791 #, docstring msgid "Call the API asynchronously" msgstr "API를 비동기적으로 호출하세요" -#: assistant\common\chat.py:803 +#: assistant\common\chat.py:909 msgid "None" msgstr "" -#: assistant\common\chat.py:911 +#: assistant\common\chat.py:1027 msgid "Request timed out, please try again." msgstr "" -#: assistant\common\chat.py:922 +#: assistant\common\chat.py:1044 msgid "Bad Request Error2({}): {}" msgstr "" -#: assistant\common\chat.py:924 +#: assistant\common\chat.py:1046 msgid "Bad Request Error({}): {}" msgstr "" -#: assistant\common\chat.py:1109 assistant\common\chat.py:1166 -#: assistant\common\chat.py:1199 +#: assistant\common\chat.py:1288 assistant\common\chat.py:1345 +#: assistant\common\chat.py:1378 msgid "Result sent!" msgstr "" -#: assistant\common\chat.py:1235 +#: assistant\common\chat.py:1414 msgid "Response failed due to invalid regex, check logs for more info." msgstr "응답이 잘못된 정규식으로 인해 실패했습니다. 자세한 정보는 로그를 확인하세요." -#: assistant\common\chat.py:1278 +#: assistant\common\chat.py:1457 #, docstring msgid "Prepare content for calling the GPT API\n\n" " Args:\n" @@ -371,85 +416,94 @@ msgid "Prepare content for calling the GPT API\n\n" " " msgstr "" -#: assistant\common\chat.py:1386 +#: assistant\common\utils.py:29 #, docstring -msgid "Instead of format(**params) possibly giving a KeyError if prompt has code in it" -msgstr "프롬프트에 코드가 있는 경우, format(**params)를 사용하면 KeyError가 발생할 수 있습니다" +msgid "Translate a simple wildcard trigger phrase into a SAFE, linear regex string.\n\n" +" Only ``*`` (any run of characters, including none) is honored as a metacharacter;\n" +" everything else is escaped via ``re.escape``. This means staff of a public bot can\n" +" paste arbitrary text — including real regex like ``(a+)+`` — and it can never inject\n" +" catastrophic backtracking (ReDoS): the output contains only literals, ``.*`` and ``\\b``,\n" +" which the engine matches in linear time, so no multiprocessing timeout guard is needed.\n\n" +" A phrase with no leading/trailing ``*`` is anchored on word boundaries, so ``idiot``\n" +" hits the whole word ``idiot`` but not ``idiotic``. Add ``*`` to loosen it:\n" +" ``idiot*`` (prefix), ``*idiot`` (suffix), ``*idiot*`` (substring anywhere).\n" +" " +msgstr "" -#: assistant\common\utils.py:28 assistant\common\utils.py:82 +#: assistant\common\utils.py:51 assistant\common\utils.py:105 msgid "Playing" msgstr "" -#: assistant\common\utils.py:29 assistant\common\utils.py:75 +#: assistant\common\utils.py:52 assistant\common\utils.py:98 msgid "Streaming" msgstr "" -#: assistant\common\utils.py:30 +#: assistant\common\utils.py:53 msgid "Listening" msgstr "" -#: assistant\common\utils.py:31 +#: assistant\common\utils.py:54 msgid "Watching" msgstr "" -#: assistant\common\utils.py:32 assistant\common\utils.py:67 +#: assistant\common\utils.py:55 assistant\common\utils.py:90 msgid "Custom status" msgstr "" -#: assistant\common\utils.py:33 +#: assistant\common\utils.py:56 msgid "Competing" msgstr "" -#: assistant\common\utils.py:38 +#: assistant\common\utils.py:61 msgid "Activity" msgstr "" -#: assistant\common\utils.py:55 +#: assistant\common\utils.py:78 msgid "Unknown track" msgstr "" -#: assistant\common\utils.py:56 +#: assistant\common\utils.py:79 msgid "Unknown artist" msgstr "" -#: assistant\common\utils.py:60 +#: assistant\common\utils.py:83 msgid "by {artist}" msgstr "" -#: assistant\common\utils.py:61 +#: assistant\common\utils.py:84 msgid "album: {album}" msgstr "" -#: assistant\common\utils.py:63 +#: assistant\common\utils.py:86 msgid "Listening to Spotify: {details}" msgstr "" -#: assistant\common\utils.py:67 +#: assistant\common\utils.py:90 msgid "Custom status: {status}" msgstr "" -#: assistant\common\utils.py:72 +#: assistant\common\utils.py:95 msgid "game: {game}" msgstr "" -#: assistant\common\utils.py:73 assistant\common\utils.py:80 -#: assistant\common\utils.py:91 +#: assistant\common\utils.py:96 assistant\common\utils.py:103 +#: assistant\common\utils.py:114 msgid "platform: {platform}" msgstr "" -#: assistant\common\utils.py:75 +#: assistant\common\utils.py:98 msgid "Streaming: {details}" msgstr "" -#: assistant\common\utils.py:82 +#: assistant\common\utils.py:105 msgid "Playing: {details}" msgstr "" -#: assistant\common\utils.py:92 +#: assistant\common\utils.py:115 msgid "buttons: {buttons}" msgstr "" -#: assistant\common\utils.py:181 +#: assistant\common\utils.py:204 #, docstring msgid "\n" " Cleans the function name to ensure it only contains alphanumeric characters,\n" @@ -461,53 +515,99 @@ msgid "\n" " " msgstr "" -#: assistant\common\utils.py:201 +#: assistant\common\utils.py:224 #, docstring msgid "Get all attachments from context" msgstr "Context에서 모든 첨부 파일을 가져옵니다" -#: assistant\common\utils.py:222 +#: assistant\common\utils.py:245 msgid "Canceled" msgstr "취소됨" -#: assistant\common\utils.py:235 +#: assistant\common\utils.py:258 msgid "You have been blacklisted from using this command!" msgstr "이 명령어 사용이 차단되었습니다!" -#: assistant\common\utils.py:239 +#: assistant\common\utils.py:262 msgid "You have a blacklisted role and cannot use this command!" msgstr "당신은 블랙리스트에 등록된 역할이므로 이 명령을 사용할 수 없습니다!" -#: assistant\common\utils.py:243 +#: assistant\common\utils.py:266 msgid "You cannot use that command in this channel!" msgstr "이 채널에서는 해당 명령을 사용할 수 없습니다!" -#: assistant\common\utils.py:247 +#: assistant\common\utils.py:270 msgid "You cannot use that command in any channels under this category" msgstr "이 카테고리에 속한 모든 채널에서는 해당 명령을 사용할 수 없습니다" -#: assistant\common\utils.py:282 assistant\common\utils.py:283 +#: assistant\common\utils.py:305 assistant\common\utils.py:306 msgid "[Code Removed]" msgstr "I apologize for the confusion. Please provide the text you would like me to translate, and I will be happy to assist you" -#: assistant\common\utils.py:409 +#: assistant\common\utils.py:457 +#, docstring +msgid "Substitute ``{key}`` placeholders in ``text`` from ``params``.\n\n" +" Uses ``str.replace`` rather than ``str.format`` so prompts containing\n" +" code blocks with curly braces don't raise ``KeyError``.\n" +" " +msgstr "" + +#: assistant\common\utils.py:478 +#, docstring +msgid "Stable, cache-safe prompt template variables.\n\n" +" These values do not change per-request and are safe to inject into the\n" +" `system_prompt` and `initial_prompt` without invalidating provider-side\n" +" prompt caching.\n\n" +" The `extras` dict is expected to only contain stable values (e.g. bank\n" +" type, currency, bank name). Per-user balances belong in\n" +" `get_dynamic_params()`.\n" +" " +msgstr "" + +#: assistant\common\utils.py:525 +#, docstring +msgid "Per-request prompt template variables that change frequently.\n\n" +" These values are kept separate from `get_base_params()` so callers can\n" +" choose to inject them into a trailing system-context block (preserving\n" +" prompt prefix stability for caching) rather than into the system/initial\n" +" prompts.\n\n" +" `dynamic_extras` may carry per-user dynamic values (such as the bank\n" +" balance) that need to be grouped with the other dynamic variables.\n\n" +" `last_interaction_seconds` is the elapsed time (in seconds) since the\n" +" user's previous message in the active conversation. Pass ``None`` if\n" +" this is the user's first message - the resulting value is the literal\n" +" string \"first message\".\n" +" " +msgstr "" + +#: assistant\common\utils.py:601 +#, docstring +msgid "Combined stable + dynamic prompt template variables.\n\n" +" Convenience helper that merges `get_base_params()` with\n" +" `get_dynamic_params()` for callers that don't care about cache-safe\n" +" separation. Cache-aware code paths should call the two split helpers\n" +" directly.\n" +" " +msgstr "" + +#: assistant\common\utils.py:645 #, docstring msgid "Make sure that if a conversation payload contains images that the model supports vision" msgstr "" -#: assistant\common\utils.py:429 +#: assistant\common\utils.py:665 #, docstring msgid "Remove all images sourced from URLs from the message payload" msgstr "" -#: assistant\common\utils.py:449 +#: assistant\common\utils.py:685 #, docstring msgid "Remove invisible Unicode characters that AI detectors might flag.\n\n" " Returns: (cleaned_text, was_modified)\n" " " msgstr "" -#: assistant\common\utils.py:479 +#: assistant\common\utils.py:715 #, docstring msgid "Clean the model response since its stupid and breaks itself\n\n" " Example\n" @@ -525,12 +625,12 @@ msgid "Clean the model response since its stupid and breaks itself\n\n" " " msgstr "" -#: assistant\common\utils.py:531 +#: assistant\common\utils.py:767 #, docstring msgid "Same as clean_response but cleans the whole message payload" msgstr "" -#: assistant\common\utils.py:546 +#: assistant\common\utils.py:782 #, docstring msgid "\n" " Ensure all tool calls satisfy schema requirements, modifying the messages payload in-place.\n\n" @@ -571,17 +671,17 @@ msgid "\n" " " msgstr "" -#: assistant\common\utils.py:650 +#: assistant\common\utils.py:886 #, docstring msgid "Check if a file is a supported document type" msgstr "" -#: assistant\common\utils.py:655 +#: assistant\common\utils.py:891 #, docstring msgid "Get the lowercase file extension from a filename" msgstr "" -#: assistant\common\utils.py:662 +#: assistant\common\utils.py:898 #, docstring msgid "Extract text content from PDF, Word, or Excel files\n\n" " Args:\n" @@ -592,17 +692,17 @@ msgid "Extract text content from PDF, Word, or Excel files\n\n" " " msgstr "" -#: assistant\common\utils.py:688 +#: assistant\common\utils.py:924 #, docstring msgid "Extract text from PDF files using PyMuPDF" msgstr "" -#: assistant\common\utils.py:726 +#: assistant\common\utils.py:962 #, docstring msgid "Extract text from Word documents using pypandoc" msgstr "" -#: assistant\common\utils.py:747 +#: assistant\common\utils.py:983 #, docstring msgid "Extract text from Excel files using pandas" msgstr "" From 041a4c5e8313b2f6f2219af9df48808026c61c6a Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Mon, 1 Jun 2026 11:11:08 -0400 Subject: [PATCH 064/104] New translations messages.pot (Korean) [ci skip] --- assistant/locales/ko-KR.po | 457 +++++++++++++++++++++++++++++++------ 1 file changed, 390 insertions(+), 67 deletions(-) diff --git a/assistant/locales/ko-KR.po b/assistant/locales/ko-KR.po index 2df58646c..0524b2f53 100644 --- a/assistant/locales/ko-KR.po +++ b/assistant/locales/ko-KR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-07 02:55\n" +"POT-Creation-Date: 2026-06-01 09:46-0400\n" +"PO-Revision-Date: 2026-06-01 15:11\n" "Last-Translator: \n" "Language-Team: Korean\n" "MIME-Version: 1.0\n" @@ -17,40 +17,145 @@ msgstr "" "X-Crowdin-File-ID: 57\n" "Language: ko_KR\n" -#: assistant\views.py:46 +#: assistant\views.py:54 msgid "Custom" msgstr "" -#: assistant\views.py:58 +#: assistant\views.py:66 msgid "Set API Key" msgstr "" -#: assistant\views.py:60 +#: assistant\views.py:68 msgid "Enter your API Key below" msgstr "" -#: assistant\views.py:81 assistant\views.py:214 assistant\views.py:663 -#: assistant\views.py:905 +#: assistant\views.py:89 assistant\views.py:519 assistant\views.py:968 +#: assistant\views.py:1484 assistant\views.py:1974 assistant\views.py:2264 msgid "This isn't your menu!" msgstr "이건 당신의 메뉴가 아닙니다!" -#: assistant\views.py:104 +#: assistant\views.py:105 +msgid "Skip with feedback" +msgstr "" + +#: assistant\views.py:108 +msgid "Why are you skipping? (optional)" +msgstr "" + +#: assistant\views.py:130 msgid "This approval prompt isn't for you!" msgstr "" -#: assistant\views.py:145 +#: assistant\views.py:177 +msgid "Confirm: {}" +msgstr "" + +#: assistant\views.py:181 +msgid "Reason (blank = use AI's reason)" +msgstr "" + +#: assistant\views.py:204 +#, docstring +msgid "Dropdown of every action available on this server (built-ins + Ark/Notes)." +msgstr "" + +#: assistant\views.py:208 +msgid "Choose a different action…" +msgstr "" + +#: assistant\views.py:215 +#, docstring +msgid "Interactive staff panel proposing a moderation action suggested by the LLM." +msgstr "" + +#: assistant\views.py:245 +msgid "No reason provided." +msgstr "" + +#: assistant\views.py:268 +msgid "# 🧪 SIMULATION — dry run" +msgstr "" + +#: assistant\views.py:269 +msgid "-# Buttons take no real action; this is a test." +msgstr "" + +#: assistant\views.py:272 +msgid "# ⚠️ Proposed Moderation Action" +msgstr "" + +#: assistant\views.py:275 +msgid "**Suggested:** {emoji} {action} • **Severity:** {sev}" +msgstr "" + +#: assistant\views.py:282 +msgid "**User:** {mention} `{uid}`\n" +"**Message:** [jump to message]({url})\n" +"**Channel:** {channel}" +msgstr "" + +#: assistant\views.py:290 +msgid "-# Flagged for: {}" +msgstr "" + +#: assistant\views.py:292 +msgid "**Reason**\n" +"{}" +msgstr "" + +#: assistant\views.py:311 +msgid "**Context**\n" +"{}" +msgstr "" + +#: assistant\views.py:323 +msgid "{} (suggested)" +msgstr "" + +#: assistant\views.py:328 +msgid "No action" +msgstr "" + +#: assistant\views.py:354 assistant\views.py:378 +msgid "This panel was already resolved." +msgstr "" + +#: assistant\views.py:358 +msgid "You don't have permission to perform that action." +msgstr "" + +#: assistant\views.py:364 +msgid "✅ Dismissed — no action taken.\n" +"-# By {}" +msgstr "" + +#: assistant\views.py:383 +msgid "{outcome}\n" +"-# Action by {user}" +msgstr "" + +#: assistant\views.py:389 +msgid "🧪 (dry-run) Would **{action}** {target}.\n" +"-# {reason}" +msgstr "" + +#: assistant\views.py:434 +msgid "⏱️ Auto-action on timeout: {}" +msgstr "" + +#: assistant\views.py:450 msgid "Entry name" msgstr "항목 이름" -#: assistant\views.py:153 +#: assistant\views.py:458 msgid "Training context" msgstr "훈련 문맥" -#: assistant\views.py:172 +#: assistant\views.py:477 msgid "Search Query" msgstr "검색 쿼리" -#: assistant\views.py:264 +#: assistant\views.py:569 msgid "Failed to process embedding `{}`\n" "Content: ```\n" "{}\n" @@ -60,166 +165,384 @@ msgstr "임베딩 처리에 실패했습니다 `{}`\n" "{} \n" "```" -#: assistant\views.py:266 +#: assistant\views.py:571 msgid "An embedding with the name `{}` already exists!" msgstr "이름이 `{}`인 임베딩이 이미 존재합니다!" -#: assistant\views.py:271 +#: assistant\views.py:576 msgid "Your embedding labeled `{}` has been processed!" msgstr "당신의 임베딩 레이블 {}이(가) 처리되었습니다!" -#: assistant\views.py:282 +#: assistant\views.py:587 msgid "No embeddings to inspect!" msgstr "검사할 임베딩이 없습니다!" -#: assistant\views.py:287 +#: assistant\views.py:592 msgid "Embedding not found!" msgstr "" -#: assistant\views.py:305 +#: assistant\views.py:610 msgid "No embeddings to edit!" msgstr "편집할 임베딩이 없습니다!" -#: assistant\views.py:317 +#: assistant\views.py:622 msgid "Failed to edit that embedding, please try again later" msgstr "편집하는 데 실패했습니다. 나중에 다시 시도해주세요" -#: assistant\views.py:324 +#: assistant\views.py:629 msgid "Your embedding has been modified!" msgstr "당신의 임베딩이 수정되었습니다!" -#: assistant\views.py:364 +#: assistant\views.py:669 msgid "Add an embedding" msgstr "임베딩을 추가하세요" -#: assistant\views.py:370 +#: assistant\views.py:675 msgid "Your embedding is processing and will appear when ready!" msgstr "당신의 임베딩이 처리 중이며 준비되면 표시됩니다!" -#: assistant\views.py:386 +#: assistant\views.py:691 msgid "No embeddings to delete!" msgstr "삭제할 임베딩이 없습니다!" -#: assistant\views.py:388 +#: assistant\views.py:693 msgid "Deleted `{}` embedding." msgstr "삭제된 `{}` 임베딩입니다." -#: assistant\views.py:414 +#: assistant\views.py:719 msgid "No embeddings to search!" msgstr "검색할 임베딩이 없습니다!" -#: assistant\views.py:415 +#: assistant\views.py:720 msgid "Search for an embedding" msgstr "임베딩을 검색하세요" -#: assistant\views.py:437 +#: assistant\views.py:742 msgid "Search result: **{}**" msgstr "검색 결과: **{}**" -#: assistant\views.py:474 +#: assistant\views.py:779 msgid "Function Edit" msgstr "함수 편집" -#: assistant\views.py:483 +#: assistant\views.py:788 msgid "JSON Schema" msgstr "JSON 스키마" -#: assistant\views.py:489 +#: assistant\views.py:794 msgid "Code" msgstr "코드" -#: assistant\views.py:495 +#: assistant\views.py:800 msgid "Permission Level" msgstr "" -#: assistant\views.py:496 +#: assistant\views.py:801 msgid "User, Mod, Admin, or Owner" msgstr "" -#: assistant\views.py:502 +#: assistant\views.py:807 msgid "Required Discord Permissions" msgstr "" -#: assistant\views.py:503 +#: assistant\views.py:808 msgid "e.g. manage_messages, kick_members (comma-separated, or leave blank)" msgstr "" -#: assistant\views.py:510 +#: assistant\views.py:815 msgid "Category" msgstr "" -#: assistant\views.py:511 +#: assistant\views.py:816 msgid "memory, web, utility" msgstr "" -#: assistant\views.py:523 +#: assistant\views.py:828 msgid "Invalid permission level, must be one of `User`, `Mod`, `Admin`, or `Owner`" msgstr "" -#: assistant\views.py:536 +#: assistant\views.py:841 msgid "Invalid Discord permission names: {}" msgstr "" -#: assistant\views.py:552 +#: assistant\views.py:857 assistant\views.py:1865 msgid "Toggle" msgstr "" -#: assistant\views.py:582 +#: assistant\views.py:887 msgid "Choose tools for {} ({}/{})..." msgstr "" -#: assistant\views.py:588 +#: assistant\views.py:893 msgid "Choose tools for {}..." msgstr "" -#: assistant\views.py:593 +#: assistant\views.py:898 msgid "No tools available" msgstr "" -#: assistant\views.py:606 +#: assistant\views.py:911 assistant\views.py:1387 assistant\views.py:1916 msgid "Prev" msgstr "" -#: assistant\views.py:615 +#: assistant\views.py:920 assistant\views.py:1396 assistant\views.py:1925 msgid "Next" msgstr "" -#: assistant\views.py:623 +#: assistant\views.py:928 assistant\views.py:1420 assistant\views.py:1933 msgid "Close" msgstr "" -#: assistant\views.py:718 +#: assistant\views.py:1023 msgid "{} {}/{} enabled • {} categories • Page {}/{}" msgstr "" -#: assistant\views.py:839 assistant\views.py:859 +#: assistant\views.py:1144 assistant\views.py:1164 assistant\views.py:2200 msgid "That category no longer exists." msgstr "" -#: assistant\views.py:1014 +#: assistant\views.py:1199 +#, docstring +msgid "Split a model id into (provider, short_name).\n\n" +" For ids like ``openai/gpt-4-turbo`` returns ``(\"openai\", \"gpt-4-turbo\")``.\n" +" For ids with no slash returns ``(PROVIDER_OTHER, model_id)``.\n" +" " +msgstr "" + +#: assistant\views.py:1214 +#, docstring +msgid "Group endpoint model ids by their provider prefix.\n\n" +" Returns an ordered dict: providers sorted alphabetically (``other`` last),\n" +" each value is the list of full model ids sorted by short name.\n" +" " +msgstr "" + +#: assistant\views.py:1235 +msgid "Other" +msgstr "" + +#: assistant\views.py:1265 +msgid "Pick a model from {} ({}/{})..." +msgstr "" + +#: assistant\views.py:1271 +msgid "Pick a model from {}..." +msgstr "" + +#: assistant\views.py:1276 +msgid "No models" +msgstr "" + +#: assistant\views.py:1295 +msgid "Enter Model ID" +msgstr "" + +#: assistant\views.py:1298 +msgid "Model ID" +msgstr "" + +#: assistant\views.py:1299 +msgid "e.g. openrouter/auto, openai/gpt-4o, anthropic/claude-3-opus" +msgstr "" + +#: assistant\views.py:1315 +msgid "Search Models" +msgstr "" + +#: assistant\views.py:1318 +msgid "Filter" +msgstr "" + +#: assistant\views.py:1319 +msgid "e.g. claude, gpt-4, mistral" +msgstr "" + +#: assistant\views.py:1335 +msgid "Model Slug Suffix" +msgstr "" + +#: assistant\views.py:1338 assistant\views.py:1360 +msgid "Suffix" +msgstr "" + +#: assistant\views.py:1339 +msgid ":nitro (throughput) :floor (price) :extended (blank = remove)" +msgstr "" + +#: assistant\views.py:1356 +msgid "Search" +msgstr "" + +#: assistant\views.py:1365 +msgid "Clear search" +msgstr "" + +#: assistant\views.py:1405 +msgid "Manual entry" +msgstr "" + +#: assistant\views.py:1413 +msgid "Re-probe" +msgstr "" + +#: assistant\views.py:1445 +#, docstring +msgid "Endpoint model picker grouped by provider prefix." +msgstr "" + +#: assistant\views.py:1532 +msgid "Chat model" +msgstr "" + +#: assistant\views.py:1532 +msgid "Embedding model" +msgstr "" + +#: assistant\views.py:1540 +msgid "# 🤖 {} picker" +msgstr "" + +#: assistant\views.py:1541 +msgid "-# Endpoint: `{}`" +msgstr "" + +#: assistant\views.py:1542 +msgid "Current: **{}**" +msgstr "" + +#: assistant\views.py:1542 assistant\views.py:1760 +msgid "(none)" +msgstr "" + +#: assistant\views.py:1545 +msgid "No models were discovered from this endpoint. Try **Re-probe** or use **Manual entry** to type a model id. Router endpoints like OpenRouter accept aliases such as `{}` or `{}`." +msgstr "" + +#: assistant\views.py:1565 +msgid "-# Search: `{}` • {} result(s)" +msgstr "" + +#: assistant\views.py:1568 +msgid "{} models across {} providers • Page {}/{}" +msgstr "" + +#: assistant\views.py:1577 +msgid "-# Tip: router endpoints accept aliases like `{}` or `{}` via **Manual entry**." +msgstr "" + +#: assistant\views.py:1687 assistant\views.py:1703 +msgid "{} set to **{}**" +msgstr "" + +#: assistant\views.py:1743 +msgid "Invalid suffix `{}`. Valid: {}." +msgstr "" + +#: assistant\views.py:1762 +msgid "Model set to **{}** (suffix: {})" +msgstr "" + +#: assistant\views.py:1784 +#, docstring +msgid "Return on/off/mixed for a trailing-block category.\n\n" +" Inclusion defaults to **off** for every variable on a fresh install.\n" +" " +msgstr "" + +#: assistant\views.py:1801 +#, docstring +msgid "Return every category eligible for the trailing-context-block menu.\n\n" +" Output: ``{category_key: {\"label\": str, \"variables\": [str, ...]}}``.\n\n" +" Inclusion in the floating block is fully admin-controlled - there is\n" +" no implicit default. On a fresh install everything is OFF (blank\n" +" slate). Admins opt variables in one at a time via the floatingcontext\n" +" menu.\n" +" " +msgstr "" + +#: assistant\views.py:1847 +#, docstring +msgid "Return a short human-readable description for a context variable." +msgstr "" + +#: assistant\views.py:1900 +msgid "Toggle individual vars in {}..." +msgstr "" + +#: assistant\views.py:1903 +msgid "No variables" +msgstr "" + +#: assistant\views.py:1993 +#, docstring +msgid "Return formatted warning lines for prompts containing dynamic vars." +msgstr "" + +#: assistant\views.py:2003 +msgid "**System prompt** - `{}`" +msgstr "" + +#: assistant\views.py:2006 +msgid "**Initial prompt** - `{}`" +msgstr "" + +#: assistant\views.py:2011 +msgid "<#{}> - `{}`" +msgstr "" + +#: assistant\views.py:2015 +#, docstring +msgid "Build a mapping of variable name → description for 3rd-party vars." +msgstr "" + +#: assistant\views.py:2049 +msgid "Toggle which variables are included in the trailing `[Current Context]` system message that the bot appends after conversation history. Everything is OFF by default - opt variables in one at a time. Variables you toggle on are rendered as self-encapsulated sentences (e.g. `\"The current date is May 16, 2026.\"`), so you do not need to author a prompt that references them." +msgstr "" + +#: assistant\views.py:2060 +msgid "{} {}/{} variables in block • {} categories • Page {}/{}" +msgstr "" + +#: assistant\views.py:2088 +msgid "(no variables)" +msgstr "" + +#: assistant\views.py:2104 +msgid "## ⚠️ Cache Warning" +msgstr "" + +#: assistant\views.py:2107 +msgid "These prompts contain dynamic variable placeholders that are substituted inline, which busts provider-side prompt-prefix caching on every request:" +msgstr "" + +#: assistant\views.py:2117 +msgid "Tip: remove the placeholder from your prompt and toggle the variable on in the menu above instead - the bot will append the value to the floating context block automatically." +msgstr "" + +#: assistant\views.py:2373 msgid "No code to inspect!" msgstr "검사할 코드가 없습니다!" -#: assistant\views.py:1038 +#: assistant\views.py:2397 msgid "Here are your custom functions" msgstr "Understood. I will ensure that the translations maintain the core meaning of the source text and avoid adding any unwarranted extra content. Please provide the text that you would like me to translate" -#: assistant\views.py:1043 +#: assistant\views.py:2402 msgid "Reply to this message with the json schema for your function\n" "- [Example Functions](https://github.com/vertyco/vrt-cogs/tree/main/assistant/example-funcs)" msgstr "이 메시지에 대한 json 스키마를 사용하여 함수에 대한 응답을 보내세요\n" "- [예제 함수](https://github.com/vertyco/vrt-cogs/tree/main/assistant/example-funcs)" -#: assistant\views.py:1064 assistant\views.py:1142 +#: assistant\views.py:2423 assistant\views.py:2501 msgid "SchemaError\n" "{}" msgstr "스키마 오류 {}" -#: assistant\views.py:1066 assistant\views.py:1144 +#: assistant\views.py:2425 assistant\views.py:2503 msgid "Empty schema!" msgstr "빈 스키마입니다!" -#: assistant\views.py:1069 assistant\views.py:1147 +#: assistant\views.py:2428 assistant\views.py:2506 msgid "Invalid schema!\n" "**Missing**\n" "{}" @@ -227,63 +550,63 @@ msgstr "잘못된 스키마입니다!\n" "**누락된 부분**\n" "{}" -#: assistant\views.py:1073 +#: assistant\views.py:2432 msgid "Reply to this message with the custom code" msgstr "이 메시지에 사용자 정의 코드로 응답하세요" -#: assistant\views.py:1088 assistant\views.py:1153 +#: assistant\views.py:2447 assistant\views.py:2512 msgid "Invalid function" msgstr "I apologize for any confusion. Please provide the text you would like me to translate, and I will do my best to assist you" -#: assistant\views.py:1092 +#: assistant\views.py:2451 msgid "`{}` has been overwritten!" msgstr "`{}` 는 덮어쓰여졌습니다!" -#: assistant\views.py:1094 +#: assistant\views.py:2453 msgid "`{}` has been created!" msgstr "`{}`가 생성되었습니다!" -#: assistant\views.py:1105 +#: assistant\views.py:2464 msgid "No code to edit!" msgstr "편집할 코드가 없습니다!" -#: assistant\views.py:1113 assistant\views.py:1185 +#: assistant\views.py:2472 assistant\views.py:2544 msgid "Could not find function!" msgstr "I apologize for the inconvenience. It appears that the requested function is not available. Is there anything else I can assist you with?" -#: assistant\views.py:1115 +#: assistant\views.py:2474 msgid "This function is managed by the `{}` cog and cannot be edited" msgstr "이 함수는 `{}` 코그에 의해 관리되며 편집할 수 없습니다" -#: assistant\views.py:1121 +#: assistant\views.py:2480 msgid "The json schema for this function is too long, you'll need to re-upload it to modify" msgstr "이 함수의 JSON 스키마가 너무 길어서 수정하려면 다시 업로드해야 합니다" -#: assistant\views.py:1126 +#: assistant\views.py:2485 msgid "The code for this function is too long, you'll need to re-upload it to modify" msgstr "이 함수의 코드가 너무 길어서 수정하려면 다시 업로드해야 합니다" -#: assistant\views.py:1170 +#: assistant\views.py:2529 msgid "`{}` function updated!" msgstr "`{}` 함수가 업데이트되었습니다!" -#: assistant\views.py:1178 +#: assistant\views.py:2537 msgid "No code to delete!" msgstr "지울 코드가 없습니다!" -#: assistant\views.py:1187 +#: assistant\views.py:2546 msgid "This function is managed by the `{}` cog and cannot be deleted" msgstr "이 함수는 `{}` 코그에 의해 관리되며 삭제할 수 없습니다" -#: assistant\views.py:1194 +#: assistant\views.py:2553 msgid "`{}` has been deleted!" msgstr "`{}` 삭제되었습니다!" -#: assistant\views.py:1201 +#: assistant\views.py:2560 msgid "No code to toggle!" msgstr "토글할 코드가 없습니다!" -#: assistant\views.py:1215 +#: assistant\views.py:2574 msgid "Search for a function" msgstr "" From 12ff322a1169c0381a8a29299040f8fb96801f9f Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Mon, 1 Jun 2026 11:11:09 -0400 Subject: [PATCH 065/104] New translations messages.pot (Portuguese) [ci skip] --- assistant/common/locales/pt-PT.po | 346 +++++++++++++++++++----------- 1 file changed, 223 insertions(+), 123 deletions(-) diff --git a/assistant/common/locales/pt-PT.po b/assistant/common/locales/pt-PT.po index d514ebde3..d6a5a64ff 100644 --- a/assistant/common/locales/pt-PT.po +++ b/assistant/common/locales/pt-PT.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-07 02:57\n" +"POT-Creation-Date: 2026-06-01 09:46-0400\n" +"PO-Revision-Date: 2026-06-01 15:11\n" "Last-Translator: \n" "Language-Team: Portuguese\n" "MIME-Version: 1.0\n" @@ -17,190 +17,226 @@ msgstr "" "X-Crowdin-File-ID: 55\n" "Language: pt_PT\n" -#: assistant\common\api.py:110 assistant\common\api.py:111 -#: assistant\common\api.py:120 assistant\common\api.py:121 -#: assistant\common\api.py:122 assistant\common\api.py:126 -#: assistant\common\chat.py:319 +#: assistant\common\api.py:75 +#, docstring +msgid "Return the effective endpoint URL for a guild (chat and embeddings).\n\n" +" Priority:\n" +" 1. Guild-specific endpoint override\n" +" 2. Global endpoint override\n" +" 3. None (use OpenAI)\n" +" " +msgstr "" + +#: assistant\common\api.py:87 +#, docstring +msgid "Return cached endpoint profile for the effective endpoint.\n\n" +" If ``conf`` is provided, checks the guild-specific profile first,\n" +" then falls back to the global profile.\n" +" " +msgstr "" + +#: assistant\common\api.py:188 assistant\common\api.py:189 +#: assistant\common\api.py:198 assistant\common\api.py:199 +#: assistant\common\api.py:200 assistant\common\api.py:204 +#: assistant\common\chat.py:398 msgid "Unknown" msgstr "" -#: assistant\common\api.py:117 +#: assistant\common\api.py:195 msgid "`Provider: `{}" msgstr "" -#: assistant\common\api.py:118 +#: assistant\common\api.py:196 msgid "`Runtime Chat Model: `{}" msgstr "" -#: assistant\common\api.py:119 +#: assistant\common\api.py:197 msgid "`Runtime Embed Model:`{}" msgstr "" -#: assistant\common\api.py:120 +#: assistant\common\api.py:198 msgid "`Vision: `{}" msgstr "" -#: assistant\common\api.py:121 +#: assistant\common\api.py:199 msgid "`Reasoning: `{}" msgstr "" -#: assistant\common\api.py:122 +#: assistant\common\api.py:200 msgid "`Max Context: `{}" msgstr "" -#: assistant\common\api.py:123 +#: assistant\common\api.py:201 msgid "`Embed Dimensions: `{}" msgstr "" -#: assistant\common\api.py:128 +#: assistant\common\api.py:206 msgid "`Models Discovered: `{}" msgstr "" -#: assistant\common\api.py:395 +#: assistant\common\api.py:601 msgid "Failed to fetch: {}" msgstr "" -#: assistant\common\api.py:659 +#: assistant\common\api.py:913 #, docstring msgid "Get token list from text" msgstr "Obter lista de tokens a partir do texto" -#: assistant\common\api.py:691 +#: assistant\common\api.py:946 msgid "No model API key or endpoint override is configured!\n" msgstr "" -#: assistant\common\api.py:693 +#: assistant\common\api.py:948 msgid "- Set this server's API key with `{}`\n" msgstr "" -#: assistant\common\api.py:699 +#: assistant\common\api.py:954 #, docstring msgid "Re-embed all entries using the current embedding model.\n\n" " Handles dimension mismatches by recreating the collection.\n" " " msgstr "" -#: assistant\common\api.py:801 +#: assistant\common\api.py:1057 #, docstring msgid "Get text from token list" msgstr "Obter texto da lista de tokens" -#: assistant\common\api.py:828 +#: assistant\common\api.py:1085 #, docstring msgid "Summarize older messages via LLM, falling back to degrade_conversation on failure" msgstr "" -#: assistant\common\api.py:934 +#: assistant\common\api.py:1185 #, docstring msgid "Walk backward from target_idx to avoid splitting tool-call/result pairs" msgstr "" -#: assistant\common\api.py:952 +#: assistant\common\api.py:1203 #, docstring msgid "Convert message dicts to a plain-text transcript for summarization" msgstr "" -#: assistant\common\api.py:998 +#: assistant\common\api.py:1249 #, docstring msgid "Last-resort fallback: remove oldest messages to fit within token limit" msgstr "" -#: assistant\common\api.py:1015 +#: assistant\common\api.py:1266 #, docstring msgid "Remove the oldest message of the given role plus its paired tool results." msgstr "" -#: assistant\common\api.py:1098 +#: assistant\common\api.py:1349 #, docstring msgid "Pagify a long string by tokens rather than characters" msgstr "Paginar uma string longa por tokens em vez de caracteres" -#: assistant\common\api.py:1169 +#: assistant\common\api.py:1421 msgid "Custom Functions" msgstr "Funções personalizadas" -#: assistant\common\api.py:1179 +#: assistant\common\api.py:1431 msgid "Internal Function" msgstr "Função interna" -#: assistant\common\api.py:1180 +#: assistant\common\api.py:1432 msgid "This is a built-in function managed by the Assistant cog" msgstr "" -#: assistant\common\api.py:1185 +#: assistant\common\api.py:1437 msgid "3rd Party" msgstr "3ª Parte" -#: assistant\common\api.py:1186 +#: assistant\common\api.py:1438 msgid "This function is managed by the `{}` cog" msgstr "Esta função é gerida pela engrenagem `{}`" -#: assistant\common\api.py:1189 +#: assistant\common\api.py:1441 msgid "Category" msgstr "" -#: assistant\common\api.py:1191 +#: assistant\common\api.py:1443 msgid "Status" msgstr "" -#: assistant\common\api.py:1192 +#: assistant\common\api.py:1444 msgid "{} {}" msgstr "" -#: assistant\common\api.py:1192 +#: assistant\common\api.py:1444 msgid "Enabled" msgstr "" -#: assistant\common\api.py:1192 +#: assistant\common\api.py:1444 msgid "Disabled" msgstr "" -#: assistant\common\api.py:1198 +#: assistant\common\api.py:1450 msgid "This function consumes `{}` input tokens each call\n" msgstr "Esta função consome `{}` tokens de entrada em cada chamada.\n" -#: assistant\common\api.py:1213 +#: assistant\common\api.py:1465 msgid "Hidden..." msgstr "Escondido..." -#: assistant\common\api.py:1217 +#: assistant\common\api.py:1469 msgid "\n" "Required: {}" msgstr "" -#: assistant\common\api.py:1218 +#: assistant\common\api.py:1470 msgid "Permission Level" msgstr "" -#: assistant\common\api.py:1219 +#: assistant\common\api.py:1471 msgid "Schema" msgstr "Esquema" -#: assistant\common\api.py:1220 +#: assistant\common\api.py:1472 msgid "Code" msgstr "Código" -#: assistant\common\api.py:1222 assistant\common\api.py:1253 +#: assistant\common\api.py:1474 assistant\common\api.py:1505 msgid "Page {}/{}" msgstr "Página {}/{}" -#: assistant\common\api.py:1229 +#: assistant\common\api.py:1481 msgid "No custom code has been added yet!" msgstr "Ainda não foi adicionado nenhum código personalizado!" -#: assistant\common\api.py:1241 +#: assistant\common\api.py:1493 msgid "No embeddings have been created yet!" msgstr "" -#: assistant\common\api.py:1252 +#: assistant\common\api.py:1504 msgid "Embeddings" msgstr "Incorporações" -#: assistant\common\api.py:1293 +#: assistant\common\api.py:1545 msgid "No embeddings have been added!" msgstr "Não foram adicionadas incorporações!" -#: assistant\common\chat.py:138 +#: assistant\common\chat.py:141 +#, docstring +msgid "Build the ``[Current Context]`` floating context block.\n\n" +" Rendered into a trailing payload-only user message that the bot sends\n" +" after conversation history. Because that message rides after the\n" +" cached prefix, placing dynamic (per-request) values here keeps the\n" +" cached prompt prefix stable so provider-side prompt caching remains\n" +" effective.\n\n" +" Variables admins have opted to include (via ``[p]floatingcontext``)\n" +" are rendered as self-encapsulated narrative sentences (e.g.\n" +" ``\"The current date is May 16, 2026.\"``) so admins do not need to\n" +" reference the variable in their prompt - toggling it on is enough for\n" +" the model to receive the value.\n\n" +" Returns the formatted block string, or an empty string if no values are\n" +" present.\n" +" " +msgstr "" + +#: assistant\common\chat.py:217 #, docstring msgid "Two-tier pruning of old tool/function results to save context window space.\n\n" " Tier 1 (soft-trim): when *context_fill_ratio* >= ``TOOL_RESULT_SOFT_RATIO``,\n" @@ -212,7 +248,7 @@ msgid "Two-tier pruning of old tool/function results to save context window spac " " msgstr "" -#: assistant\common\chat.py:182 +#: assistant\common\chat.py:261 #, docstring msgid "Remove images from messages once the model has responded enough times.\n\n" " Images are the most token-expensive content in a conversation (easily\n" @@ -226,7 +262,7 @@ msgid "Remove images from messages once the model has responded enough times.\n\ " " msgstr "" -#: assistant\common\chat.py:239 +#: assistant\common\chat.py:318 #, docstring msgid "Cap individual tool results to a fraction of the context window.\n\n" " Prevents a single massive tool result from crowding out everything else.\n" @@ -235,121 +271,130 @@ msgid "Cap individual tool results to a fraction of the context window.\n\n" " " msgstr "" -#: assistant\common\chat.py:265 +#: assistant\common\chat.py:344 #, docstring msgid "Filter kwargs for callables that do not accept arbitrary keyword args." msgstr "" -#: assistant\common\chat.py:285 +#: assistant\common\chat.py:364 #, docstring msgid "Return AllowedMentions allowing role/user pings for privileged members" msgstr "" -#: assistant\common\chat.py:314 +#: assistant\common\chat.py:393 msgid "Execution of admin tool `{}` requires interactive approval, but no interactive message context was available." msgstr "" -#: assistant\common\chat.py:325 +#: assistant\common\chat.py:402 msgid "`{}` wants to run admin tool `{}` from `{}` ({})\n" -"Choose `Approve Once`, `Allow This Session`, or `Skip`." +"Choose `Approve Once`, `Allow This Session`, `Skip`, or `Skip With Feedback`." msgstr "" -#: assistant\common\chat.py:340 +#: assistant\common\chat.py:413 assistant\common\chat.py:439 msgid "Approved once." msgstr "" -#: assistant\common\chat.py:341 +#: assistant\common\chat.py:414 assistant\common\chat.py:440 msgid "Approved for this session." msgstr "" -#: assistant\common\chat.py:342 +#: assistant\common\chat.py:415 assistant\common\chat.py:441 msgid "Skipped." msgstr "" -#: assistant\common\chat.py:343 +#: assistant\common\chat.py:416 assistant\common\chat.py:443 msgid "Approval timed out." msgstr "" -#: assistant\common\chat.py:355 +#: assistant\common\chat.py:442 +msgid "Skipped with feedback." +msgstr "" + +#: assistant\common\chat.py:456 msgid "SKIPPED: Approval for admin tool `{}` timed out. Do not claim it ran. Continue without it, ask again later, or try a different tool." msgstr "" -#: assistant\common\chat.py:360 +#: assistant\common\chat.py:461 msgid "SKIPPED: The user skipped admin tool `{}` for this call. Do not claim it ran. You may continue without it, ask for approval again later, or try a different tool." msgstr "" -#: assistant\common\chat.py:560 +#: assistant\common\chat.py:465 +msgid "\n\n" +"The user's feedback on why they skipped: {}" +msgstr "" + +#: assistant\common\chat.py:663 msgid "No message history!" msgstr "Não há histórico de mensagens!" -#: assistant\common\chat.py:582 assistant\common\chat.py:585 -#: assistant\common\chat.py:587 +#: assistant\common\chat.py:685 assistant\common\chat.py:688 +#: assistant\common\chat.py:690 msgid "Internal Server Error({}): {}" msgstr "" -#: assistant\common\chat.py:589 +#: assistant\common\chat.py:692 msgid "Failed to communicate with API!" msgstr "" -#: assistant\common\chat.py:593 +#: assistant\common\chat.py:696 msgid "Invalid API key, please set a new valid key!" msgstr "Chave de API inválida, por favor defina uma nova chave válida!" -#: assistant\common\chat.py:595 +#: assistant\common\chat.py:698 msgid "Uh oh, looks like my API key is invalid!" msgstr "Parece que minha chave de API é inválida!" -#: assistant\common\chat.py:597 +#: assistant\common\chat.py:700 msgid "Rate limit error: {}" msgstr "" -#: assistant\common\chat.py:599 +#: assistant\common\chat.py:702 msgid "Read timeout error: {}" msgstr "" -#: assistant\common\chat.py:605 +#: assistant\common\chat.py:711 msgid "Uh oh, something went wrong! Bot owner can use `{}` to view the error." msgstr "Uh oh, algo deu errado! O proprietário do bot pode usar `{}` para visualizar o erro." -#: assistant\common\chat.py:608 +#: assistant\common\chat.py:714 msgid "API Status: {}" msgstr "" -#: assistant\common\chat.py:643 +#: assistant\common\chat.py:749 msgid "No results found" msgstr "Não foram encontrados resultados" -#: assistant\common\chat.py:685 +#: assistant\common\chat.py:791 #, docstring msgid "Call the API asynchronously" msgstr "Chamar a API de forma assíncrona" -#: assistant\common\chat.py:803 +#: assistant\common\chat.py:909 msgid "None" msgstr "" -#: assistant\common\chat.py:911 +#: assistant\common\chat.py:1027 msgid "Request timed out, please try again." msgstr "" -#: assistant\common\chat.py:922 +#: assistant\common\chat.py:1044 msgid "Bad Request Error2({}): {}" msgstr "" -#: assistant\common\chat.py:924 +#: assistant\common\chat.py:1046 msgid "Bad Request Error({}): {}" msgstr "" -#: assistant\common\chat.py:1109 assistant\common\chat.py:1166 -#: assistant\common\chat.py:1199 +#: assistant\common\chat.py:1288 assistant\common\chat.py:1345 +#: assistant\common\chat.py:1378 msgid "Result sent!" msgstr "" -#: assistant\common\chat.py:1235 +#: assistant\common\chat.py:1414 msgid "Response failed due to invalid regex, check logs for more info." msgstr "A resposta falhou devido a um regex inválido, verifique os registos para mais informações." -#: assistant\common\chat.py:1278 +#: assistant\common\chat.py:1457 #, docstring msgid "Prepare content for calling the GPT API\n\n" " Args:\n" @@ -370,85 +415,94 @@ msgid "Prepare content for calling the GPT API\n\n" " " msgstr "" -#: assistant\common\chat.py:1386 +#: assistant\common\utils.py:29 #, docstring -msgid "Instead of format(**params) possibly giving a KeyError if prompt has code in it" -msgstr "Em vez de format(**params), é possível que ocorra um KeyError se o prompt contiver código" +msgid "Translate a simple wildcard trigger phrase into a SAFE, linear regex string.\n\n" +" Only ``*`` (any run of characters, including none) is honored as a metacharacter;\n" +" everything else is escaped via ``re.escape``. This means staff of a public bot can\n" +" paste arbitrary text — including real regex like ``(a+)+`` — and it can never inject\n" +" catastrophic backtracking (ReDoS): the output contains only literals, ``.*`` and ``\\b``,\n" +" which the engine matches in linear time, so no multiprocessing timeout guard is needed.\n\n" +" A phrase with no leading/trailing ``*`` is anchored on word boundaries, so ``idiot``\n" +" hits the whole word ``idiot`` but not ``idiotic``. Add ``*`` to loosen it:\n" +" ``idiot*`` (prefix), ``*idiot`` (suffix), ``*idiot*`` (substring anywhere).\n" +" " +msgstr "" -#: assistant\common\utils.py:28 assistant\common\utils.py:82 +#: assistant\common\utils.py:51 assistant\common\utils.py:105 msgid "Playing" msgstr "" -#: assistant\common\utils.py:29 assistant\common\utils.py:75 +#: assistant\common\utils.py:52 assistant\common\utils.py:98 msgid "Streaming" msgstr "" -#: assistant\common\utils.py:30 +#: assistant\common\utils.py:53 msgid "Listening" msgstr "" -#: assistant\common\utils.py:31 +#: assistant\common\utils.py:54 msgid "Watching" msgstr "" -#: assistant\common\utils.py:32 assistant\common\utils.py:67 +#: assistant\common\utils.py:55 assistant\common\utils.py:90 msgid "Custom status" msgstr "" -#: assistant\common\utils.py:33 +#: assistant\common\utils.py:56 msgid "Competing" msgstr "" -#: assistant\common\utils.py:38 +#: assistant\common\utils.py:61 msgid "Activity" msgstr "" -#: assistant\common\utils.py:55 +#: assistant\common\utils.py:78 msgid "Unknown track" msgstr "" -#: assistant\common\utils.py:56 +#: assistant\common\utils.py:79 msgid "Unknown artist" msgstr "" -#: assistant\common\utils.py:60 +#: assistant\common\utils.py:83 msgid "by {artist}" msgstr "" -#: assistant\common\utils.py:61 +#: assistant\common\utils.py:84 msgid "album: {album}" msgstr "" -#: assistant\common\utils.py:63 +#: assistant\common\utils.py:86 msgid "Listening to Spotify: {details}" msgstr "" -#: assistant\common\utils.py:67 +#: assistant\common\utils.py:90 msgid "Custom status: {status}" msgstr "" -#: assistant\common\utils.py:72 +#: assistant\common\utils.py:95 msgid "game: {game}" msgstr "" -#: assistant\common\utils.py:73 assistant\common\utils.py:80 -#: assistant\common\utils.py:91 +#: assistant\common\utils.py:96 assistant\common\utils.py:103 +#: assistant\common\utils.py:114 msgid "platform: {platform}" msgstr "" -#: assistant\common\utils.py:75 +#: assistant\common\utils.py:98 msgid "Streaming: {details}" msgstr "" -#: assistant\common\utils.py:82 +#: assistant\common\utils.py:105 msgid "Playing: {details}" msgstr "" -#: assistant\common\utils.py:92 +#: assistant\common\utils.py:115 msgid "buttons: {buttons}" msgstr "" -#: assistant\common\utils.py:181 +#: assistant\common\utils.py:204 #, docstring msgid "\n" " Cleans the function name to ensure it only contains alphanumeric characters,\n" @@ -460,53 +514,99 @@ msgid "\n" " " msgstr "" -#: assistant\common\utils.py:201 +#: assistant\common\utils.py:224 #, docstring msgid "Get all attachments from context" msgstr "Obter todos os anexos do contexto" -#: assistant\common\utils.py:222 +#: assistant\common\utils.py:245 msgid "Canceled" msgstr "Cancelado" -#: assistant\common\utils.py:235 +#: assistant\common\utils.py:258 msgid "You have been blacklisted from using this command!" msgstr "Foi colocado na lista negra para não poder utilizar este comando!" -#: assistant\common\utils.py:239 +#: assistant\common\utils.py:262 msgid "You have a blacklisted role and cannot use this command!" msgstr "Tem uma função na lista negra e não pode utilizar este comando!" -#: assistant\common\utils.py:243 +#: assistant\common\utils.py:266 msgid "You cannot use that command in this channel!" msgstr "Não podes utilizar esse comando neste canal!" -#: assistant\common\utils.py:247 +#: assistant\common\utils.py:270 msgid "You cannot use that command in any channels under this category" msgstr "Não pode utilizar esse comando em nenhum canal desta categoria" -#: assistant\common\utils.py:282 assistant\common\utils.py:283 +#: assistant\common\utils.py:305 assistant\common\utils.py:306 msgid "[Code Removed]" msgstr "[Código Removido]" -#: assistant\common\utils.py:409 +#: assistant\common\utils.py:457 +#, docstring +msgid "Substitute ``{key}`` placeholders in ``text`` from ``params``.\n\n" +" Uses ``str.replace`` rather than ``str.format`` so prompts containing\n" +" code blocks with curly braces don't raise ``KeyError``.\n" +" " +msgstr "" + +#: assistant\common\utils.py:478 +#, docstring +msgid "Stable, cache-safe prompt template variables.\n\n" +" These values do not change per-request and are safe to inject into the\n" +" `system_prompt` and `initial_prompt` without invalidating provider-side\n" +" prompt caching.\n\n" +" The `extras` dict is expected to only contain stable values (e.g. bank\n" +" type, currency, bank name). Per-user balances belong in\n" +" `get_dynamic_params()`.\n" +" " +msgstr "" + +#: assistant\common\utils.py:525 +#, docstring +msgid "Per-request prompt template variables that change frequently.\n\n" +" These values are kept separate from `get_base_params()` so callers can\n" +" choose to inject them into a trailing system-context block (preserving\n" +" prompt prefix stability for caching) rather than into the system/initial\n" +" prompts.\n\n" +" `dynamic_extras` may carry per-user dynamic values (such as the bank\n" +" balance) that need to be grouped with the other dynamic variables.\n\n" +" `last_interaction_seconds` is the elapsed time (in seconds) since the\n" +" user's previous message in the active conversation. Pass ``None`` if\n" +" this is the user's first message - the resulting value is the literal\n" +" string \"first message\".\n" +" " +msgstr "" + +#: assistant\common\utils.py:601 +#, docstring +msgid "Combined stable + dynamic prompt template variables.\n\n" +" Convenience helper that merges `get_base_params()` with\n" +" `get_dynamic_params()` for callers that don't care about cache-safe\n" +" separation. Cache-aware code paths should call the two split helpers\n" +" directly.\n" +" " +msgstr "" + +#: assistant\common\utils.py:645 #, docstring msgid "Make sure that if a conversation payload contains images that the model supports vision" msgstr "" -#: assistant\common\utils.py:429 +#: assistant\common\utils.py:665 #, docstring msgid "Remove all images sourced from URLs from the message payload" msgstr "" -#: assistant\common\utils.py:449 +#: assistant\common\utils.py:685 #, docstring msgid "Remove invisible Unicode characters that AI detectors might flag.\n\n" " Returns: (cleaned_text, was_modified)\n" " " msgstr "" -#: assistant\common\utils.py:479 +#: assistant\common\utils.py:715 #, docstring msgid "Clean the model response since its stupid and breaks itself\n\n" " Example\n" @@ -524,12 +624,12 @@ msgid "Clean the model response since its stupid and breaks itself\n\n" " " msgstr "" -#: assistant\common\utils.py:531 +#: assistant\common\utils.py:767 #, docstring msgid "Same as clean_response but cleans the whole message payload" msgstr "" -#: assistant\common\utils.py:546 +#: assistant\common\utils.py:782 #, docstring msgid "\n" " Ensure all tool calls satisfy schema requirements, modifying the messages payload in-place.\n\n" @@ -570,17 +670,17 @@ msgid "\n" " " msgstr "" -#: assistant\common\utils.py:650 +#: assistant\common\utils.py:886 #, docstring msgid "Check if a file is a supported document type" msgstr "" -#: assistant\common\utils.py:655 +#: assistant\common\utils.py:891 #, docstring msgid "Get the lowercase file extension from a filename" msgstr "" -#: assistant\common\utils.py:662 +#: assistant\common\utils.py:898 #, docstring msgid "Extract text content from PDF, Word, or Excel files\n\n" " Args:\n" @@ -591,17 +691,17 @@ msgid "Extract text content from PDF, Word, or Excel files\n\n" " " msgstr "" -#: assistant\common\utils.py:688 +#: assistant\common\utils.py:924 #, docstring msgid "Extract text from PDF files using PyMuPDF" msgstr "" -#: assistant\common\utils.py:726 +#: assistant\common\utils.py:962 #, docstring msgid "Extract text from Word documents using pypandoc" msgstr "" -#: assistant\common\utils.py:747 +#: assistant\common\utils.py:983 #, docstring msgid "Extract text from Excel files using pandas" msgstr "" From 27d325a5b809880bdce55a10bd91a7c7b6802799 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Mon, 1 Jun 2026 11:11:11 -0400 Subject: [PATCH 066/104] New translations messages.pot (Portuguese) [ci skip] --- assistant/locales/pt-PT.po | 457 +++++++++++++++++++++++++++++++------ 1 file changed, 390 insertions(+), 67 deletions(-) diff --git a/assistant/locales/pt-PT.po b/assistant/locales/pt-PT.po index 753c543f3..0651fbf58 100644 --- a/assistant/locales/pt-PT.po +++ b/assistant/locales/pt-PT.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-07 02:57\n" +"POT-Creation-Date: 2026-06-01 09:46-0400\n" +"PO-Revision-Date: 2026-06-01 15:11\n" "Last-Translator: \n" "Language-Team: Portuguese\n" "MIME-Version: 1.0\n" @@ -17,40 +17,145 @@ msgstr "" "X-Crowdin-File-ID: 57\n" "Language: pt_PT\n" -#: assistant\views.py:46 +#: assistant\views.py:54 msgid "Custom" msgstr "" -#: assistant\views.py:58 +#: assistant\views.py:66 msgid "Set API Key" msgstr "" -#: assistant\views.py:60 +#: assistant\views.py:68 msgid "Enter your API Key below" msgstr "" -#: assistant\views.py:81 assistant\views.py:214 assistant\views.py:663 -#: assistant\views.py:905 +#: assistant\views.py:89 assistant\views.py:519 assistant\views.py:968 +#: assistant\views.py:1484 assistant\views.py:1974 assistant\views.py:2264 msgid "This isn't your menu!" msgstr "Este não é o vosso menu!" -#: assistant\views.py:104 +#: assistant\views.py:105 +msgid "Skip with feedback" +msgstr "" + +#: assistant\views.py:108 +msgid "Why are you skipping? (optional)" +msgstr "" + +#: assistant\views.py:130 msgid "This approval prompt isn't for you!" msgstr "" -#: assistant\views.py:145 +#: assistant\views.py:177 +msgid "Confirm: {}" +msgstr "" + +#: assistant\views.py:181 +msgid "Reason (blank = use AI's reason)" +msgstr "" + +#: assistant\views.py:204 +#, docstring +msgid "Dropdown of every action available on this server (built-ins + Ark/Notes)." +msgstr "" + +#: assistant\views.py:208 +msgid "Choose a different action…" +msgstr "" + +#: assistant\views.py:215 +#, docstring +msgid "Interactive staff panel proposing a moderation action suggested by the LLM." +msgstr "" + +#: assistant\views.py:245 +msgid "No reason provided." +msgstr "" + +#: assistant\views.py:268 +msgid "# 🧪 SIMULATION — dry run" +msgstr "" + +#: assistant\views.py:269 +msgid "-# Buttons take no real action; this is a test." +msgstr "" + +#: assistant\views.py:272 +msgid "# ⚠️ Proposed Moderation Action" +msgstr "" + +#: assistant\views.py:275 +msgid "**Suggested:** {emoji} {action} • **Severity:** {sev}" +msgstr "" + +#: assistant\views.py:282 +msgid "**User:** {mention} `{uid}`\n" +"**Message:** [jump to message]({url})\n" +"**Channel:** {channel}" +msgstr "" + +#: assistant\views.py:290 +msgid "-# Flagged for: {}" +msgstr "" + +#: assistant\views.py:292 +msgid "**Reason**\n" +"{}" +msgstr "" + +#: assistant\views.py:311 +msgid "**Context**\n" +"{}" +msgstr "" + +#: assistant\views.py:323 +msgid "{} (suggested)" +msgstr "" + +#: assistant\views.py:328 +msgid "No action" +msgstr "" + +#: assistant\views.py:354 assistant\views.py:378 +msgid "This panel was already resolved." +msgstr "" + +#: assistant\views.py:358 +msgid "You don't have permission to perform that action." +msgstr "" + +#: assistant\views.py:364 +msgid "✅ Dismissed — no action taken.\n" +"-# By {}" +msgstr "" + +#: assistant\views.py:383 +msgid "{outcome}\n" +"-# Action by {user}" +msgstr "" + +#: assistant\views.py:389 +msgid "🧪 (dry-run) Would **{action}** {target}.\n" +"-# {reason}" +msgstr "" + +#: assistant\views.py:434 +msgid "⏱️ Auto-action on timeout: {}" +msgstr "" + +#: assistant\views.py:450 msgid "Entry name" msgstr "Nome da entrada" -#: assistant\views.py:153 +#: assistant\views.py:458 msgid "Training context" msgstr "Contexto de treinamento" -#: assistant\views.py:172 +#: assistant\views.py:477 msgid "Search Query" msgstr "Consulta de pesquisa" -#: assistant\views.py:264 +#: assistant\views.py:569 msgid "Failed to process embedding `{}`\n" "Content: ```\n" "{}\n" @@ -60,229 +165,447 @@ msgstr "Falha ao processar a incorporação `{}`\n" "{}\n" "```" -#: assistant\views.py:266 +#: assistant\views.py:571 msgid "An embedding with the name `{}` already exists!" msgstr "Já existe uma incorporação com o nome `{}`!" -#: assistant\views.py:271 +#: assistant\views.py:576 msgid "Your embedding labeled `{}` has been processed!" msgstr "A sua incorporação com a etiqueta `{}` foi processada!" -#: assistant\views.py:282 +#: assistant\views.py:587 msgid "No embeddings to inspect!" msgstr "Não há embeddings para inspecionar!" -#: assistant\views.py:287 +#: assistant\views.py:592 msgid "Embedding not found!" msgstr "" -#: assistant\views.py:305 +#: assistant\views.py:610 msgid "No embeddings to edit!" msgstr "Não há embeddings para editar!" -#: assistant\views.py:317 +#: assistant\views.py:622 msgid "Failed to edit that embedding, please try again later" msgstr "Falha ao editar essa incorporação, por favor tente novamente mais tarde" -#: assistant\views.py:324 +#: assistant\views.py:629 msgid "Your embedding has been modified!" msgstr "A sua incorporação foi modificada!" -#: assistant\views.py:364 +#: assistant\views.py:669 msgid "Add an embedding" msgstr "Adicionar uma incorporação" -#: assistant\views.py:370 +#: assistant\views.py:675 msgid "Your embedding is processing and will appear when ready!" msgstr "A sua incorporação está a ser processada e aparecerá quando estiver pronta!" -#: assistant\views.py:386 +#: assistant\views.py:691 msgid "No embeddings to delete!" msgstr "Não há incorporações para excluir!" -#: assistant\views.py:388 +#: assistant\views.py:693 msgid "Deleted `{}` embedding." msgstr "Eliminada a incorporação `{}`." -#: assistant\views.py:414 +#: assistant\views.py:719 msgid "No embeddings to search!" msgstr "Não há embeddings para pesquisar!" -#: assistant\views.py:415 +#: assistant\views.py:720 msgid "Search for an embedding" msgstr "Procurar uma incorporação" -#: assistant\views.py:437 +#: assistant\views.py:742 msgid "Search result: **{}**" msgstr "Resultado da pesquisa: **{}**" -#: assistant\views.py:474 +#: assistant\views.py:779 msgid "Function Edit" msgstr "Função Editar" -#: assistant\views.py:483 +#: assistant\views.py:788 msgid "JSON Schema" msgstr "Esquema JSON" -#: assistant\views.py:489 +#: assistant\views.py:794 msgid "Code" msgstr "Código" -#: assistant\views.py:495 +#: assistant\views.py:800 msgid "Permission Level" msgstr "" -#: assistant\views.py:496 +#: assistant\views.py:801 msgid "User, Mod, Admin, or Owner" msgstr "" -#: assistant\views.py:502 +#: assistant\views.py:807 msgid "Required Discord Permissions" msgstr "" -#: assistant\views.py:503 +#: assistant\views.py:808 msgid "e.g. manage_messages, kick_members (comma-separated, or leave blank)" msgstr "" -#: assistant\views.py:510 +#: assistant\views.py:815 msgid "Category" msgstr "" -#: assistant\views.py:511 +#: assistant\views.py:816 msgid "memory, web, utility" msgstr "" -#: assistant\views.py:523 +#: assistant\views.py:828 msgid "Invalid permission level, must be one of `User`, `Mod`, `Admin`, or `Owner`" msgstr "" -#: assistant\views.py:536 +#: assistant\views.py:841 msgid "Invalid Discord permission names: {}" msgstr "" -#: assistant\views.py:552 +#: assistant\views.py:857 assistant\views.py:1865 msgid "Toggle" msgstr "" -#: assistant\views.py:582 +#: assistant\views.py:887 msgid "Choose tools for {} ({}/{})..." msgstr "" -#: assistant\views.py:588 +#: assistant\views.py:893 msgid "Choose tools for {}..." msgstr "" -#: assistant\views.py:593 +#: assistant\views.py:898 msgid "No tools available" msgstr "" -#: assistant\views.py:606 +#: assistant\views.py:911 assistant\views.py:1387 assistant\views.py:1916 msgid "Prev" msgstr "" -#: assistant\views.py:615 +#: assistant\views.py:920 assistant\views.py:1396 assistant\views.py:1925 msgid "Next" msgstr "" -#: assistant\views.py:623 +#: assistant\views.py:928 assistant\views.py:1420 assistant\views.py:1933 msgid "Close" msgstr "" -#: assistant\views.py:718 +#: assistant\views.py:1023 msgid "{} {}/{} enabled • {} categories • Page {}/{}" msgstr "" -#: assistant\views.py:839 assistant\views.py:859 +#: assistant\views.py:1144 assistant\views.py:1164 assistant\views.py:2200 msgid "That category no longer exists." msgstr "" -#: assistant\views.py:1014 +#: assistant\views.py:1199 +#, docstring +msgid "Split a model id into (provider, short_name).\n\n" +" For ids like ``openai/gpt-4-turbo`` returns ``(\"openai\", \"gpt-4-turbo\")``.\n" +" For ids with no slash returns ``(PROVIDER_OTHER, model_id)``.\n" +" " +msgstr "" + +#: assistant\views.py:1214 +#, docstring +msgid "Group endpoint model ids by their provider prefix.\n\n" +" Returns an ordered dict: providers sorted alphabetically (``other`` last),\n" +" each value is the list of full model ids sorted by short name.\n" +" " +msgstr "" + +#: assistant\views.py:1235 +msgid "Other" +msgstr "" + +#: assistant\views.py:1265 +msgid "Pick a model from {} ({}/{})..." +msgstr "" + +#: assistant\views.py:1271 +msgid "Pick a model from {}..." +msgstr "" + +#: assistant\views.py:1276 +msgid "No models" +msgstr "" + +#: assistant\views.py:1295 +msgid "Enter Model ID" +msgstr "" + +#: assistant\views.py:1298 +msgid "Model ID" +msgstr "" + +#: assistant\views.py:1299 +msgid "e.g. openrouter/auto, openai/gpt-4o, anthropic/claude-3-opus" +msgstr "" + +#: assistant\views.py:1315 +msgid "Search Models" +msgstr "" + +#: assistant\views.py:1318 +msgid "Filter" +msgstr "" + +#: assistant\views.py:1319 +msgid "e.g. claude, gpt-4, mistral" +msgstr "" + +#: assistant\views.py:1335 +msgid "Model Slug Suffix" +msgstr "" + +#: assistant\views.py:1338 assistant\views.py:1360 +msgid "Suffix" +msgstr "" + +#: assistant\views.py:1339 +msgid ":nitro (throughput) :floor (price) :extended (blank = remove)" +msgstr "" + +#: assistant\views.py:1356 +msgid "Search" +msgstr "" + +#: assistant\views.py:1365 +msgid "Clear search" +msgstr "" + +#: assistant\views.py:1405 +msgid "Manual entry" +msgstr "" + +#: assistant\views.py:1413 +msgid "Re-probe" +msgstr "" + +#: assistant\views.py:1445 +#, docstring +msgid "Endpoint model picker grouped by provider prefix." +msgstr "" + +#: assistant\views.py:1532 +msgid "Chat model" +msgstr "" + +#: assistant\views.py:1532 +msgid "Embedding model" +msgstr "" + +#: assistant\views.py:1540 +msgid "# 🤖 {} picker" +msgstr "" + +#: assistant\views.py:1541 +msgid "-# Endpoint: `{}`" +msgstr "" + +#: assistant\views.py:1542 +msgid "Current: **{}**" +msgstr "" + +#: assistant\views.py:1542 assistant\views.py:1760 +msgid "(none)" +msgstr "" + +#: assistant\views.py:1545 +msgid "No models were discovered from this endpoint. Try **Re-probe** or use **Manual entry** to type a model id. Router endpoints like OpenRouter accept aliases such as `{}` or `{}`." +msgstr "" + +#: assistant\views.py:1565 +msgid "-# Search: `{}` • {} result(s)" +msgstr "" + +#: assistant\views.py:1568 +msgid "{} models across {} providers • Page {}/{}" +msgstr "" + +#: assistant\views.py:1577 +msgid "-# Tip: router endpoints accept aliases like `{}` or `{}` via **Manual entry**." +msgstr "" + +#: assistant\views.py:1687 assistant\views.py:1703 +msgid "{} set to **{}**" +msgstr "" + +#: assistant\views.py:1743 +msgid "Invalid suffix `{}`. Valid: {}." +msgstr "" + +#: assistant\views.py:1762 +msgid "Model set to **{}** (suffix: {})" +msgstr "" + +#: assistant\views.py:1784 +#, docstring +msgid "Return on/off/mixed for a trailing-block category.\n\n" +" Inclusion defaults to **off** for every variable on a fresh install.\n" +" " +msgstr "" + +#: assistant\views.py:1801 +#, docstring +msgid "Return every category eligible for the trailing-context-block menu.\n\n" +" Output: ``{category_key: {\"label\": str, \"variables\": [str, ...]}}``.\n\n" +" Inclusion in the floating block is fully admin-controlled - there is\n" +" no implicit default. On a fresh install everything is OFF (blank\n" +" slate). Admins opt variables in one at a time via the floatingcontext\n" +" menu.\n" +" " +msgstr "" + +#: assistant\views.py:1847 +#, docstring +msgid "Return a short human-readable description for a context variable." +msgstr "" + +#: assistant\views.py:1900 +msgid "Toggle individual vars in {}..." +msgstr "" + +#: assistant\views.py:1903 +msgid "No variables" +msgstr "" + +#: assistant\views.py:1993 +#, docstring +msgid "Return formatted warning lines for prompts containing dynamic vars." +msgstr "" + +#: assistant\views.py:2003 +msgid "**System prompt** - `{}`" +msgstr "" + +#: assistant\views.py:2006 +msgid "**Initial prompt** - `{}`" +msgstr "" + +#: assistant\views.py:2011 +msgid "<#{}> - `{}`" +msgstr "" + +#: assistant\views.py:2015 +#, docstring +msgid "Build a mapping of variable name → description for 3rd-party vars." +msgstr "" + +#: assistant\views.py:2049 +msgid "Toggle which variables are included in the trailing `[Current Context]` system message that the bot appends after conversation history. Everything is OFF by default - opt variables in one at a time. Variables you toggle on are rendered as self-encapsulated sentences (e.g. `\"The current date is May 16, 2026.\"`), so you do not need to author a prompt that references them." +msgstr "" + +#: assistant\views.py:2060 +msgid "{} {}/{} variables in block • {} categories • Page {}/{}" +msgstr "" + +#: assistant\views.py:2088 +msgid "(no variables)" +msgstr "" + +#: assistant\views.py:2104 +msgid "## ⚠️ Cache Warning" +msgstr "" + +#: assistant\views.py:2107 +msgid "These prompts contain dynamic variable placeholders that are substituted inline, which busts provider-side prompt-prefix caching on every request:" +msgstr "" + +#: assistant\views.py:2117 +msgid "Tip: remove the placeholder from your prompt and toggle the variable on in the menu above instead - the bot will append the value to the floating context block automatically." +msgstr "" + +#: assistant\views.py:2373 msgid "No code to inspect!" msgstr "Não há código para inspecionar!" -#: assistant\views.py:1038 +#: assistant\views.py:2397 msgid "Here are your custom functions" msgstr "Aqui estão suas funções personalizadas" -#: assistant\views.py:1043 +#: assistant\views.py:2402 msgid "Reply to this message with the json schema for your function\n" "- [Example Functions](https://github.com/vertyco/vrt-cogs/tree/main/assistant/example-funcs)" msgstr "Responda a esta mensagem com o esquema json para a sua função\n" "- [Exemplo de Funções](https://github.com/vertyco/vrt-cogs/tree/main/assistant/example-funcs)" -#: assistant\views.py:1064 assistant\views.py:1142 +#: assistant\views.py:2423 assistant\views.py:2501 msgid "SchemaError\n" "{}" msgstr "Erro de Esquema {}" -#: assistant\views.py:1066 assistant\views.py:1144 +#: assistant\views.py:2425 assistant\views.py:2503 msgid "Empty schema!" msgstr "Esquema vazio!" -#: assistant\views.py:1069 assistant\views.py:1147 +#: assistant\views.py:2428 assistant\views.py:2506 msgid "Invalid schema!\n" "**Missing**\n" "{}" msgstr "Esquema inválido!\n" "**Falta** {}" -#: assistant\views.py:1073 +#: assistant\views.py:2432 msgid "Reply to this message with the custom code" msgstr "Responder a esta mensagem com o código personalizado" -#: assistant\views.py:1088 assistant\views.py:1153 +#: assistant\views.py:2447 assistant\views.py:2512 msgid "Invalid function" msgstr "Função inválida" -#: assistant\views.py:1092 +#: assistant\views.py:2451 msgid "`{}` has been overwritten!" msgstr "`{}` foi substituído!" -#: assistant\views.py:1094 +#: assistant\views.py:2453 msgid "`{}` has been created!" msgstr "`{}` foi criado!" -#: assistant\views.py:1105 +#: assistant\views.py:2464 msgid "No code to edit!" msgstr "Não há código para editar!" -#: assistant\views.py:1113 assistant\views.py:1185 +#: assistant\views.py:2472 assistant\views.py:2544 msgid "Could not find function!" msgstr "Não foi possível encontrar a função!" -#: assistant\views.py:1115 +#: assistant\views.py:2474 msgid "This function is managed by the `{}` cog and cannot be edited" msgstr "Esta função é gerida pela engrenagem `{}` e não pode ser editada" -#: assistant\views.py:1121 +#: assistant\views.py:2480 msgid "The json schema for this function is too long, you'll need to re-upload it to modify" msgstr "O esquema json para esta função é muito longo, você precisará fazer o upload novamente para modificá-lo" -#: assistant\views.py:1126 +#: assistant\views.py:2485 msgid "The code for this function is too long, you'll need to re-upload it to modify" msgstr "O código para esta função é muito longo, você precisará fazer o upload novamente para modificá-lo" -#: assistant\views.py:1170 +#: assistant\views.py:2529 msgid "`{}` function updated!" msgstr "função `{}` atualizada!" -#: assistant\views.py:1178 +#: assistant\views.py:2537 msgid "No code to delete!" msgstr "Nenhum código para excluir!" -#: assistant\views.py:1187 +#: assistant\views.py:2546 msgid "This function is managed by the `{}` cog and cannot be deleted" msgstr "Esta função é gerida pela engrenagem `{}` e não pode ser eliminada" -#: assistant\views.py:1194 +#: assistant\views.py:2553 msgid "`{}` has been deleted!" msgstr "`{}` foi eliminado!" -#: assistant\views.py:1201 +#: assistant\views.py:2560 msgid "No code to toggle!" msgstr "Sem código para alternar!" -#: assistant\views.py:1215 +#: assistant\views.py:2574 msgid "Search for a function" msgstr "" From 2bf64dbf5c8b25a4968515f9ceb8b2067324e14e Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Mon, 1 Jun 2026 11:11:13 -0400 Subject: [PATCH 067/104] New translations messages.pot (Russian) [ci skip] --- assistant/common/locales/ru-RU.po | 344 +++++++++++++++++++----------- 1 file changed, 222 insertions(+), 122 deletions(-) diff --git a/assistant/common/locales/ru-RU.po b/assistant/common/locales/ru-RU.po index 395739d16..c57103f52 100644 --- a/assistant/common/locales/ru-RU.po +++ b/assistant/common/locales/ru-RU.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-07 03:00\n" +"POT-Creation-Date: 2026-06-01 09:46-0400\n" +"PO-Revision-Date: 2026-06-01 15:11\n" "Last-Translator: \n" "Language-Team: Russian\n" "MIME-Version: 1.0\n" @@ -17,190 +17,226 @@ msgstr "" "X-Crowdin-File-ID: 55\n" "Language: ru_RU\n" -#: assistant\common\api.py:110 assistant\common\api.py:111 -#: assistant\common\api.py:120 assistant\common\api.py:121 -#: assistant\common\api.py:122 assistant\common\api.py:126 -#: assistant\common\chat.py:319 +#: assistant\common\api.py:75 +#, docstring +msgid "Return the effective endpoint URL for a guild (chat and embeddings).\n\n" +" Priority:\n" +" 1. Guild-specific endpoint override\n" +" 2. Global endpoint override\n" +" 3. None (use OpenAI)\n" +" " +msgstr "" + +#: assistant\common\api.py:87 +#, docstring +msgid "Return cached endpoint profile for the effective endpoint.\n\n" +" If ``conf`` is provided, checks the guild-specific profile first,\n" +" then falls back to the global profile.\n" +" " +msgstr "" + +#: assistant\common\api.py:188 assistant\common\api.py:189 +#: assistant\common\api.py:198 assistant\common\api.py:199 +#: assistant\common\api.py:200 assistant\common\api.py:204 +#: assistant\common\chat.py:398 msgid "Unknown" msgstr "" -#: assistant\common\api.py:117 +#: assistant\common\api.py:195 msgid "`Provider: `{}" msgstr "" -#: assistant\common\api.py:118 +#: assistant\common\api.py:196 msgid "`Runtime Chat Model: `{}" msgstr "" -#: assistant\common\api.py:119 +#: assistant\common\api.py:197 msgid "`Runtime Embed Model:`{}" msgstr "" -#: assistant\common\api.py:120 +#: assistant\common\api.py:198 msgid "`Vision: `{}" msgstr "" -#: assistant\common\api.py:121 +#: assistant\common\api.py:199 msgid "`Reasoning: `{}" msgstr "" -#: assistant\common\api.py:122 +#: assistant\common\api.py:200 msgid "`Max Context: `{}" msgstr "" -#: assistant\common\api.py:123 +#: assistant\common\api.py:201 msgid "`Embed Dimensions: `{}" msgstr "" -#: assistant\common\api.py:128 +#: assistant\common\api.py:206 msgid "`Models Discovered: `{}" msgstr "" -#: assistant\common\api.py:395 +#: assistant\common\api.py:601 msgid "Failed to fetch: {}" msgstr "" -#: assistant\common\api.py:659 +#: assistant\common\api.py:913 #, docstring msgid "Get token list from text" msgstr "" -#: assistant\common\api.py:691 +#: assistant\common\api.py:946 msgid "No model API key or endpoint override is configured!\n" msgstr "" -#: assistant\common\api.py:693 +#: assistant\common\api.py:948 msgid "- Set this server's API key with `{}`\n" msgstr "" -#: assistant\common\api.py:699 +#: assistant\common\api.py:954 #, docstring msgid "Re-embed all entries using the current embedding model.\n\n" " Handles dimension mismatches by recreating the collection.\n" " " msgstr "" -#: assistant\common\api.py:801 +#: assistant\common\api.py:1057 #, docstring msgid "Get text from token list" msgstr "" -#: assistant\common\api.py:828 +#: assistant\common\api.py:1085 #, docstring msgid "Summarize older messages via LLM, falling back to degrade_conversation on failure" msgstr "" -#: assistant\common\api.py:934 +#: assistant\common\api.py:1185 #, docstring msgid "Walk backward from target_idx to avoid splitting tool-call/result pairs" msgstr "" -#: assistant\common\api.py:952 +#: assistant\common\api.py:1203 #, docstring msgid "Convert message dicts to a plain-text transcript for summarization" msgstr "" -#: assistant\common\api.py:998 +#: assistant\common\api.py:1249 #, docstring msgid "Last-resort fallback: remove oldest messages to fit within token limit" msgstr "" -#: assistant\common\api.py:1015 +#: assistant\common\api.py:1266 #, docstring msgid "Remove the oldest message of the given role plus its paired tool results." msgstr "" -#: assistant\common\api.py:1098 +#: assistant\common\api.py:1349 #, docstring msgid "Pagify a long string by tokens rather than characters" msgstr "" -#: assistant\common\api.py:1169 +#: assistant\common\api.py:1421 msgid "Custom Functions" msgstr "" -#: assistant\common\api.py:1179 +#: assistant\common\api.py:1431 msgid "Internal Function" msgstr "" -#: assistant\common\api.py:1180 +#: assistant\common\api.py:1432 msgid "This is a built-in function managed by the Assistant cog" msgstr "" -#: assistant\common\api.py:1185 +#: assistant\common\api.py:1437 msgid "3rd Party" msgstr "" -#: assistant\common\api.py:1186 +#: assistant\common\api.py:1438 msgid "This function is managed by the `{}` cog" msgstr "" -#: assistant\common\api.py:1189 +#: assistant\common\api.py:1441 msgid "Category" msgstr "" -#: assistant\common\api.py:1191 +#: assistant\common\api.py:1443 msgid "Status" msgstr "" -#: assistant\common\api.py:1192 +#: assistant\common\api.py:1444 msgid "{} {}" msgstr "" -#: assistant\common\api.py:1192 +#: assistant\common\api.py:1444 msgid "Enabled" msgstr "" -#: assistant\common\api.py:1192 +#: assistant\common\api.py:1444 msgid "Disabled" msgstr "" -#: assistant\common\api.py:1198 +#: assistant\common\api.py:1450 msgid "This function consumes `{}` input tokens each call\n" msgstr "" -#: assistant\common\api.py:1213 +#: assistant\common\api.py:1465 msgid "Hidden..." msgstr "" -#: assistant\common\api.py:1217 +#: assistant\common\api.py:1469 msgid "\n" "Required: {}" msgstr "" -#: assistant\common\api.py:1218 +#: assistant\common\api.py:1470 msgid "Permission Level" msgstr "" -#: assistant\common\api.py:1219 +#: assistant\common\api.py:1471 msgid "Schema" msgstr "" -#: assistant\common\api.py:1220 +#: assistant\common\api.py:1472 msgid "Code" msgstr "" -#: assistant\common\api.py:1222 assistant\common\api.py:1253 +#: assistant\common\api.py:1474 assistant\common\api.py:1505 msgid "Page {}/{}" msgstr "" -#: assistant\common\api.py:1229 +#: assistant\common\api.py:1481 msgid "No custom code has been added yet!" msgstr "" -#: assistant\common\api.py:1241 +#: assistant\common\api.py:1493 msgid "No embeddings have been created yet!" msgstr "" -#: assistant\common\api.py:1252 +#: assistant\common\api.py:1504 msgid "Embeddings" msgstr "" -#: assistant\common\api.py:1293 +#: assistant\common\api.py:1545 msgid "No embeddings have been added!" msgstr "" -#: assistant\common\chat.py:138 +#: assistant\common\chat.py:141 +#, docstring +msgid "Build the ``[Current Context]`` floating context block.\n\n" +" Rendered into a trailing payload-only user message that the bot sends\n" +" after conversation history. Because that message rides after the\n" +" cached prefix, placing dynamic (per-request) values here keeps the\n" +" cached prompt prefix stable so provider-side prompt caching remains\n" +" effective.\n\n" +" Variables admins have opted to include (via ``[p]floatingcontext``)\n" +" are rendered as self-encapsulated narrative sentences (e.g.\n" +" ``\"The current date is May 16, 2026.\"``) so admins do not need to\n" +" reference the variable in their prompt - toggling it on is enough for\n" +" the model to receive the value.\n\n" +" Returns the formatted block string, or an empty string if no values are\n" +" present.\n" +" " +msgstr "" + +#: assistant\common\chat.py:217 #, docstring msgid "Two-tier pruning of old tool/function results to save context window space.\n\n" " Tier 1 (soft-trim): when *context_fill_ratio* >= ``TOOL_RESULT_SOFT_RATIO``,\n" @@ -212,7 +248,7 @@ msgid "Two-tier pruning of old tool/function results to save context window spac " " msgstr "" -#: assistant\common\chat.py:182 +#: assistant\common\chat.py:261 #, docstring msgid "Remove images from messages once the model has responded enough times.\n\n" " Images are the most token-expensive content in a conversation (easily\n" @@ -226,7 +262,7 @@ msgid "Remove images from messages once the model has responded enough times.\n\ " " msgstr "" -#: assistant\common\chat.py:239 +#: assistant\common\chat.py:318 #, docstring msgid "Cap individual tool results to a fraction of the context window.\n\n" " Prevents a single massive tool result from crowding out everything else.\n" @@ -235,121 +271,130 @@ msgid "Cap individual tool results to a fraction of the context window.\n\n" " " msgstr "" -#: assistant\common\chat.py:265 +#: assistant\common\chat.py:344 #, docstring msgid "Filter kwargs for callables that do not accept arbitrary keyword args." msgstr "" -#: assistant\common\chat.py:285 +#: assistant\common\chat.py:364 #, docstring msgid "Return AllowedMentions allowing role/user pings for privileged members" msgstr "" -#: assistant\common\chat.py:314 +#: assistant\common\chat.py:393 msgid "Execution of admin tool `{}` requires interactive approval, but no interactive message context was available." msgstr "" -#: assistant\common\chat.py:325 +#: assistant\common\chat.py:402 msgid "`{}` wants to run admin tool `{}` from `{}` ({})\n" -"Choose `Approve Once`, `Allow This Session`, or `Skip`." +"Choose `Approve Once`, `Allow This Session`, `Skip`, or `Skip With Feedback`." msgstr "" -#: assistant\common\chat.py:340 +#: assistant\common\chat.py:413 assistant\common\chat.py:439 msgid "Approved once." msgstr "" -#: assistant\common\chat.py:341 +#: assistant\common\chat.py:414 assistant\common\chat.py:440 msgid "Approved for this session." msgstr "" -#: assistant\common\chat.py:342 +#: assistant\common\chat.py:415 assistant\common\chat.py:441 msgid "Skipped." msgstr "" -#: assistant\common\chat.py:343 +#: assistant\common\chat.py:416 assistant\common\chat.py:443 msgid "Approval timed out." msgstr "" -#: assistant\common\chat.py:355 +#: assistant\common\chat.py:442 +msgid "Skipped with feedback." +msgstr "" + +#: assistant\common\chat.py:456 msgid "SKIPPED: Approval for admin tool `{}` timed out. Do not claim it ran. Continue without it, ask again later, or try a different tool." msgstr "" -#: assistant\common\chat.py:360 +#: assistant\common\chat.py:461 msgid "SKIPPED: The user skipped admin tool `{}` for this call. Do not claim it ran. You may continue without it, ask for approval again later, or try a different tool." msgstr "" -#: assistant\common\chat.py:560 +#: assistant\common\chat.py:465 +msgid "\n\n" +"The user's feedback on why they skipped: {}" +msgstr "" + +#: assistant\common\chat.py:663 msgid "No message history!" msgstr "" -#: assistant\common\chat.py:582 assistant\common\chat.py:585 -#: assistant\common\chat.py:587 +#: assistant\common\chat.py:685 assistant\common\chat.py:688 +#: assistant\common\chat.py:690 msgid "Internal Server Error({}): {}" msgstr "" -#: assistant\common\chat.py:589 +#: assistant\common\chat.py:692 msgid "Failed to communicate with API!" msgstr "" -#: assistant\common\chat.py:593 +#: assistant\common\chat.py:696 msgid "Invalid API key, please set a new valid key!" msgstr "" -#: assistant\common\chat.py:595 +#: assistant\common\chat.py:698 msgid "Uh oh, looks like my API key is invalid!" msgstr "" -#: assistant\common\chat.py:597 +#: assistant\common\chat.py:700 msgid "Rate limit error: {}" msgstr "" -#: assistant\common\chat.py:599 +#: assistant\common\chat.py:702 msgid "Read timeout error: {}" msgstr "" -#: assistant\common\chat.py:605 +#: assistant\common\chat.py:711 msgid "Uh oh, something went wrong! Bot owner can use `{}` to view the error." msgstr "" -#: assistant\common\chat.py:608 +#: assistant\common\chat.py:714 msgid "API Status: {}" msgstr "" -#: assistant\common\chat.py:643 +#: assistant\common\chat.py:749 msgid "No results found" msgstr "" -#: assistant\common\chat.py:685 +#: assistant\common\chat.py:791 #, docstring msgid "Call the API asynchronously" msgstr "" -#: assistant\common\chat.py:803 +#: assistant\common\chat.py:909 msgid "None" msgstr "" -#: assistant\common\chat.py:911 +#: assistant\common\chat.py:1027 msgid "Request timed out, please try again." msgstr "" -#: assistant\common\chat.py:922 +#: assistant\common\chat.py:1044 msgid "Bad Request Error2({}): {}" msgstr "" -#: assistant\common\chat.py:924 +#: assistant\common\chat.py:1046 msgid "Bad Request Error({}): {}" msgstr "" -#: assistant\common\chat.py:1109 assistant\common\chat.py:1166 -#: assistant\common\chat.py:1199 +#: assistant\common\chat.py:1288 assistant\common\chat.py:1345 +#: assistant\common\chat.py:1378 msgid "Result sent!" msgstr "" -#: assistant\common\chat.py:1235 +#: assistant\common\chat.py:1414 msgid "Response failed due to invalid regex, check logs for more info." msgstr "" -#: assistant\common\chat.py:1278 +#: assistant\common\chat.py:1457 #, docstring msgid "Prepare content for calling the GPT API\n\n" " Args:\n" @@ -370,85 +415,94 @@ msgid "Prepare content for calling the GPT API\n\n" " " msgstr "" -#: assistant\common\chat.py:1386 +#: assistant\common\utils.py:29 #, docstring -msgid "Instead of format(**params) possibly giving a KeyError if prompt has code in it" +msgid "Translate a simple wildcard trigger phrase into a SAFE, linear regex string.\n\n" +" Only ``*`` (any run of characters, including none) is honored as a metacharacter;\n" +" everything else is escaped via ``re.escape``. This means staff of a public bot can\n" +" paste arbitrary text — including real regex like ``(a+)+`` — and it can never inject\n" +" catastrophic backtracking (ReDoS): the output contains only literals, ``.*`` and ``\\b``,\n" +" which the engine matches in linear time, so no multiprocessing timeout guard is needed.\n\n" +" A phrase with no leading/trailing ``*`` is anchored on word boundaries, so ``idiot``\n" +" hits the whole word ``idiot`` but not ``idiotic``. Add ``*`` to loosen it:\n" +" ``idiot*`` (prefix), ``*idiot`` (suffix), ``*idiot*`` (substring anywhere).\n" +" " msgstr "" -#: assistant\common\utils.py:28 assistant\common\utils.py:82 +#: assistant\common\utils.py:51 assistant\common\utils.py:105 msgid "Playing" msgstr "" -#: assistant\common\utils.py:29 assistant\common\utils.py:75 +#: assistant\common\utils.py:52 assistant\common\utils.py:98 msgid "Streaming" msgstr "" -#: assistant\common\utils.py:30 +#: assistant\common\utils.py:53 msgid "Listening" msgstr "" -#: assistant\common\utils.py:31 +#: assistant\common\utils.py:54 msgid "Watching" msgstr "" -#: assistant\common\utils.py:32 assistant\common\utils.py:67 +#: assistant\common\utils.py:55 assistant\common\utils.py:90 msgid "Custom status" msgstr "" -#: assistant\common\utils.py:33 +#: assistant\common\utils.py:56 msgid "Competing" msgstr "" -#: assistant\common\utils.py:38 +#: assistant\common\utils.py:61 msgid "Activity" msgstr "" -#: assistant\common\utils.py:55 +#: assistant\common\utils.py:78 msgid "Unknown track" msgstr "" -#: assistant\common\utils.py:56 +#: assistant\common\utils.py:79 msgid "Unknown artist" msgstr "" -#: assistant\common\utils.py:60 +#: assistant\common\utils.py:83 msgid "by {artist}" msgstr "" -#: assistant\common\utils.py:61 +#: assistant\common\utils.py:84 msgid "album: {album}" msgstr "" -#: assistant\common\utils.py:63 +#: assistant\common\utils.py:86 msgid "Listening to Spotify: {details}" msgstr "" -#: assistant\common\utils.py:67 +#: assistant\common\utils.py:90 msgid "Custom status: {status}" msgstr "" -#: assistant\common\utils.py:72 +#: assistant\common\utils.py:95 msgid "game: {game}" msgstr "" -#: assistant\common\utils.py:73 assistant\common\utils.py:80 -#: assistant\common\utils.py:91 +#: assistant\common\utils.py:96 assistant\common\utils.py:103 +#: assistant\common\utils.py:114 msgid "platform: {platform}" msgstr "" -#: assistant\common\utils.py:75 +#: assistant\common\utils.py:98 msgid "Streaming: {details}" msgstr "" -#: assistant\common\utils.py:82 +#: assistant\common\utils.py:105 msgid "Playing: {details}" msgstr "" -#: assistant\common\utils.py:92 +#: assistant\common\utils.py:115 msgid "buttons: {buttons}" msgstr "" -#: assistant\common\utils.py:181 +#: assistant\common\utils.py:204 #, docstring msgid "\n" " Cleans the function name to ensure it only contains alphanumeric characters,\n" @@ -460,53 +514,99 @@ msgid "\n" " " msgstr "" -#: assistant\common\utils.py:201 +#: assistant\common\utils.py:224 #, docstring msgid "Get all attachments from context" msgstr "" -#: assistant\common\utils.py:222 +#: assistant\common\utils.py:245 msgid "Canceled" msgstr "" -#: assistant\common\utils.py:235 +#: assistant\common\utils.py:258 msgid "You have been blacklisted from using this command!" msgstr "" -#: assistant\common\utils.py:239 +#: assistant\common\utils.py:262 msgid "You have a blacklisted role and cannot use this command!" msgstr "" -#: assistant\common\utils.py:243 +#: assistant\common\utils.py:266 msgid "You cannot use that command in this channel!" msgstr "" -#: assistant\common\utils.py:247 +#: assistant\common\utils.py:270 msgid "You cannot use that command in any channels under this category" msgstr "" -#: assistant\common\utils.py:282 assistant\common\utils.py:283 +#: assistant\common\utils.py:305 assistant\common\utils.py:306 msgid "[Code Removed]" msgstr "" -#: assistant\common\utils.py:409 +#: assistant\common\utils.py:457 +#, docstring +msgid "Substitute ``{key}`` placeholders in ``text`` from ``params``.\n\n" +" Uses ``str.replace`` rather than ``str.format`` so prompts containing\n" +" code blocks with curly braces don't raise ``KeyError``.\n" +" " +msgstr "" + +#: assistant\common\utils.py:478 +#, docstring +msgid "Stable, cache-safe prompt template variables.\n\n" +" These values do not change per-request and are safe to inject into the\n" +" `system_prompt` and `initial_prompt` without invalidating provider-side\n" +" prompt caching.\n\n" +" The `extras` dict is expected to only contain stable values (e.g. bank\n" +" type, currency, bank name). Per-user balances belong in\n" +" `get_dynamic_params()`.\n" +" " +msgstr "" + +#: assistant\common\utils.py:525 +#, docstring +msgid "Per-request prompt template variables that change frequently.\n\n" +" These values are kept separate from `get_base_params()` so callers can\n" +" choose to inject them into a trailing system-context block (preserving\n" +" prompt prefix stability for caching) rather than into the system/initial\n" +" prompts.\n\n" +" `dynamic_extras` may carry per-user dynamic values (such as the bank\n" +" balance) that need to be grouped with the other dynamic variables.\n\n" +" `last_interaction_seconds` is the elapsed time (in seconds) since the\n" +" user's previous message in the active conversation. Pass ``None`` if\n" +" this is the user's first message - the resulting value is the literal\n" +" string \"first message\".\n" +" " +msgstr "" + +#: assistant\common\utils.py:601 +#, docstring +msgid "Combined stable + dynamic prompt template variables.\n\n" +" Convenience helper that merges `get_base_params()` with\n" +" `get_dynamic_params()` for callers that don't care about cache-safe\n" +" separation. Cache-aware code paths should call the two split helpers\n" +" directly.\n" +" " +msgstr "" + +#: assistant\common\utils.py:645 #, docstring msgid "Make sure that if a conversation payload contains images that the model supports vision" msgstr "" -#: assistant\common\utils.py:429 +#: assistant\common\utils.py:665 #, docstring msgid "Remove all images sourced from URLs from the message payload" msgstr "" -#: assistant\common\utils.py:449 +#: assistant\common\utils.py:685 #, docstring msgid "Remove invisible Unicode characters that AI detectors might flag.\n\n" " Returns: (cleaned_text, was_modified)\n" " " msgstr "" -#: assistant\common\utils.py:479 +#: assistant\common\utils.py:715 #, docstring msgid "Clean the model response since its stupid and breaks itself\n\n" " Example\n" @@ -524,12 +624,12 @@ msgid "Clean the model response since its stupid and breaks itself\n\n" " " msgstr "" -#: assistant\common\utils.py:531 +#: assistant\common\utils.py:767 #, docstring msgid "Same as clean_response but cleans the whole message payload" msgstr "" -#: assistant\common\utils.py:546 +#: assistant\common\utils.py:782 #, docstring msgid "\n" " Ensure all tool calls satisfy schema requirements, modifying the messages payload in-place.\n\n" @@ -570,17 +670,17 @@ msgid "\n" " " msgstr "" -#: assistant\common\utils.py:650 +#: assistant\common\utils.py:886 #, docstring msgid "Check if a file is a supported document type" msgstr "" -#: assistant\common\utils.py:655 +#: assistant\common\utils.py:891 #, docstring msgid "Get the lowercase file extension from a filename" msgstr "" -#: assistant\common\utils.py:662 +#: assistant\common\utils.py:898 #, docstring msgid "Extract text content from PDF, Word, or Excel files\n\n" " Args:\n" @@ -591,17 +691,17 @@ msgid "Extract text content from PDF, Word, or Excel files\n\n" " " msgstr "" -#: assistant\common\utils.py:688 +#: assistant\common\utils.py:924 #, docstring msgid "Extract text from PDF files using PyMuPDF" msgstr "" -#: assistant\common\utils.py:726 +#: assistant\common\utils.py:962 #, docstring msgid "Extract text from Word documents using pypandoc" msgstr "" -#: assistant\common\utils.py:747 +#: assistant\common\utils.py:983 #, docstring msgid "Extract text from Excel files using pandas" msgstr "" From b20b05db1fcef535ef97056c796360f76041be73 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Mon, 1 Jun 2026 11:11:14 -0400 Subject: [PATCH 068/104] New translations messages.pot (Russian) [ci skip] --- assistant/locales/ru-RU.po | 457 +++++++++++++++++++++++++++++++------ 1 file changed, 390 insertions(+), 67 deletions(-) diff --git a/assistant/locales/ru-RU.po b/assistant/locales/ru-RU.po index 0fde4b31d..0dc87d0ed 100644 --- a/assistant/locales/ru-RU.po +++ b/assistant/locales/ru-RU.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-07 03:00\n" +"POT-Creation-Date: 2026-06-01 09:46-0400\n" +"PO-Revision-Date: 2026-06-01 15:11\n" "Last-Translator: \n" "Language-Team: Russian\n" "MIME-Version: 1.0\n" @@ -17,267 +17,590 @@ msgstr "" "X-Crowdin-File-ID: 57\n" "Language: ru_RU\n" -#: assistant\views.py:46 +#: assistant\views.py:54 msgid "Custom" msgstr "" -#: assistant\views.py:58 +#: assistant\views.py:66 msgid "Set API Key" msgstr "" -#: assistant\views.py:60 +#: assistant\views.py:68 msgid "Enter your API Key below" msgstr "" -#: assistant\views.py:81 assistant\views.py:214 assistant\views.py:663 -#: assistant\views.py:905 +#: assistant\views.py:89 assistant\views.py:519 assistant\views.py:968 +#: assistant\views.py:1484 assistant\views.py:1974 assistant\views.py:2264 msgid "This isn't your menu!" msgstr "" -#: assistant\views.py:104 +#: assistant\views.py:105 +msgid "Skip with feedback" +msgstr "" + +#: assistant\views.py:108 +msgid "Why are you skipping? (optional)" +msgstr "" + +#: assistant\views.py:130 msgid "This approval prompt isn't for you!" msgstr "" -#: assistant\views.py:145 +#: assistant\views.py:177 +msgid "Confirm: {}" +msgstr "" + +#: assistant\views.py:181 +msgid "Reason (blank = use AI's reason)" +msgstr "" + +#: assistant\views.py:204 +#, docstring +msgid "Dropdown of every action available on this server (built-ins + Ark/Notes)." +msgstr "" + +#: assistant\views.py:208 +msgid "Choose a different action…" +msgstr "" + +#: assistant\views.py:215 +#, docstring +msgid "Interactive staff panel proposing a moderation action suggested by the LLM." +msgstr "" + +#: assistant\views.py:245 +msgid "No reason provided." +msgstr "" + +#: assistant\views.py:268 +msgid "# 🧪 SIMULATION — dry run" +msgstr "" + +#: assistant\views.py:269 +msgid "-# Buttons take no real action; this is a test." +msgstr "" + +#: assistant\views.py:272 +msgid "# ⚠️ Proposed Moderation Action" +msgstr "" + +#: assistant\views.py:275 +msgid "**Suggested:** {emoji} {action} • **Severity:** {sev}" +msgstr "" + +#: assistant\views.py:282 +msgid "**User:** {mention} `{uid}`\n" +"**Message:** [jump to message]({url})\n" +"**Channel:** {channel}" +msgstr "" + +#: assistant\views.py:290 +msgid "-# Flagged for: {}" +msgstr "" + +#: assistant\views.py:292 +msgid "**Reason**\n" +"{}" +msgstr "" + +#: assistant\views.py:311 +msgid "**Context**\n" +"{}" +msgstr "" + +#: assistant\views.py:323 +msgid "{} (suggested)" +msgstr "" + +#: assistant\views.py:328 +msgid "No action" +msgstr "" + +#: assistant\views.py:354 assistant\views.py:378 +msgid "This panel was already resolved." +msgstr "" + +#: assistant\views.py:358 +msgid "You don't have permission to perform that action." +msgstr "" + +#: assistant\views.py:364 +msgid "✅ Dismissed — no action taken.\n" +"-# By {}" +msgstr "" + +#: assistant\views.py:383 +msgid "{outcome}\n" +"-# Action by {user}" +msgstr "" + +#: assistant\views.py:389 +msgid "🧪 (dry-run) Would **{action}** {target}.\n" +"-# {reason}" +msgstr "" + +#: assistant\views.py:434 +msgid "⏱️ Auto-action on timeout: {}" +msgstr "" + +#: assistant\views.py:450 msgid "Entry name" msgstr "" -#: assistant\views.py:153 +#: assistant\views.py:458 msgid "Training context" msgstr "" -#: assistant\views.py:172 +#: assistant\views.py:477 msgid "Search Query" msgstr "" -#: assistant\views.py:264 +#: assistant\views.py:569 msgid "Failed to process embedding `{}`\n" "Content: ```\n" "{}\n" "```" msgstr "" -#: assistant\views.py:266 +#: assistant\views.py:571 msgid "An embedding with the name `{}` already exists!" msgstr "" -#: assistant\views.py:271 +#: assistant\views.py:576 msgid "Your embedding labeled `{}` has been processed!" msgstr "" -#: assistant\views.py:282 +#: assistant\views.py:587 msgid "No embeddings to inspect!" msgstr "" -#: assistant\views.py:287 +#: assistant\views.py:592 msgid "Embedding not found!" msgstr "" -#: assistant\views.py:305 +#: assistant\views.py:610 msgid "No embeddings to edit!" msgstr "" -#: assistant\views.py:317 +#: assistant\views.py:622 msgid "Failed to edit that embedding, please try again later" msgstr "" -#: assistant\views.py:324 +#: assistant\views.py:629 msgid "Your embedding has been modified!" msgstr "" -#: assistant\views.py:364 +#: assistant\views.py:669 msgid "Add an embedding" msgstr "" -#: assistant\views.py:370 +#: assistant\views.py:675 msgid "Your embedding is processing and will appear when ready!" msgstr "" -#: assistant\views.py:386 +#: assistant\views.py:691 msgid "No embeddings to delete!" msgstr "" -#: assistant\views.py:388 +#: assistant\views.py:693 msgid "Deleted `{}` embedding." msgstr "" -#: assistant\views.py:414 +#: assistant\views.py:719 msgid "No embeddings to search!" msgstr "" -#: assistant\views.py:415 +#: assistant\views.py:720 msgid "Search for an embedding" msgstr "" -#: assistant\views.py:437 +#: assistant\views.py:742 msgid "Search result: **{}**" msgstr "" -#: assistant\views.py:474 +#: assistant\views.py:779 msgid "Function Edit" msgstr "" -#: assistant\views.py:483 +#: assistant\views.py:788 msgid "JSON Schema" msgstr "" -#: assistant\views.py:489 +#: assistant\views.py:794 msgid "Code" msgstr "" -#: assistant\views.py:495 +#: assistant\views.py:800 msgid "Permission Level" msgstr "" -#: assistant\views.py:496 +#: assistant\views.py:801 msgid "User, Mod, Admin, or Owner" msgstr "" -#: assistant\views.py:502 +#: assistant\views.py:807 msgid "Required Discord Permissions" msgstr "" -#: assistant\views.py:503 +#: assistant\views.py:808 msgid "e.g. manage_messages, kick_members (comma-separated, or leave blank)" msgstr "" -#: assistant\views.py:510 +#: assistant\views.py:815 msgid "Category" msgstr "" -#: assistant\views.py:511 +#: assistant\views.py:816 msgid "memory, web, utility" msgstr "" -#: assistant\views.py:523 +#: assistant\views.py:828 msgid "Invalid permission level, must be one of `User`, `Mod`, `Admin`, or `Owner`" msgstr "" -#: assistant\views.py:536 +#: assistant\views.py:841 msgid "Invalid Discord permission names: {}" msgstr "" -#: assistant\views.py:552 +#: assistant\views.py:857 assistant\views.py:1865 msgid "Toggle" msgstr "" -#: assistant\views.py:582 +#: assistant\views.py:887 msgid "Choose tools for {} ({}/{})..." msgstr "" -#: assistant\views.py:588 +#: assistant\views.py:893 msgid "Choose tools for {}..." msgstr "" -#: assistant\views.py:593 +#: assistant\views.py:898 msgid "No tools available" msgstr "" -#: assistant\views.py:606 +#: assistant\views.py:911 assistant\views.py:1387 assistant\views.py:1916 msgid "Prev" msgstr "" -#: assistant\views.py:615 +#: assistant\views.py:920 assistant\views.py:1396 assistant\views.py:1925 msgid "Next" msgstr "" -#: assistant\views.py:623 +#: assistant\views.py:928 assistant\views.py:1420 assistant\views.py:1933 msgid "Close" msgstr "" -#: assistant\views.py:718 +#: assistant\views.py:1023 msgid "{} {}/{} enabled • {} categories • Page {}/{}" msgstr "" -#: assistant\views.py:839 assistant\views.py:859 +#: assistant\views.py:1144 assistant\views.py:1164 assistant\views.py:2200 msgid "That category no longer exists." msgstr "" -#: assistant\views.py:1014 +#: assistant\views.py:1199 +#, docstring +msgid "Split a model id into (provider, short_name).\n\n" +" For ids like ``openai/gpt-4-turbo`` returns ``(\"openai\", \"gpt-4-turbo\")``.\n" +" For ids with no slash returns ``(PROVIDER_OTHER, model_id)``.\n" +" " +msgstr "" + +#: assistant\views.py:1214 +#, docstring +msgid "Group endpoint model ids by their provider prefix.\n\n" +" Returns an ordered dict: providers sorted alphabetically (``other`` last),\n" +" each value is the list of full model ids sorted by short name.\n" +" " +msgstr "" + +#: assistant\views.py:1235 +msgid "Other" +msgstr "" + +#: assistant\views.py:1265 +msgid "Pick a model from {} ({}/{})..." +msgstr "" + +#: assistant\views.py:1271 +msgid "Pick a model from {}..." +msgstr "" + +#: assistant\views.py:1276 +msgid "No models" +msgstr "" + +#: assistant\views.py:1295 +msgid "Enter Model ID" +msgstr "" + +#: assistant\views.py:1298 +msgid "Model ID" +msgstr "" + +#: assistant\views.py:1299 +msgid "e.g. openrouter/auto, openai/gpt-4o, anthropic/claude-3-opus" +msgstr "" + +#: assistant\views.py:1315 +msgid "Search Models" +msgstr "" + +#: assistant\views.py:1318 +msgid "Filter" +msgstr "" + +#: assistant\views.py:1319 +msgid "e.g. claude, gpt-4, mistral" +msgstr "" + +#: assistant\views.py:1335 +msgid "Model Slug Suffix" +msgstr "" + +#: assistant\views.py:1338 assistant\views.py:1360 +msgid "Suffix" +msgstr "" + +#: assistant\views.py:1339 +msgid ":nitro (throughput) :floor (price) :extended (blank = remove)" +msgstr "" + +#: assistant\views.py:1356 +msgid "Search" +msgstr "" + +#: assistant\views.py:1365 +msgid "Clear search" +msgstr "" + +#: assistant\views.py:1405 +msgid "Manual entry" +msgstr "" + +#: assistant\views.py:1413 +msgid "Re-probe" +msgstr "" + +#: assistant\views.py:1445 +#, docstring +msgid "Endpoint model picker grouped by provider prefix." +msgstr "" + +#: assistant\views.py:1532 +msgid "Chat model" +msgstr "" + +#: assistant\views.py:1532 +msgid "Embedding model" +msgstr "" + +#: assistant\views.py:1540 +msgid "# 🤖 {} picker" +msgstr "" + +#: assistant\views.py:1541 +msgid "-# Endpoint: `{}`" +msgstr "" + +#: assistant\views.py:1542 +msgid "Current: **{}**" +msgstr "" + +#: assistant\views.py:1542 assistant\views.py:1760 +msgid "(none)" +msgstr "" + +#: assistant\views.py:1545 +msgid "No models were discovered from this endpoint. Try **Re-probe** or use **Manual entry** to type a model id. Router endpoints like OpenRouter accept aliases such as `{}` or `{}`." +msgstr "" + +#: assistant\views.py:1565 +msgid "-# Search: `{}` • {} result(s)" +msgstr "" + +#: assistant\views.py:1568 +msgid "{} models across {} providers • Page {}/{}" +msgstr "" + +#: assistant\views.py:1577 +msgid "-# Tip: router endpoints accept aliases like `{}` or `{}` via **Manual entry**." +msgstr "" + +#: assistant\views.py:1687 assistant\views.py:1703 +msgid "{} set to **{}**" +msgstr "" + +#: assistant\views.py:1743 +msgid "Invalid suffix `{}`. Valid: {}." +msgstr "" + +#: assistant\views.py:1762 +msgid "Model set to **{}** (suffix: {})" +msgstr "" + +#: assistant\views.py:1784 +#, docstring +msgid "Return on/off/mixed for a trailing-block category.\n\n" +" Inclusion defaults to **off** for every variable on a fresh install.\n" +" " +msgstr "" + +#: assistant\views.py:1801 +#, docstring +msgid "Return every category eligible for the trailing-context-block menu.\n\n" +" Output: ``{category_key: {\"label\": str, \"variables\": [str, ...]}}``.\n\n" +" Inclusion in the floating block is fully admin-controlled - there is\n" +" no implicit default. On a fresh install everything is OFF (blank\n" +" slate). Admins opt variables in one at a time via the floatingcontext\n" +" menu.\n" +" " +msgstr "" + +#: assistant\views.py:1847 +#, docstring +msgid "Return a short human-readable description for a context variable." +msgstr "" + +#: assistant\views.py:1900 +msgid "Toggle individual vars in {}..." +msgstr "" + +#: assistant\views.py:1903 +msgid "No variables" +msgstr "" + +#: assistant\views.py:1993 +#, docstring +msgid "Return formatted warning lines for prompts containing dynamic vars." +msgstr "" + +#: assistant\views.py:2003 +msgid "**System prompt** - `{}`" +msgstr "" + +#: assistant\views.py:2006 +msgid "**Initial prompt** - `{}`" +msgstr "" + +#: assistant\views.py:2011 +msgid "<#{}> - `{}`" +msgstr "" + +#: assistant\views.py:2015 +#, docstring +msgid "Build a mapping of variable name → description for 3rd-party vars." +msgstr "" + +#: assistant\views.py:2049 +msgid "Toggle which variables are included in the trailing `[Current Context]` system message that the bot appends after conversation history. Everything is OFF by default - opt variables in one at a time. Variables you toggle on are rendered as self-encapsulated sentences (e.g. `\"The current date is May 16, 2026.\"`), so you do not need to author a prompt that references them." +msgstr "" + +#: assistant\views.py:2060 +msgid "{} {}/{} variables in block • {} categories • Page {}/{}" +msgstr "" + +#: assistant\views.py:2088 +msgid "(no variables)" +msgstr "" + +#: assistant\views.py:2104 +msgid "## ⚠️ Cache Warning" +msgstr "" + +#: assistant\views.py:2107 +msgid "These prompts contain dynamic variable placeholders that are substituted inline, which busts provider-side prompt-prefix caching on every request:" +msgstr "" + +#: assistant\views.py:2117 +msgid "Tip: remove the placeholder from your prompt and toggle the variable on in the menu above instead - the bot will append the value to the floating context block automatically." +msgstr "" + +#: assistant\views.py:2373 msgid "No code to inspect!" msgstr "" -#: assistant\views.py:1038 +#: assistant\views.py:2397 msgid "Here are your custom functions" msgstr "" -#: assistant\views.py:1043 +#: assistant\views.py:2402 msgid "Reply to this message with the json schema for your function\n" "- [Example Functions](https://github.com/vertyco/vrt-cogs/tree/main/assistant/example-funcs)" msgstr "" -#: assistant\views.py:1064 assistant\views.py:1142 +#: assistant\views.py:2423 assistant\views.py:2501 msgid "SchemaError\n" "{}" msgstr "" -#: assistant\views.py:1066 assistant\views.py:1144 +#: assistant\views.py:2425 assistant\views.py:2503 msgid "Empty schema!" msgstr "" -#: assistant\views.py:1069 assistant\views.py:1147 +#: assistant\views.py:2428 assistant\views.py:2506 msgid "Invalid schema!\n" "**Missing**\n" "{}" msgstr "" -#: assistant\views.py:1073 +#: assistant\views.py:2432 msgid "Reply to this message with the custom code" msgstr "" -#: assistant\views.py:1088 assistant\views.py:1153 +#: assistant\views.py:2447 assistant\views.py:2512 msgid "Invalid function" msgstr "" -#: assistant\views.py:1092 +#: assistant\views.py:2451 msgid "`{}` has been overwritten!" msgstr "" -#: assistant\views.py:1094 +#: assistant\views.py:2453 msgid "`{}` has been created!" msgstr "" -#: assistant\views.py:1105 +#: assistant\views.py:2464 msgid "No code to edit!" msgstr "" -#: assistant\views.py:1113 assistant\views.py:1185 +#: assistant\views.py:2472 assistant\views.py:2544 msgid "Could not find function!" msgstr "" -#: assistant\views.py:1115 +#: assistant\views.py:2474 msgid "This function is managed by the `{}` cog and cannot be edited" msgstr "" -#: assistant\views.py:1121 +#: assistant\views.py:2480 msgid "The json schema for this function is too long, you'll need to re-upload it to modify" msgstr "" -#: assistant\views.py:1126 +#: assistant\views.py:2485 msgid "The code for this function is too long, you'll need to re-upload it to modify" msgstr "" -#: assistant\views.py:1170 +#: assistant\views.py:2529 msgid "`{}` function updated!" msgstr "" -#: assistant\views.py:1178 +#: assistant\views.py:2537 msgid "No code to delete!" msgstr "" -#: assistant\views.py:1187 +#: assistant\views.py:2546 msgid "This function is managed by the `{}` cog and cannot be deleted" msgstr "" -#: assistant\views.py:1194 +#: assistant\views.py:2553 msgid "`{}` has been deleted!" msgstr "" -#: assistant\views.py:1201 +#: assistant\views.py:2560 msgid "No code to toggle!" msgstr "" -#: assistant\views.py:1215 +#: assistant\views.py:2574 msgid "Search for a function" msgstr "" From debfb84203591c789168fde0131d0c021d9b93e0 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Mon, 1 Jun 2026 11:11:16 -0400 Subject: [PATCH 069/104] New translations messages.pot (Turkish) [ci skip] --- assistant/common/locales/tr-TR.po | 346 +++++++++++++++++++----------- 1 file changed, 223 insertions(+), 123 deletions(-) diff --git a/assistant/common/locales/tr-TR.po b/assistant/common/locales/tr-TR.po index e2e7eee4a..84a3f255a 100644 --- a/assistant/common/locales/tr-TR.po +++ b/assistant/common/locales/tr-TR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-07 03:02\n" +"POT-Creation-Date: 2026-06-01 09:46-0400\n" +"PO-Revision-Date: 2026-06-01 15:11\n" "Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" @@ -17,190 +17,226 @@ msgstr "" "X-Crowdin-File-ID: 55\n" "Language: tr_TR\n" -#: assistant\common\api.py:110 assistant\common\api.py:111 -#: assistant\common\api.py:120 assistant\common\api.py:121 -#: assistant\common\api.py:122 assistant\common\api.py:126 -#: assistant\common\chat.py:319 +#: assistant\common\api.py:75 +#, docstring +msgid "Return the effective endpoint URL for a guild (chat and embeddings).\n\n" +" Priority:\n" +" 1. Guild-specific endpoint override\n" +" 2. Global endpoint override\n" +" 3. None (use OpenAI)\n" +" " +msgstr "" + +#: assistant\common\api.py:87 +#, docstring +msgid "Return cached endpoint profile for the effective endpoint.\n\n" +" If ``conf`` is provided, checks the guild-specific profile first,\n" +" then falls back to the global profile.\n" +" " +msgstr "" + +#: assistant\common\api.py:188 assistant\common\api.py:189 +#: assistant\common\api.py:198 assistant\common\api.py:199 +#: assistant\common\api.py:200 assistant\common\api.py:204 +#: assistant\common\chat.py:398 msgid "Unknown" msgstr "" -#: assistant\common\api.py:117 +#: assistant\common\api.py:195 msgid "`Provider: `{}" msgstr "" -#: assistant\common\api.py:118 +#: assistant\common\api.py:196 msgid "`Runtime Chat Model: `{}" msgstr "" -#: assistant\common\api.py:119 +#: assistant\common\api.py:197 msgid "`Runtime Embed Model:`{}" msgstr "" -#: assistant\common\api.py:120 +#: assistant\common\api.py:198 msgid "`Vision: `{}" msgstr "" -#: assistant\common\api.py:121 +#: assistant\common\api.py:199 msgid "`Reasoning: `{}" msgstr "" -#: assistant\common\api.py:122 +#: assistant\common\api.py:200 msgid "`Max Context: `{}" msgstr "" -#: assistant\common\api.py:123 +#: assistant\common\api.py:201 msgid "`Embed Dimensions: `{}" msgstr "" -#: assistant\common\api.py:128 +#: assistant\common\api.py:206 msgid "`Models Discovered: `{}" msgstr "" -#: assistant\common\api.py:395 +#: assistant\common\api.py:601 msgid "Failed to fetch: {}" msgstr "" -#: assistant\common\api.py:659 +#: assistant\common\api.py:913 #, docstring msgid "Get token list from text" msgstr "Metinden belirteç listesi alın" -#: assistant\common\api.py:691 +#: assistant\common\api.py:946 msgid "No model API key or endpoint override is configured!\n" msgstr "" -#: assistant\common\api.py:693 +#: assistant\common\api.py:948 msgid "- Set this server's API key with `{}`\n" msgstr "" -#: assistant\common\api.py:699 +#: assistant\common\api.py:954 #, docstring msgid "Re-embed all entries using the current embedding model.\n\n" " Handles dimension mismatches by recreating the collection.\n" " " msgstr "" -#: assistant\common\api.py:801 +#: assistant\common\api.py:1057 #, docstring msgid "Get text from token list" msgstr "Belirteç listesinden metin alın" -#: assistant\common\api.py:828 +#: assistant\common\api.py:1085 #, docstring msgid "Summarize older messages via LLM, falling back to degrade_conversation on failure" msgstr "" -#: assistant\common\api.py:934 +#: assistant\common\api.py:1185 #, docstring msgid "Walk backward from target_idx to avoid splitting tool-call/result pairs" msgstr "" -#: assistant\common\api.py:952 +#: assistant\common\api.py:1203 #, docstring msgid "Convert message dicts to a plain-text transcript for summarization" msgstr "" -#: assistant\common\api.py:998 +#: assistant\common\api.py:1249 #, docstring msgid "Last-resort fallback: remove oldest messages to fit within token limit" msgstr "" -#: assistant\common\api.py:1015 +#: assistant\common\api.py:1266 #, docstring msgid "Remove the oldest message of the given role plus its paired tool results." msgstr "" -#: assistant\common\api.py:1098 +#: assistant\common\api.py:1349 #, docstring msgid "Pagify a long string by tokens rather than characters" msgstr "Uzun bir dizeyi karakterler yerine belirteçlere göre sayfalandırın" -#: assistant\common\api.py:1169 +#: assistant\common\api.py:1421 msgid "Custom Functions" msgstr "Özel Fonksiyonlar" -#: assistant\common\api.py:1179 +#: assistant\common\api.py:1431 msgid "Internal Function" msgstr "Dahili Fonksiyon" -#: assistant\common\api.py:1180 +#: assistant\common\api.py:1432 msgid "This is a built-in function managed by the Assistant cog" msgstr "" -#: assistant\common\api.py:1185 +#: assistant\common\api.py:1437 msgid "3rd Party" msgstr "3. Taraf" -#: assistant\common\api.py:1186 +#: assistant\common\api.py:1438 msgid "This function is managed by the `{}` cog" msgstr "Bu işlev `{}` dişlisi tarafından yönetilir" -#: assistant\common\api.py:1189 +#: assistant\common\api.py:1441 msgid "Category" msgstr "" -#: assistant\common\api.py:1191 +#: assistant\common\api.py:1443 msgid "Status" msgstr "" -#: assistant\common\api.py:1192 +#: assistant\common\api.py:1444 msgid "{} {}" msgstr "" -#: assistant\common\api.py:1192 +#: assistant\common\api.py:1444 msgid "Enabled" msgstr "" -#: assistant\common\api.py:1192 +#: assistant\common\api.py:1444 msgid "Disabled" msgstr "" -#: assistant\common\api.py:1198 +#: assistant\common\api.py:1450 msgid "This function consumes `{}` input tokens each call\n" msgstr "Bu işlev her çağrıda `{}` girdi belirteçlerini tüketir\n" -#: assistant\common\api.py:1213 +#: assistant\common\api.py:1465 msgid "Hidden..." msgstr "Gizli..." -#: assistant\common\api.py:1217 +#: assistant\common\api.py:1469 msgid "\n" "Required: {}" msgstr "" -#: assistant\common\api.py:1218 +#: assistant\common\api.py:1470 msgid "Permission Level" msgstr "" -#: assistant\common\api.py:1219 +#: assistant\common\api.py:1471 msgid "Schema" msgstr "Şema" -#: assistant\common\api.py:1220 +#: assistant\common\api.py:1472 msgid "Code" msgstr "Kod" -#: assistant\common\api.py:1222 assistant\common\api.py:1253 +#: assistant\common\api.py:1474 assistant\common\api.py:1505 msgid "Page {}/{}" msgstr "Sayfa {}/{}" -#: assistant\common\api.py:1229 +#: assistant\common\api.py:1481 msgid "No custom code has been added yet!" msgstr "Henüz hiçbir özel kod eklenmedi!" -#: assistant\common\api.py:1241 +#: assistant\common\api.py:1493 msgid "No embeddings have been created yet!" msgstr "" -#: assistant\common\api.py:1252 +#: assistant\common\api.py:1504 msgid "Embeddings" msgstr "Gömüler" -#: assistant\common\api.py:1293 +#: assistant\common\api.py:1545 msgid "No embeddings have been added!" msgstr "Hiçbir yerleştirme eklenmedi!" -#: assistant\common\chat.py:138 +#: assistant\common\chat.py:141 +#, docstring +msgid "Build the ``[Current Context]`` floating context block.\n\n" +" Rendered into a trailing payload-only user message that the bot sends\n" +" after conversation history. Because that message rides after the\n" +" cached prefix, placing dynamic (per-request) values here keeps the\n" +" cached prompt prefix stable so provider-side prompt caching remains\n" +" effective.\n\n" +" Variables admins have opted to include (via ``[p]floatingcontext``)\n" +" are rendered as self-encapsulated narrative sentences (e.g.\n" +" ``\"The current date is May 16, 2026.\"``) so admins do not need to\n" +" reference the variable in their prompt - toggling it on is enough for\n" +" the model to receive the value.\n\n" +" Returns the formatted block string, or an empty string if no values are\n" +" present.\n" +" " +msgstr "" + +#: assistant\common\chat.py:217 #, docstring msgid "Two-tier pruning of old tool/function results to save context window space.\n\n" " Tier 1 (soft-trim): when *context_fill_ratio* >= ``TOOL_RESULT_SOFT_RATIO``,\n" @@ -212,7 +248,7 @@ msgid "Two-tier pruning of old tool/function results to save context window spac " " msgstr "" -#: assistant\common\chat.py:182 +#: assistant\common\chat.py:261 #, docstring msgid "Remove images from messages once the model has responded enough times.\n\n" " Images are the most token-expensive content in a conversation (easily\n" @@ -226,7 +262,7 @@ msgid "Remove images from messages once the model has responded enough times.\n\ " " msgstr "" -#: assistant\common\chat.py:239 +#: assistant\common\chat.py:318 #, docstring msgid "Cap individual tool results to a fraction of the context window.\n\n" " Prevents a single massive tool result from crowding out everything else.\n" @@ -235,121 +271,130 @@ msgid "Cap individual tool results to a fraction of the context window.\n\n" " " msgstr "" -#: assistant\common\chat.py:265 +#: assistant\common\chat.py:344 #, docstring msgid "Filter kwargs for callables that do not accept arbitrary keyword args." msgstr "" -#: assistant\common\chat.py:285 +#: assistant\common\chat.py:364 #, docstring msgid "Return AllowedMentions allowing role/user pings for privileged members" msgstr "" -#: assistant\common\chat.py:314 +#: assistant\common\chat.py:393 msgid "Execution of admin tool `{}` requires interactive approval, but no interactive message context was available." msgstr "" -#: assistant\common\chat.py:325 +#: assistant\common\chat.py:402 msgid "`{}` wants to run admin tool `{}` from `{}` ({})\n" -"Choose `Approve Once`, `Allow This Session`, or `Skip`." +"Choose `Approve Once`, `Allow This Session`, `Skip`, or `Skip With Feedback`." msgstr "" -#: assistant\common\chat.py:340 +#: assistant\common\chat.py:413 assistant\common\chat.py:439 msgid "Approved once." msgstr "" -#: assistant\common\chat.py:341 +#: assistant\common\chat.py:414 assistant\common\chat.py:440 msgid "Approved for this session." msgstr "" -#: assistant\common\chat.py:342 +#: assistant\common\chat.py:415 assistant\common\chat.py:441 msgid "Skipped." msgstr "" -#: assistant\common\chat.py:343 +#: assistant\common\chat.py:416 assistant\common\chat.py:443 msgid "Approval timed out." msgstr "" -#: assistant\common\chat.py:355 +#: assistant\common\chat.py:442 +msgid "Skipped with feedback." +msgstr "" + +#: assistant\common\chat.py:456 msgid "SKIPPED: Approval for admin tool `{}` timed out. Do not claim it ran. Continue without it, ask again later, or try a different tool." msgstr "" -#: assistant\common\chat.py:360 +#: assistant\common\chat.py:461 msgid "SKIPPED: The user skipped admin tool `{}` for this call. Do not claim it ran. You may continue without it, ask for approval again later, or try a different tool." msgstr "" -#: assistant\common\chat.py:560 +#: assistant\common\chat.py:465 +msgid "\n\n" +"The user's feedback on why they skipped: {}" +msgstr "" + +#: assistant\common\chat.py:663 msgid "No message history!" msgstr "Mesaj geçmişi yok!" -#: assistant\common\chat.py:582 assistant\common\chat.py:585 -#: assistant\common\chat.py:587 +#: assistant\common\chat.py:685 assistant\common\chat.py:688 +#: assistant\common\chat.py:690 msgid "Internal Server Error({}): {}" msgstr "" -#: assistant\common\chat.py:589 +#: assistant\common\chat.py:692 msgid "Failed to communicate with API!" msgstr "" -#: assistant\common\chat.py:593 +#: assistant\common\chat.py:696 msgid "Invalid API key, please set a new valid key!" msgstr "Geçersiz API anahtarı, lütfen yeni bir geçerli anahtar ayarlayın!" -#: assistant\common\chat.py:595 +#: assistant\common\chat.py:698 msgid "Uh oh, looks like my API key is invalid!" msgstr "Uh oh, görünüşe göre API anahtarım geçersiz!" -#: assistant\common\chat.py:597 +#: assistant\common\chat.py:700 msgid "Rate limit error: {}" msgstr "" -#: assistant\common\chat.py:599 +#: assistant\common\chat.py:702 msgid "Read timeout error: {}" msgstr "" -#: assistant\common\chat.py:605 +#: assistant\common\chat.py:711 msgid "Uh oh, something went wrong! Bot owner can use `{}` to view the error." msgstr "Uh oh, bir şeyler ters gitti! Bot sahibi hatayı görüntülemek için `{}` kullanabilir." -#: assistant\common\chat.py:608 +#: assistant\common\chat.py:714 msgid "API Status: {}" msgstr "" -#: assistant\common\chat.py:643 +#: assistant\common\chat.py:749 msgid "No results found" msgstr "Sonuç bulunamadı" -#: assistant\common\chat.py:685 +#: assistant\common\chat.py:791 #, docstring msgid "Call the API asynchronously" msgstr "API'yi eşzamanlı olarak çağırın" -#: assistant\common\chat.py:803 +#: assistant\common\chat.py:909 msgid "None" msgstr "" -#: assistant\common\chat.py:911 +#: assistant\common\chat.py:1027 msgid "Request timed out, please try again." msgstr "" -#: assistant\common\chat.py:922 +#: assistant\common\chat.py:1044 msgid "Bad Request Error2({}): {}" msgstr "" -#: assistant\common\chat.py:924 +#: assistant\common\chat.py:1046 msgid "Bad Request Error({}): {}" msgstr "" -#: assistant\common\chat.py:1109 assistant\common\chat.py:1166 -#: assistant\common\chat.py:1199 +#: assistant\common\chat.py:1288 assistant\common\chat.py:1345 +#: assistant\common\chat.py:1378 msgid "Result sent!" msgstr "" -#: assistant\common\chat.py:1235 +#: assistant\common\chat.py:1414 msgid "Response failed due to invalid regex, check logs for more info." msgstr "Yanıt geçersiz regex nedeniyle başarısız oldu, daha fazla bilgi için günlüklere bakın." -#: assistant\common\chat.py:1278 +#: assistant\common\chat.py:1457 #, docstring msgid "Prepare content for calling the GPT API\n\n" " Args:\n" @@ -370,85 +415,94 @@ msgid "Prepare content for calling the GPT API\n\n" " " msgstr "" -#: assistant\common\chat.py:1386 +#: assistant\common\utils.py:29 #, docstring -msgid "Instead of format(**params) possibly giving a KeyError if prompt has code in it" -msgstr "Format(**params) yerine, istem içinde kod bulunuyorsa olası bir KeyError hatası verebilir" +msgid "Translate a simple wildcard trigger phrase into a SAFE, linear regex string.\n\n" +" Only ``*`` (any run of characters, including none) is honored as a metacharacter;\n" +" everything else is escaped via ``re.escape``. This means staff of a public bot can\n" +" paste arbitrary text — including real regex like ``(a+)+`` — and it can never inject\n" +" catastrophic backtracking (ReDoS): the output contains only literals, ``.*`` and ``\\b``,\n" +" which the engine matches in linear time, so no multiprocessing timeout guard is needed.\n\n" +" A phrase with no leading/trailing ``*`` is anchored on word boundaries, so ``idiot``\n" +" hits the whole word ``idiot`` but not ``idiotic``. Add ``*`` to loosen it:\n" +" ``idiot*`` (prefix), ``*idiot`` (suffix), ``*idiot*`` (substring anywhere).\n" +" " +msgstr "" -#: assistant\common\utils.py:28 assistant\common\utils.py:82 +#: assistant\common\utils.py:51 assistant\common\utils.py:105 msgid "Playing" msgstr "" -#: assistant\common\utils.py:29 assistant\common\utils.py:75 +#: assistant\common\utils.py:52 assistant\common\utils.py:98 msgid "Streaming" msgstr "" -#: assistant\common\utils.py:30 +#: assistant\common\utils.py:53 msgid "Listening" msgstr "" -#: assistant\common\utils.py:31 +#: assistant\common\utils.py:54 msgid "Watching" msgstr "" -#: assistant\common\utils.py:32 assistant\common\utils.py:67 +#: assistant\common\utils.py:55 assistant\common\utils.py:90 msgid "Custom status" msgstr "" -#: assistant\common\utils.py:33 +#: assistant\common\utils.py:56 msgid "Competing" msgstr "" -#: assistant\common\utils.py:38 +#: assistant\common\utils.py:61 msgid "Activity" msgstr "" -#: assistant\common\utils.py:55 +#: assistant\common\utils.py:78 msgid "Unknown track" msgstr "" -#: assistant\common\utils.py:56 +#: assistant\common\utils.py:79 msgid "Unknown artist" msgstr "" -#: assistant\common\utils.py:60 +#: assistant\common\utils.py:83 msgid "by {artist}" msgstr "" -#: assistant\common\utils.py:61 +#: assistant\common\utils.py:84 msgid "album: {album}" msgstr "" -#: assistant\common\utils.py:63 +#: assistant\common\utils.py:86 msgid "Listening to Spotify: {details}" msgstr "" -#: assistant\common\utils.py:67 +#: assistant\common\utils.py:90 msgid "Custom status: {status}" msgstr "" -#: assistant\common\utils.py:72 +#: assistant\common\utils.py:95 msgid "game: {game}" msgstr "" -#: assistant\common\utils.py:73 assistant\common\utils.py:80 -#: assistant\common\utils.py:91 +#: assistant\common\utils.py:96 assistant\common\utils.py:103 +#: assistant\common\utils.py:114 msgid "platform: {platform}" msgstr "" -#: assistant\common\utils.py:75 +#: assistant\common\utils.py:98 msgid "Streaming: {details}" msgstr "" -#: assistant\common\utils.py:82 +#: assistant\common\utils.py:105 msgid "Playing: {details}" msgstr "" -#: assistant\common\utils.py:92 +#: assistant\common\utils.py:115 msgid "buttons: {buttons}" msgstr "" -#: assistant\common\utils.py:181 +#: assistant\common\utils.py:204 #, docstring msgid "\n" " Cleans the function name to ensure it only contains alphanumeric characters,\n" @@ -460,53 +514,99 @@ msgid "\n" " " msgstr "" -#: assistant\common\utils.py:201 +#: assistant\common\utils.py:224 #, docstring msgid "Get all attachments from context" msgstr "Bağlamdan tüm ekleri alın" -#: assistant\common\utils.py:222 +#: assistant\common\utils.py:245 msgid "Canceled" msgstr "İptal edildi" -#: assistant\common\utils.py:235 +#: assistant\common\utils.py:258 msgid "You have been blacklisted from using this command!" msgstr "Bu komutu kullanmanız için kara listeye alındınız!" -#: assistant\common\utils.py:239 +#: assistant\common\utils.py:262 msgid "You have a blacklisted role and cannot use this command!" msgstr "Kara listeye alınmış bir role sahipsiniz ve bu komutu kullanamazsınız!" -#: assistant\common\utils.py:243 +#: assistant\common\utils.py:266 msgid "You cannot use that command in this channel!" msgstr "Bu komutu bu kanalda kullanamazsınız!" -#: assistant\common\utils.py:247 +#: assistant\common\utils.py:270 msgid "You cannot use that command in any channels under this category" msgstr "Bu komutu bu kategori altındaki hiçbir kanalda kullanamazsınız" -#: assistant\common\utils.py:282 assistant\common\utils.py:283 +#: assistant\common\utils.py:305 assistant\common\utils.py:306 msgid "[Code Removed]" msgstr "[Kod Kaldırıldı]" -#: assistant\common\utils.py:409 +#: assistant\common\utils.py:457 +#, docstring +msgid "Substitute ``{key}`` placeholders in ``text`` from ``params``.\n\n" +" Uses ``str.replace`` rather than ``str.format`` so prompts containing\n" +" code blocks with curly braces don't raise ``KeyError``.\n" +" " +msgstr "" + +#: assistant\common\utils.py:478 +#, docstring +msgid "Stable, cache-safe prompt template variables.\n\n" +" These values do not change per-request and are safe to inject into the\n" +" `system_prompt` and `initial_prompt` without invalidating provider-side\n" +" prompt caching.\n\n" +" The `extras` dict is expected to only contain stable values (e.g. bank\n" +" type, currency, bank name). Per-user balances belong in\n" +" `get_dynamic_params()`.\n" +" " +msgstr "" + +#: assistant\common\utils.py:525 +#, docstring +msgid "Per-request prompt template variables that change frequently.\n\n" +" These values are kept separate from `get_base_params()` so callers can\n" +" choose to inject them into a trailing system-context block (preserving\n" +" prompt prefix stability for caching) rather than into the system/initial\n" +" prompts.\n\n" +" `dynamic_extras` may carry per-user dynamic values (such as the bank\n" +" balance) that need to be grouped with the other dynamic variables.\n\n" +" `last_interaction_seconds` is the elapsed time (in seconds) since the\n" +" user's previous message in the active conversation. Pass ``None`` if\n" +" this is the user's first message - the resulting value is the literal\n" +" string \"first message\".\n" +" " +msgstr "" + +#: assistant\common\utils.py:601 +#, docstring +msgid "Combined stable + dynamic prompt template variables.\n\n" +" Convenience helper that merges `get_base_params()` with\n" +" `get_dynamic_params()` for callers that don't care about cache-safe\n" +" separation. Cache-aware code paths should call the two split helpers\n" +" directly.\n" +" " +msgstr "" + +#: assistant\common\utils.py:645 #, docstring msgid "Make sure that if a conversation payload contains images that the model supports vision" msgstr "" -#: assistant\common\utils.py:429 +#: assistant\common\utils.py:665 #, docstring msgid "Remove all images sourced from URLs from the message payload" msgstr "" -#: assistant\common\utils.py:449 +#: assistant\common\utils.py:685 #, docstring msgid "Remove invisible Unicode characters that AI detectors might flag.\n\n" " Returns: (cleaned_text, was_modified)\n" " " msgstr "" -#: assistant\common\utils.py:479 +#: assistant\common\utils.py:715 #, docstring msgid "Clean the model response since its stupid and breaks itself\n\n" " Example\n" @@ -524,12 +624,12 @@ msgid "Clean the model response since its stupid and breaks itself\n\n" " " msgstr "" -#: assistant\common\utils.py:531 +#: assistant\common\utils.py:767 #, docstring msgid "Same as clean_response but cleans the whole message payload" msgstr "" -#: assistant\common\utils.py:546 +#: assistant\common\utils.py:782 #, docstring msgid "\n" " Ensure all tool calls satisfy schema requirements, modifying the messages payload in-place.\n\n" @@ -570,17 +670,17 @@ msgid "\n" " " msgstr "" -#: assistant\common\utils.py:650 +#: assistant\common\utils.py:886 #, docstring msgid "Check if a file is a supported document type" msgstr "" -#: assistant\common\utils.py:655 +#: assistant\common\utils.py:891 #, docstring msgid "Get the lowercase file extension from a filename" msgstr "" -#: assistant\common\utils.py:662 +#: assistant\common\utils.py:898 #, docstring msgid "Extract text content from PDF, Word, or Excel files\n\n" " Args:\n" @@ -591,17 +691,17 @@ msgid "Extract text content from PDF, Word, or Excel files\n\n" " " msgstr "" -#: assistant\common\utils.py:688 +#: assistant\common\utils.py:924 #, docstring msgid "Extract text from PDF files using PyMuPDF" msgstr "" -#: assistant\common\utils.py:726 +#: assistant\common\utils.py:962 #, docstring msgid "Extract text from Word documents using pypandoc" msgstr "" -#: assistant\common\utils.py:747 +#: assistant\common\utils.py:983 #, docstring msgid "Extract text from Excel files using pandas" msgstr "" From 32fa33de8d772a048e159af1b985f61f32c34ec7 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Mon, 1 Jun 2026 11:11:17 -0400 Subject: [PATCH 070/104] New translations messages.pot (Turkish) [ci skip] --- assistant/locales/tr-TR.po | 457 +++++++++++++++++++++++++++++++------ 1 file changed, 390 insertions(+), 67 deletions(-) diff --git a/assistant/locales/tr-TR.po b/assistant/locales/tr-TR.po index d5ae255d7..3341e614c 100644 --- a/assistant/locales/tr-TR.po +++ b/assistant/locales/tr-TR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-07 03:02\n" +"POT-Creation-Date: 2026-06-01 09:46-0400\n" +"PO-Revision-Date: 2026-06-01 15:11\n" "Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" @@ -17,40 +17,145 @@ msgstr "" "X-Crowdin-File-ID: 57\n" "Language: tr_TR\n" -#: assistant\views.py:46 +#: assistant\views.py:54 msgid "Custom" msgstr "" -#: assistant\views.py:58 +#: assistant\views.py:66 msgid "Set API Key" msgstr "" -#: assistant\views.py:60 +#: assistant\views.py:68 msgid "Enter your API Key below" msgstr "" -#: assistant\views.py:81 assistant\views.py:214 assistant\views.py:663 -#: assistant\views.py:905 +#: assistant\views.py:89 assistant\views.py:519 assistant\views.py:968 +#: assistant\views.py:1484 assistant\views.py:1974 assistant\views.py:2264 msgid "This isn't your menu!" msgstr "Bu senin menün değil!" -#: assistant\views.py:104 +#: assistant\views.py:105 +msgid "Skip with feedback" +msgstr "" + +#: assistant\views.py:108 +msgid "Why are you skipping? (optional)" +msgstr "" + +#: assistant\views.py:130 msgid "This approval prompt isn't for you!" msgstr "" -#: assistant\views.py:145 +#: assistant\views.py:177 +msgid "Confirm: {}" +msgstr "" + +#: assistant\views.py:181 +msgid "Reason (blank = use AI's reason)" +msgstr "" + +#: assistant\views.py:204 +#, docstring +msgid "Dropdown of every action available on this server (built-ins + Ark/Notes)." +msgstr "" + +#: assistant\views.py:208 +msgid "Choose a different action…" +msgstr "" + +#: assistant\views.py:215 +#, docstring +msgid "Interactive staff panel proposing a moderation action suggested by the LLM." +msgstr "" + +#: assistant\views.py:245 +msgid "No reason provided." +msgstr "" + +#: assistant\views.py:268 +msgid "# 🧪 SIMULATION — dry run" +msgstr "" + +#: assistant\views.py:269 +msgid "-# Buttons take no real action; this is a test." +msgstr "" + +#: assistant\views.py:272 +msgid "# ⚠️ Proposed Moderation Action" +msgstr "" + +#: assistant\views.py:275 +msgid "**Suggested:** {emoji} {action} • **Severity:** {sev}" +msgstr "" + +#: assistant\views.py:282 +msgid "**User:** {mention} `{uid}`\n" +"**Message:** [jump to message]({url})\n" +"**Channel:** {channel}" +msgstr "" + +#: assistant\views.py:290 +msgid "-# Flagged for: {}" +msgstr "" + +#: assistant\views.py:292 +msgid "**Reason**\n" +"{}" +msgstr "" + +#: assistant\views.py:311 +msgid "**Context**\n" +"{}" +msgstr "" + +#: assistant\views.py:323 +msgid "{} (suggested)" +msgstr "" + +#: assistant\views.py:328 +msgid "No action" +msgstr "" + +#: assistant\views.py:354 assistant\views.py:378 +msgid "This panel was already resolved." +msgstr "" + +#: assistant\views.py:358 +msgid "You don't have permission to perform that action." +msgstr "" + +#: assistant\views.py:364 +msgid "✅ Dismissed — no action taken.\n" +"-# By {}" +msgstr "" + +#: assistant\views.py:383 +msgid "{outcome}\n" +"-# Action by {user}" +msgstr "" + +#: assistant\views.py:389 +msgid "🧪 (dry-run) Would **{action}** {target}.\n" +"-# {reason}" +msgstr "" + +#: assistant\views.py:434 +msgid "⏱️ Auto-action on timeout: {}" +msgstr "" + +#: assistant\views.py:450 msgid "Entry name" msgstr "Giriş adı" -#: assistant\views.py:153 +#: assistant\views.py:458 msgid "Training context" msgstr "Eğitim bağlamı" -#: assistant\views.py:172 +#: assistant\views.py:477 msgid "Search Query" msgstr "Arama Sorgusu" -#: assistant\views.py:264 +#: assistant\views.py:569 msgid "Failed to process embedding `{}`\n" "Content: ```\n" "{}\n" @@ -60,167 +165,385 @@ msgstr "`{}` gömme işlemi başarısız oldu\n" "{}\n" "```" -#: assistant\views.py:266 +#: assistant\views.py:571 msgid "An embedding with the name `{}` already exists!" msgstr "`{}` adında bir gömme zaten mevcut!" -#: assistant\views.py:271 +#: assistant\views.py:576 msgid "Your embedding labeled `{}` has been processed!" msgstr "`{}` etiketli gömme işleminiz işlendi!" -#: assistant\views.py:282 +#: assistant\views.py:587 msgid "No embeddings to inspect!" msgstr "İncelenecek gömme yok!" -#: assistant\views.py:287 +#: assistant\views.py:592 msgid "Embedding not found!" msgstr "" -#: assistant\views.py:305 +#: assistant\views.py:610 msgid "No embeddings to edit!" msgstr "Düzenlenecek gömme yok!" -#: assistant\views.py:317 +#: assistant\views.py:622 msgid "Failed to edit that embedding, please try again later" msgstr "Bu yerleştirme düzenlenemedi, lütfen daha sonra tekrar deneyin" -#: assistant\views.py:324 +#: assistant\views.py:629 msgid "Your embedding has been modified!" msgstr "Yerleştirmeniz değiştirildi!" -#: assistant\views.py:364 +#: assistant\views.py:669 msgid "Add an embedding" msgstr "Bir yerleştirme ekleyin" -#: assistant\views.py:370 +#: assistant\views.py:675 msgid "Your embedding is processing and will appear when ready!" msgstr "Yerleştirmeniz işleniyor ve hazır olduğunda görünecek!" -#: assistant\views.py:386 +#: assistant\views.py:691 msgid "No embeddings to delete!" msgstr "Silinecek gömme yok!" -#: assistant\views.py:388 +#: assistant\views.py:693 msgid "Deleted `{}` embedding." msgstr "`{}` katıştırması silindi." -#: assistant\views.py:414 +#: assistant\views.py:719 msgid "No embeddings to search!" msgstr "Aranacak gömme yok!" -#: assistant\views.py:415 +#: assistant\views.py:720 msgid "Search for an embedding" msgstr "Bir yerleştirme arayın" -#: assistant\views.py:437 +#: assistant\views.py:742 msgid "Search result: **{}**" msgstr "Arama sonucu: **{}**" -#: assistant\views.py:474 +#: assistant\views.py:779 msgid "Function Edit" msgstr "İşlev Düzenleme" -#: assistant\views.py:483 +#: assistant\views.py:788 msgid "JSON Schema" msgstr "JSON Şeması" -#: assistant\views.py:489 +#: assistant\views.py:794 msgid "Code" msgstr "Kod" -#: assistant\views.py:495 +#: assistant\views.py:800 msgid "Permission Level" msgstr "" -#: assistant\views.py:496 +#: assistant\views.py:801 msgid "User, Mod, Admin, or Owner" msgstr "" -#: assistant\views.py:502 +#: assistant\views.py:807 msgid "Required Discord Permissions" msgstr "" -#: assistant\views.py:503 +#: assistant\views.py:808 msgid "e.g. manage_messages, kick_members (comma-separated, or leave blank)" msgstr "" -#: assistant\views.py:510 +#: assistant\views.py:815 msgid "Category" msgstr "" -#: assistant\views.py:511 +#: assistant\views.py:816 msgid "memory, web, utility" msgstr "" -#: assistant\views.py:523 +#: assistant\views.py:828 msgid "Invalid permission level, must be one of `User`, `Mod`, `Admin`, or `Owner`" msgstr "" -#: assistant\views.py:536 +#: assistant\views.py:841 msgid "Invalid Discord permission names: {}" msgstr "" -#: assistant\views.py:552 +#: assistant\views.py:857 assistant\views.py:1865 msgid "Toggle" msgstr "" -#: assistant\views.py:582 +#: assistant\views.py:887 msgid "Choose tools for {} ({}/{})..." msgstr "" -#: assistant\views.py:588 +#: assistant\views.py:893 msgid "Choose tools for {}..." msgstr "" -#: assistant\views.py:593 +#: assistant\views.py:898 msgid "No tools available" msgstr "" -#: assistant\views.py:606 +#: assistant\views.py:911 assistant\views.py:1387 assistant\views.py:1916 msgid "Prev" msgstr "" -#: assistant\views.py:615 +#: assistant\views.py:920 assistant\views.py:1396 assistant\views.py:1925 msgid "Next" msgstr "" -#: assistant\views.py:623 +#: assistant\views.py:928 assistant\views.py:1420 assistant\views.py:1933 msgid "Close" msgstr "" -#: assistant\views.py:718 +#: assistant\views.py:1023 msgid "{} {}/{} enabled • {} categories • Page {}/{}" msgstr "" -#: assistant\views.py:839 assistant\views.py:859 +#: assistant\views.py:1144 assistant\views.py:1164 assistant\views.py:2200 msgid "That category no longer exists." msgstr "" -#: assistant\views.py:1014 +#: assistant\views.py:1199 +#, docstring +msgid "Split a model id into (provider, short_name).\n\n" +" For ids like ``openai/gpt-4-turbo`` returns ``(\"openai\", \"gpt-4-turbo\")``.\n" +" For ids with no slash returns ``(PROVIDER_OTHER, model_id)``.\n" +" " +msgstr "" + +#: assistant\views.py:1214 +#, docstring +msgid "Group endpoint model ids by their provider prefix.\n\n" +" Returns an ordered dict: providers sorted alphabetically (``other`` last),\n" +" each value is the list of full model ids sorted by short name.\n" +" " +msgstr "" + +#: assistant\views.py:1235 +msgid "Other" +msgstr "" + +#: assistant\views.py:1265 +msgid "Pick a model from {} ({}/{})..." +msgstr "" + +#: assistant\views.py:1271 +msgid "Pick a model from {}..." +msgstr "" + +#: assistant\views.py:1276 +msgid "No models" +msgstr "" + +#: assistant\views.py:1295 +msgid "Enter Model ID" +msgstr "" + +#: assistant\views.py:1298 +msgid "Model ID" +msgstr "" + +#: assistant\views.py:1299 +msgid "e.g. openrouter/auto, openai/gpt-4o, anthropic/claude-3-opus" +msgstr "" + +#: assistant\views.py:1315 +msgid "Search Models" +msgstr "" + +#: assistant\views.py:1318 +msgid "Filter" +msgstr "" + +#: assistant\views.py:1319 +msgid "e.g. claude, gpt-4, mistral" +msgstr "" + +#: assistant\views.py:1335 +msgid "Model Slug Suffix" +msgstr "" + +#: assistant\views.py:1338 assistant\views.py:1360 +msgid "Suffix" +msgstr "" + +#: assistant\views.py:1339 +msgid ":nitro (throughput) :floor (price) :extended (blank = remove)" +msgstr "" + +#: assistant\views.py:1356 +msgid "Search" +msgstr "" + +#: assistant\views.py:1365 +msgid "Clear search" +msgstr "" + +#: assistant\views.py:1405 +msgid "Manual entry" +msgstr "" + +#: assistant\views.py:1413 +msgid "Re-probe" +msgstr "" + +#: assistant\views.py:1445 +#, docstring +msgid "Endpoint model picker grouped by provider prefix." +msgstr "" + +#: assistant\views.py:1532 +msgid "Chat model" +msgstr "" + +#: assistant\views.py:1532 +msgid "Embedding model" +msgstr "" + +#: assistant\views.py:1540 +msgid "# 🤖 {} picker" +msgstr "" + +#: assistant\views.py:1541 +msgid "-# Endpoint: `{}`" +msgstr "" + +#: assistant\views.py:1542 +msgid "Current: **{}**" +msgstr "" + +#: assistant\views.py:1542 assistant\views.py:1760 +msgid "(none)" +msgstr "" + +#: assistant\views.py:1545 +msgid "No models were discovered from this endpoint. Try **Re-probe** or use **Manual entry** to type a model id. Router endpoints like OpenRouter accept aliases such as `{}` or `{}`." +msgstr "" + +#: assistant\views.py:1565 +msgid "-# Search: `{}` • {} result(s)" +msgstr "" + +#: assistant\views.py:1568 +msgid "{} models across {} providers • Page {}/{}" +msgstr "" + +#: assistant\views.py:1577 +msgid "-# Tip: router endpoints accept aliases like `{}` or `{}` via **Manual entry**." +msgstr "" + +#: assistant\views.py:1687 assistant\views.py:1703 +msgid "{} set to **{}**" +msgstr "" + +#: assistant\views.py:1743 +msgid "Invalid suffix `{}`. Valid: {}." +msgstr "" + +#: assistant\views.py:1762 +msgid "Model set to **{}** (suffix: {})" +msgstr "" + +#: assistant\views.py:1784 +#, docstring +msgid "Return on/off/mixed for a trailing-block category.\n\n" +" Inclusion defaults to **off** for every variable on a fresh install.\n" +" " +msgstr "" + +#: assistant\views.py:1801 +#, docstring +msgid "Return every category eligible for the trailing-context-block menu.\n\n" +" Output: ``{category_key: {\"label\": str, \"variables\": [str, ...]}}``.\n\n" +" Inclusion in the floating block is fully admin-controlled - there is\n" +" no implicit default. On a fresh install everything is OFF (blank\n" +" slate). Admins opt variables in one at a time via the floatingcontext\n" +" menu.\n" +" " +msgstr "" + +#: assistant\views.py:1847 +#, docstring +msgid "Return a short human-readable description for a context variable." +msgstr "" + +#: assistant\views.py:1900 +msgid "Toggle individual vars in {}..." +msgstr "" + +#: assistant\views.py:1903 +msgid "No variables" +msgstr "" + +#: assistant\views.py:1993 +#, docstring +msgid "Return formatted warning lines for prompts containing dynamic vars." +msgstr "" + +#: assistant\views.py:2003 +msgid "**System prompt** - `{}`" +msgstr "" + +#: assistant\views.py:2006 +msgid "**Initial prompt** - `{}`" +msgstr "" + +#: assistant\views.py:2011 +msgid "<#{}> - `{}`" +msgstr "" + +#: assistant\views.py:2015 +#, docstring +msgid "Build a mapping of variable name → description for 3rd-party vars." +msgstr "" + +#: assistant\views.py:2049 +msgid "Toggle which variables are included in the trailing `[Current Context]` system message that the bot appends after conversation history. Everything is OFF by default - opt variables in one at a time. Variables you toggle on are rendered as self-encapsulated sentences (e.g. `\"The current date is May 16, 2026.\"`), so you do not need to author a prompt that references them." +msgstr "" + +#: assistant\views.py:2060 +msgid "{} {}/{} variables in block • {} categories • Page {}/{}" +msgstr "" + +#: assistant\views.py:2088 +msgid "(no variables)" +msgstr "" + +#: assistant\views.py:2104 +msgid "## ⚠️ Cache Warning" +msgstr "" + +#: assistant\views.py:2107 +msgid "These prompts contain dynamic variable placeholders that are substituted inline, which busts provider-side prompt-prefix caching on every request:" +msgstr "" + +#: assistant\views.py:2117 +msgid "Tip: remove the placeholder from your prompt and toggle the variable on in the menu above instead - the bot will append the value to the floating context block automatically." +msgstr "" + +#: assistant\views.py:2373 msgid "No code to inspect!" msgstr "İncelenecek kod yok!" -#: assistant\views.py:1038 +#: assistant\views.py:2397 msgid "Here are your custom functions" msgstr "İşte özel işlevleriniz" -#: assistant\views.py:1043 +#: assistant\views.py:2402 msgid "Reply to this message with the json schema for your function\n" "- [Example Functions](https://github.com/vertyco/vrt-cogs/tree/main/assistant/example-funcs)" msgstr "Bu mesaja fonksiyonunuzun json şeması ile yanıt verin\n" "- [Örnek Fonksiyonlar](https://github.com/vertyco/vrt-cogs/tree/main/assistant/example-funcs)" -#: assistant\views.py:1064 assistant\views.py:1142 +#: assistant\views.py:2423 assistant\views.py:2501 msgid "SchemaError\n" "{}" msgstr "Error de esquema\n" "{}" -#: assistant\views.py:1066 assistant\views.py:1144 +#: assistant\views.py:2425 assistant\views.py:2503 msgid "Empty schema!" msgstr "Boş şema!" -#: assistant\views.py:1069 assistant\views.py:1147 +#: assistant\views.py:2428 assistant\views.py:2506 msgid "Invalid schema!\n" "**Missing**\n" "{}" @@ -228,63 +551,63 @@ msgstr "Geçersiz şema!\n" "**Eksik**\n" "{}" -#: assistant\views.py:1073 +#: assistant\views.py:2432 msgid "Reply to this message with the custom code" msgstr "Bu mesaja özel kod ile yanıt verin" -#: assistant\views.py:1088 assistant\views.py:1153 +#: assistant\views.py:2447 assistant\views.py:2512 msgid "Invalid function" msgstr "Geçersiz fonksiyon" -#: assistant\views.py:1092 +#: assistant\views.py:2451 msgid "`{}` has been overwritten!" msgstr "`{}` üzerine yazıldı!" -#: assistant\views.py:1094 +#: assistant\views.py:2453 msgid "`{}` has been created!" msgstr "`{}` oluşturuldu!" -#: assistant\views.py:1105 +#: assistant\views.py:2464 msgid "No code to edit!" msgstr "Düzenlenecek kod yok!" -#: assistant\views.py:1113 assistant\views.py:1185 +#: assistant\views.py:2472 assistant\views.py:2544 msgid "Could not find function!" msgstr "Fonksiyon bulunamadı!" -#: assistant\views.py:1115 +#: assistant\views.py:2474 msgid "This function is managed by the `{}` cog and cannot be edited" msgstr "Bu işlev `{}` dişlisi tarafından yönetilmektedir ve düzenlenemez" -#: assistant\views.py:1121 +#: assistant\views.py:2480 msgid "The json schema for this function is too long, you'll need to re-upload it to modify" msgstr "Bu işlev için json şeması çok uzun, değiştirmek için yeniden yüklemeniz gerekecek" -#: assistant\views.py:1126 +#: assistant\views.py:2485 msgid "The code for this function is too long, you'll need to re-upload it to modify" msgstr "Bu işlevin kodu çok uzun, değiştirmek için yeniden yüklemeniz gerekecek" -#: assistant\views.py:1170 +#: assistant\views.py:2529 msgid "`{}` function updated!" msgstr "`{}` fonksiyonu güncellendi!" -#: assistant\views.py:1178 +#: assistant\views.py:2537 msgid "No code to delete!" msgstr "Silinecek kod yok!" -#: assistant\views.py:1187 +#: assistant\views.py:2546 msgid "This function is managed by the `{}` cog and cannot be deleted" msgstr "Bu işlev `{}` dişlisi tarafından yönetilmektedir ve silinemez" -#: assistant\views.py:1194 +#: assistant\views.py:2553 msgid "`{}` has been deleted!" msgstr "`{}` silindi!" -#: assistant\views.py:1201 +#: assistant\views.py:2560 msgid "No code to toggle!" msgstr "Değiştirmek için kod yok!" -#: assistant\views.py:1215 +#: assistant\views.py:2574 msgid "Search for a function" msgstr "" From 0bcacc670c804c6a04b6abe8b8d5193b59b2a790 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Mon, 1 Jun 2026 11:11:19 -0400 Subject: [PATCH 071/104] New translations messages.pot (Croatian) [ci skip] --- assistant/common/locales/hr-HR.po | 344 +++++++++++++++++++----------- 1 file changed, 222 insertions(+), 122 deletions(-) diff --git a/assistant/common/locales/hr-HR.po b/assistant/common/locales/hr-HR.po index 517a04eed..2c0453cf3 100644 --- a/assistant/common/locales/hr-HR.po +++ b/assistant/common/locales/hr-HR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-07 03:04\n" +"POT-Creation-Date: 2026-06-01 09:46-0400\n" +"PO-Revision-Date: 2026-06-01 15:11\n" "Last-Translator: \n" "Language-Team: Croatian\n" "MIME-Version: 1.0\n" @@ -17,190 +17,226 @@ msgstr "" "X-Crowdin-File-ID: 55\n" "Language: hr_HR\n" -#: assistant\common\api.py:110 assistant\common\api.py:111 -#: assistant\common\api.py:120 assistant\common\api.py:121 -#: assistant\common\api.py:122 assistant\common\api.py:126 -#: assistant\common\chat.py:319 +#: assistant\common\api.py:75 +#, docstring +msgid "Return the effective endpoint URL for a guild (chat and embeddings).\n\n" +" Priority:\n" +" 1. Guild-specific endpoint override\n" +" 2. Global endpoint override\n" +" 3. None (use OpenAI)\n" +" " +msgstr "" + +#: assistant\common\api.py:87 +#, docstring +msgid "Return cached endpoint profile for the effective endpoint.\n\n" +" If ``conf`` is provided, checks the guild-specific profile first,\n" +" then falls back to the global profile.\n" +" " +msgstr "" + +#: assistant\common\api.py:188 assistant\common\api.py:189 +#: assistant\common\api.py:198 assistant\common\api.py:199 +#: assistant\common\api.py:200 assistant\common\api.py:204 +#: assistant\common\chat.py:398 msgid "Unknown" msgstr "" -#: assistant\common\api.py:117 +#: assistant\common\api.py:195 msgid "`Provider: `{}" msgstr "" -#: assistant\common\api.py:118 +#: assistant\common\api.py:196 msgid "`Runtime Chat Model: `{}" msgstr "" -#: assistant\common\api.py:119 +#: assistant\common\api.py:197 msgid "`Runtime Embed Model:`{}" msgstr "" -#: assistant\common\api.py:120 +#: assistant\common\api.py:198 msgid "`Vision: `{}" msgstr "" -#: assistant\common\api.py:121 +#: assistant\common\api.py:199 msgid "`Reasoning: `{}" msgstr "" -#: assistant\common\api.py:122 +#: assistant\common\api.py:200 msgid "`Max Context: `{}" msgstr "" -#: assistant\common\api.py:123 +#: assistant\common\api.py:201 msgid "`Embed Dimensions: `{}" msgstr "" -#: assistant\common\api.py:128 +#: assistant\common\api.py:206 msgid "`Models Discovered: `{}" msgstr "" -#: assistant\common\api.py:395 +#: assistant\common\api.py:601 msgid "Failed to fetch: {}" msgstr "" -#: assistant\common\api.py:659 +#: assistant\common\api.py:913 #, docstring msgid "Get token list from text" msgstr "" -#: assistant\common\api.py:691 +#: assistant\common\api.py:946 msgid "No model API key or endpoint override is configured!\n" msgstr "" -#: assistant\common\api.py:693 +#: assistant\common\api.py:948 msgid "- Set this server's API key with `{}`\n" msgstr "" -#: assistant\common\api.py:699 +#: assistant\common\api.py:954 #, docstring msgid "Re-embed all entries using the current embedding model.\n\n" " Handles dimension mismatches by recreating the collection.\n" " " msgstr "" -#: assistant\common\api.py:801 +#: assistant\common\api.py:1057 #, docstring msgid "Get text from token list" msgstr "" -#: assistant\common\api.py:828 +#: assistant\common\api.py:1085 #, docstring msgid "Summarize older messages via LLM, falling back to degrade_conversation on failure" msgstr "" -#: assistant\common\api.py:934 +#: assistant\common\api.py:1185 #, docstring msgid "Walk backward from target_idx to avoid splitting tool-call/result pairs" msgstr "" -#: assistant\common\api.py:952 +#: assistant\common\api.py:1203 #, docstring msgid "Convert message dicts to a plain-text transcript for summarization" msgstr "" -#: assistant\common\api.py:998 +#: assistant\common\api.py:1249 #, docstring msgid "Last-resort fallback: remove oldest messages to fit within token limit" msgstr "" -#: assistant\common\api.py:1015 +#: assistant\common\api.py:1266 #, docstring msgid "Remove the oldest message of the given role plus its paired tool results." msgstr "" -#: assistant\common\api.py:1098 +#: assistant\common\api.py:1349 #, docstring msgid "Pagify a long string by tokens rather than characters" msgstr "" -#: assistant\common\api.py:1169 +#: assistant\common\api.py:1421 msgid "Custom Functions" msgstr "" -#: assistant\common\api.py:1179 +#: assistant\common\api.py:1431 msgid "Internal Function" msgstr "" -#: assistant\common\api.py:1180 +#: assistant\common\api.py:1432 msgid "This is a built-in function managed by the Assistant cog" msgstr "" -#: assistant\common\api.py:1185 +#: assistant\common\api.py:1437 msgid "3rd Party" msgstr "" -#: assistant\common\api.py:1186 +#: assistant\common\api.py:1438 msgid "This function is managed by the `{}` cog" msgstr "" -#: assistant\common\api.py:1189 +#: assistant\common\api.py:1441 msgid "Category" msgstr "" -#: assistant\common\api.py:1191 +#: assistant\common\api.py:1443 msgid "Status" msgstr "" -#: assistant\common\api.py:1192 +#: assistant\common\api.py:1444 msgid "{} {}" msgstr "" -#: assistant\common\api.py:1192 +#: assistant\common\api.py:1444 msgid "Enabled" msgstr "" -#: assistant\common\api.py:1192 +#: assistant\common\api.py:1444 msgid "Disabled" msgstr "" -#: assistant\common\api.py:1198 +#: assistant\common\api.py:1450 msgid "This function consumes `{}` input tokens each call\n" msgstr "" -#: assistant\common\api.py:1213 +#: assistant\common\api.py:1465 msgid "Hidden..." msgstr "" -#: assistant\common\api.py:1217 +#: assistant\common\api.py:1469 msgid "\n" "Required: {}" msgstr "" -#: assistant\common\api.py:1218 +#: assistant\common\api.py:1470 msgid "Permission Level" msgstr "" -#: assistant\common\api.py:1219 +#: assistant\common\api.py:1471 msgid "Schema" msgstr "" -#: assistant\common\api.py:1220 +#: assistant\common\api.py:1472 msgid "Code" msgstr "" -#: assistant\common\api.py:1222 assistant\common\api.py:1253 +#: assistant\common\api.py:1474 assistant\common\api.py:1505 msgid "Page {}/{}" msgstr "" -#: assistant\common\api.py:1229 +#: assistant\common\api.py:1481 msgid "No custom code has been added yet!" msgstr "" -#: assistant\common\api.py:1241 +#: assistant\common\api.py:1493 msgid "No embeddings have been created yet!" msgstr "" -#: assistant\common\api.py:1252 +#: assistant\common\api.py:1504 msgid "Embeddings" msgstr "" -#: assistant\common\api.py:1293 +#: assistant\common\api.py:1545 msgid "No embeddings have been added!" msgstr "" -#: assistant\common\chat.py:138 +#: assistant\common\chat.py:141 +#, docstring +msgid "Build the ``[Current Context]`` floating context block.\n\n" +" Rendered into a trailing payload-only user message that the bot sends\n" +" after conversation history. Because that message rides after the\n" +" cached prefix, placing dynamic (per-request) values here keeps the\n" +" cached prompt prefix stable so provider-side prompt caching remains\n" +" effective.\n\n" +" Variables admins have opted to include (via ``[p]floatingcontext``)\n" +" are rendered as self-encapsulated narrative sentences (e.g.\n" +" ``\"The current date is May 16, 2026.\"``) so admins do not need to\n" +" reference the variable in their prompt - toggling it on is enough for\n" +" the model to receive the value.\n\n" +" Returns the formatted block string, or an empty string if no values are\n" +" present.\n" +" " +msgstr "" + +#: assistant\common\chat.py:217 #, docstring msgid "Two-tier pruning of old tool/function results to save context window space.\n\n" " Tier 1 (soft-trim): when *context_fill_ratio* >= ``TOOL_RESULT_SOFT_RATIO``,\n" @@ -212,7 +248,7 @@ msgid "Two-tier pruning of old tool/function results to save context window spac " " msgstr "" -#: assistant\common\chat.py:182 +#: assistant\common\chat.py:261 #, docstring msgid "Remove images from messages once the model has responded enough times.\n\n" " Images are the most token-expensive content in a conversation (easily\n" @@ -226,7 +262,7 @@ msgid "Remove images from messages once the model has responded enough times.\n\ " " msgstr "" -#: assistant\common\chat.py:239 +#: assistant\common\chat.py:318 #, docstring msgid "Cap individual tool results to a fraction of the context window.\n\n" " Prevents a single massive tool result from crowding out everything else.\n" @@ -235,121 +271,130 @@ msgid "Cap individual tool results to a fraction of the context window.\n\n" " " msgstr "" -#: assistant\common\chat.py:265 +#: assistant\common\chat.py:344 #, docstring msgid "Filter kwargs for callables that do not accept arbitrary keyword args." msgstr "" -#: assistant\common\chat.py:285 +#: assistant\common\chat.py:364 #, docstring msgid "Return AllowedMentions allowing role/user pings for privileged members" msgstr "" -#: assistant\common\chat.py:314 +#: assistant\common\chat.py:393 msgid "Execution of admin tool `{}` requires interactive approval, but no interactive message context was available." msgstr "" -#: assistant\common\chat.py:325 +#: assistant\common\chat.py:402 msgid "`{}` wants to run admin tool `{}` from `{}` ({})\n" -"Choose `Approve Once`, `Allow This Session`, or `Skip`." +"Choose `Approve Once`, `Allow This Session`, `Skip`, or `Skip With Feedback`." msgstr "" -#: assistant\common\chat.py:340 +#: assistant\common\chat.py:413 assistant\common\chat.py:439 msgid "Approved once." msgstr "" -#: assistant\common\chat.py:341 +#: assistant\common\chat.py:414 assistant\common\chat.py:440 msgid "Approved for this session." msgstr "" -#: assistant\common\chat.py:342 +#: assistant\common\chat.py:415 assistant\common\chat.py:441 msgid "Skipped." msgstr "" -#: assistant\common\chat.py:343 +#: assistant\common\chat.py:416 assistant\common\chat.py:443 msgid "Approval timed out." msgstr "" -#: assistant\common\chat.py:355 +#: assistant\common\chat.py:442 +msgid "Skipped with feedback." +msgstr "" + +#: assistant\common\chat.py:456 msgid "SKIPPED: Approval for admin tool `{}` timed out. Do not claim it ran. Continue without it, ask again later, or try a different tool." msgstr "" -#: assistant\common\chat.py:360 +#: assistant\common\chat.py:461 msgid "SKIPPED: The user skipped admin tool `{}` for this call. Do not claim it ran. You may continue without it, ask for approval again later, or try a different tool." msgstr "" -#: assistant\common\chat.py:560 +#: assistant\common\chat.py:465 +msgid "\n\n" +"The user's feedback on why they skipped: {}" +msgstr "" + +#: assistant\common\chat.py:663 msgid "No message history!" msgstr "" -#: assistant\common\chat.py:582 assistant\common\chat.py:585 -#: assistant\common\chat.py:587 +#: assistant\common\chat.py:685 assistant\common\chat.py:688 +#: assistant\common\chat.py:690 msgid "Internal Server Error({}): {}" msgstr "" -#: assistant\common\chat.py:589 +#: assistant\common\chat.py:692 msgid "Failed to communicate with API!" msgstr "" -#: assistant\common\chat.py:593 +#: assistant\common\chat.py:696 msgid "Invalid API key, please set a new valid key!" msgstr "" -#: assistant\common\chat.py:595 +#: assistant\common\chat.py:698 msgid "Uh oh, looks like my API key is invalid!" msgstr "" -#: assistant\common\chat.py:597 +#: assistant\common\chat.py:700 msgid "Rate limit error: {}" msgstr "" -#: assistant\common\chat.py:599 +#: assistant\common\chat.py:702 msgid "Read timeout error: {}" msgstr "" -#: assistant\common\chat.py:605 +#: assistant\common\chat.py:711 msgid "Uh oh, something went wrong! Bot owner can use `{}` to view the error." msgstr "" -#: assistant\common\chat.py:608 +#: assistant\common\chat.py:714 msgid "API Status: {}" msgstr "" -#: assistant\common\chat.py:643 +#: assistant\common\chat.py:749 msgid "No results found" msgstr "" -#: assistant\common\chat.py:685 +#: assistant\common\chat.py:791 #, docstring msgid "Call the API asynchronously" msgstr "" -#: assistant\common\chat.py:803 +#: assistant\common\chat.py:909 msgid "None" msgstr "" -#: assistant\common\chat.py:911 +#: assistant\common\chat.py:1027 msgid "Request timed out, please try again." msgstr "" -#: assistant\common\chat.py:922 +#: assistant\common\chat.py:1044 msgid "Bad Request Error2({}): {}" msgstr "" -#: assistant\common\chat.py:924 +#: assistant\common\chat.py:1046 msgid "Bad Request Error({}): {}" msgstr "" -#: assistant\common\chat.py:1109 assistant\common\chat.py:1166 -#: assistant\common\chat.py:1199 +#: assistant\common\chat.py:1288 assistant\common\chat.py:1345 +#: assistant\common\chat.py:1378 msgid "Result sent!" msgstr "" -#: assistant\common\chat.py:1235 +#: assistant\common\chat.py:1414 msgid "Response failed due to invalid regex, check logs for more info." msgstr "" -#: assistant\common\chat.py:1278 +#: assistant\common\chat.py:1457 #, docstring msgid "Prepare content for calling the GPT API\n\n" " Args:\n" @@ -370,85 +415,94 @@ msgid "Prepare content for calling the GPT API\n\n" " " msgstr "" -#: assistant\common\chat.py:1386 +#: assistant\common\utils.py:29 #, docstring -msgid "Instead of format(**params) possibly giving a KeyError if prompt has code in it" +msgid "Translate a simple wildcard trigger phrase into a SAFE, linear regex string.\n\n" +" Only ``*`` (any run of characters, including none) is honored as a metacharacter;\n" +" everything else is escaped via ``re.escape``. This means staff of a public bot can\n" +" paste arbitrary text — including real regex like ``(a+)+`` — and it can never inject\n" +" catastrophic backtracking (ReDoS): the output contains only literals, ``.*`` and ``\\b``,\n" +" which the engine matches in linear time, so no multiprocessing timeout guard is needed.\n\n" +" A phrase with no leading/trailing ``*`` is anchored on word boundaries, so ``idiot``\n" +" hits the whole word ``idiot`` but not ``idiotic``. Add ``*`` to loosen it:\n" +" ``idiot*`` (prefix), ``*idiot`` (suffix), ``*idiot*`` (substring anywhere).\n" +" " msgstr "" -#: assistant\common\utils.py:28 assistant\common\utils.py:82 +#: assistant\common\utils.py:51 assistant\common\utils.py:105 msgid "Playing" msgstr "" -#: assistant\common\utils.py:29 assistant\common\utils.py:75 +#: assistant\common\utils.py:52 assistant\common\utils.py:98 msgid "Streaming" msgstr "" -#: assistant\common\utils.py:30 +#: assistant\common\utils.py:53 msgid "Listening" msgstr "" -#: assistant\common\utils.py:31 +#: assistant\common\utils.py:54 msgid "Watching" msgstr "" -#: assistant\common\utils.py:32 assistant\common\utils.py:67 +#: assistant\common\utils.py:55 assistant\common\utils.py:90 msgid "Custom status" msgstr "" -#: assistant\common\utils.py:33 +#: assistant\common\utils.py:56 msgid "Competing" msgstr "" -#: assistant\common\utils.py:38 +#: assistant\common\utils.py:61 msgid "Activity" msgstr "" -#: assistant\common\utils.py:55 +#: assistant\common\utils.py:78 msgid "Unknown track" msgstr "" -#: assistant\common\utils.py:56 +#: assistant\common\utils.py:79 msgid "Unknown artist" msgstr "" -#: assistant\common\utils.py:60 +#: assistant\common\utils.py:83 msgid "by {artist}" msgstr "" -#: assistant\common\utils.py:61 +#: assistant\common\utils.py:84 msgid "album: {album}" msgstr "" -#: assistant\common\utils.py:63 +#: assistant\common\utils.py:86 msgid "Listening to Spotify: {details}" msgstr "" -#: assistant\common\utils.py:67 +#: assistant\common\utils.py:90 msgid "Custom status: {status}" msgstr "" -#: assistant\common\utils.py:72 +#: assistant\common\utils.py:95 msgid "game: {game}" msgstr "" -#: assistant\common\utils.py:73 assistant\common\utils.py:80 -#: assistant\common\utils.py:91 +#: assistant\common\utils.py:96 assistant\common\utils.py:103 +#: assistant\common\utils.py:114 msgid "platform: {platform}" msgstr "" -#: assistant\common\utils.py:75 +#: assistant\common\utils.py:98 msgid "Streaming: {details}" msgstr "" -#: assistant\common\utils.py:82 +#: assistant\common\utils.py:105 msgid "Playing: {details}" msgstr "" -#: assistant\common\utils.py:92 +#: assistant\common\utils.py:115 msgid "buttons: {buttons}" msgstr "" -#: assistant\common\utils.py:181 +#: assistant\common\utils.py:204 #, docstring msgid "\n" " Cleans the function name to ensure it only contains alphanumeric characters,\n" @@ -460,53 +514,99 @@ msgid "\n" " " msgstr "" -#: assistant\common\utils.py:201 +#: assistant\common\utils.py:224 #, docstring msgid "Get all attachments from context" msgstr "" -#: assistant\common\utils.py:222 +#: assistant\common\utils.py:245 msgid "Canceled" msgstr "" -#: assistant\common\utils.py:235 +#: assistant\common\utils.py:258 msgid "You have been blacklisted from using this command!" msgstr "" -#: assistant\common\utils.py:239 +#: assistant\common\utils.py:262 msgid "You have a blacklisted role and cannot use this command!" msgstr "" -#: assistant\common\utils.py:243 +#: assistant\common\utils.py:266 msgid "You cannot use that command in this channel!" msgstr "" -#: assistant\common\utils.py:247 +#: assistant\common\utils.py:270 msgid "You cannot use that command in any channels under this category" msgstr "" -#: assistant\common\utils.py:282 assistant\common\utils.py:283 +#: assistant\common\utils.py:305 assistant\common\utils.py:306 msgid "[Code Removed]" msgstr "" -#: assistant\common\utils.py:409 +#: assistant\common\utils.py:457 +#, docstring +msgid "Substitute ``{key}`` placeholders in ``text`` from ``params``.\n\n" +" Uses ``str.replace`` rather than ``str.format`` so prompts containing\n" +" code blocks with curly braces don't raise ``KeyError``.\n" +" " +msgstr "" + +#: assistant\common\utils.py:478 +#, docstring +msgid "Stable, cache-safe prompt template variables.\n\n" +" These values do not change per-request and are safe to inject into the\n" +" `system_prompt` and `initial_prompt` without invalidating provider-side\n" +" prompt caching.\n\n" +" The `extras` dict is expected to only contain stable values (e.g. bank\n" +" type, currency, bank name). Per-user balances belong in\n" +" `get_dynamic_params()`.\n" +" " +msgstr "" + +#: assistant\common\utils.py:525 +#, docstring +msgid "Per-request prompt template variables that change frequently.\n\n" +" These values are kept separate from `get_base_params()` so callers can\n" +" choose to inject them into a trailing system-context block (preserving\n" +" prompt prefix stability for caching) rather than into the system/initial\n" +" prompts.\n\n" +" `dynamic_extras` may carry per-user dynamic values (such as the bank\n" +" balance) that need to be grouped with the other dynamic variables.\n\n" +" `last_interaction_seconds` is the elapsed time (in seconds) since the\n" +" user's previous message in the active conversation. Pass ``None`` if\n" +" this is the user's first message - the resulting value is the literal\n" +" string \"first message\".\n" +" " +msgstr "" + +#: assistant\common\utils.py:601 +#, docstring +msgid "Combined stable + dynamic prompt template variables.\n\n" +" Convenience helper that merges `get_base_params()` with\n" +" `get_dynamic_params()` for callers that don't care about cache-safe\n" +" separation. Cache-aware code paths should call the two split helpers\n" +" directly.\n" +" " +msgstr "" + +#: assistant\common\utils.py:645 #, docstring msgid "Make sure that if a conversation payload contains images that the model supports vision" msgstr "" -#: assistant\common\utils.py:429 +#: assistant\common\utils.py:665 #, docstring msgid "Remove all images sourced from URLs from the message payload" msgstr "" -#: assistant\common\utils.py:449 +#: assistant\common\utils.py:685 #, docstring msgid "Remove invisible Unicode characters that AI detectors might flag.\n\n" " Returns: (cleaned_text, was_modified)\n" " " msgstr "" -#: assistant\common\utils.py:479 +#: assistant\common\utils.py:715 #, docstring msgid "Clean the model response since its stupid and breaks itself\n\n" " Example\n" @@ -524,12 +624,12 @@ msgid "Clean the model response since its stupid and breaks itself\n\n" " " msgstr "" -#: assistant\common\utils.py:531 +#: assistant\common\utils.py:767 #, docstring msgid "Same as clean_response but cleans the whole message payload" msgstr "" -#: assistant\common\utils.py:546 +#: assistant\common\utils.py:782 #, docstring msgid "\n" " Ensure all tool calls satisfy schema requirements, modifying the messages payload in-place.\n\n" @@ -570,17 +670,17 @@ msgid "\n" " " msgstr "" -#: assistant\common\utils.py:650 +#: assistant\common\utils.py:886 #, docstring msgid "Check if a file is a supported document type" msgstr "" -#: assistant\common\utils.py:655 +#: assistant\common\utils.py:891 #, docstring msgid "Get the lowercase file extension from a filename" msgstr "" -#: assistant\common\utils.py:662 +#: assistant\common\utils.py:898 #, docstring msgid "Extract text content from PDF, Word, or Excel files\n\n" " Args:\n" @@ -591,17 +691,17 @@ msgid "Extract text content from PDF, Word, or Excel files\n\n" " " msgstr "" -#: assistant\common\utils.py:688 +#: assistant\common\utils.py:924 #, docstring msgid "Extract text from PDF files using PyMuPDF" msgstr "" -#: assistant\common\utils.py:726 +#: assistant\common\utils.py:962 #, docstring msgid "Extract text from Word documents using pypandoc" msgstr "" -#: assistant\common\utils.py:747 +#: assistant\common\utils.py:983 #, docstring msgid "Extract text from Excel files using pandas" msgstr "" From c6b807bee7f25b1c3f742c9d36b85f49ab2e6dd9 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Mon, 1 Jun 2026 11:11:20 -0400 Subject: [PATCH 072/104] New translations messages.pot (Croatian) [ci skip] --- assistant/locales/hr-HR.po | 457 +++++++++++++++++++++++++++++++------ 1 file changed, 390 insertions(+), 67 deletions(-) diff --git a/assistant/locales/hr-HR.po b/assistant/locales/hr-HR.po index 129c54847..5a79389bd 100644 --- a/assistant/locales/hr-HR.po +++ b/assistant/locales/hr-HR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-05-06 22:10-0400\n" -"PO-Revision-Date: 2026-05-07 03:04\n" +"POT-Creation-Date: 2026-06-01 09:46-0400\n" +"PO-Revision-Date: 2026-06-01 15:11\n" "Last-Translator: \n" "Language-Team: Croatian\n" "MIME-Version: 1.0\n" @@ -17,267 +17,590 @@ msgstr "" "X-Crowdin-File-ID: 57\n" "Language: hr_HR\n" -#: assistant\views.py:46 +#: assistant\views.py:54 msgid "Custom" msgstr "" -#: assistant\views.py:58 +#: assistant\views.py:66 msgid "Set API Key" msgstr "" -#: assistant\views.py:60 +#: assistant\views.py:68 msgid "Enter your API Key below" msgstr "" -#: assistant\views.py:81 assistant\views.py:214 assistant\views.py:663 -#: assistant\views.py:905 +#: assistant\views.py:89 assistant\views.py:519 assistant\views.py:968 +#: assistant\views.py:1484 assistant\views.py:1974 assistant\views.py:2264 msgid "This isn't your menu!" msgstr "" -#: assistant\views.py:104 +#: assistant\views.py:105 +msgid "Skip with feedback" +msgstr "" + +#: assistant\views.py:108 +msgid "Why are you skipping? (optional)" +msgstr "" + +#: assistant\views.py:130 msgid "This approval prompt isn't for you!" msgstr "" -#: assistant\views.py:145 +#: assistant\views.py:177 +msgid "Confirm: {}" +msgstr "" + +#: assistant\views.py:181 +msgid "Reason (blank = use AI's reason)" +msgstr "" + +#: assistant\views.py:204 +#, docstring +msgid "Dropdown of every action available on this server (built-ins + Ark/Notes)." +msgstr "" + +#: assistant\views.py:208 +msgid "Choose a different action…" +msgstr "" + +#: assistant\views.py:215 +#, docstring +msgid "Interactive staff panel proposing a moderation action suggested by the LLM." +msgstr "" + +#: assistant\views.py:245 +msgid "No reason provided." +msgstr "" + +#: assistant\views.py:268 +msgid "# 🧪 SIMULATION — dry run" +msgstr "" + +#: assistant\views.py:269 +msgid "-# Buttons take no real action; this is a test." +msgstr "" + +#: assistant\views.py:272 +msgid "# ⚠️ Proposed Moderation Action" +msgstr "" + +#: assistant\views.py:275 +msgid "**Suggested:** {emoji} {action} • **Severity:** {sev}" +msgstr "" + +#: assistant\views.py:282 +msgid "**User:** {mention} `{uid}`\n" +"**Message:** [jump to message]({url})\n" +"**Channel:** {channel}" +msgstr "" + +#: assistant\views.py:290 +msgid "-# Flagged for: {}" +msgstr "" + +#: assistant\views.py:292 +msgid "**Reason**\n" +"{}" +msgstr "" + +#: assistant\views.py:311 +msgid "**Context**\n" +"{}" +msgstr "" + +#: assistant\views.py:323 +msgid "{} (suggested)" +msgstr "" + +#: assistant\views.py:328 +msgid "No action" +msgstr "" + +#: assistant\views.py:354 assistant\views.py:378 +msgid "This panel was already resolved." +msgstr "" + +#: assistant\views.py:358 +msgid "You don't have permission to perform that action." +msgstr "" + +#: assistant\views.py:364 +msgid "✅ Dismissed — no action taken.\n" +"-# By {}" +msgstr "" + +#: assistant\views.py:383 +msgid "{outcome}\n" +"-# Action by {user}" +msgstr "" + +#: assistant\views.py:389 +msgid "🧪 (dry-run) Would **{action}** {target}.\n" +"-# {reason}" +msgstr "" + +#: assistant\views.py:434 +msgid "⏱️ Auto-action on timeout: {}" +msgstr "" + +#: assistant\views.py:450 msgid "Entry name" msgstr "" -#: assistant\views.py:153 +#: assistant\views.py:458 msgid "Training context" msgstr "" -#: assistant\views.py:172 +#: assistant\views.py:477 msgid "Search Query" msgstr "" -#: assistant\views.py:264 +#: assistant\views.py:569 msgid "Failed to process embedding `{}`\n" "Content: ```\n" "{}\n" "```" msgstr "" -#: assistant\views.py:266 +#: assistant\views.py:571 msgid "An embedding with the name `{}` already exists!" msgstr "" -#: assistant\views.py:271 +#: assistant\views.py:576 msgid "Your embedding labeled `{}` has been processed!" msgstr "" -#: assistant\views.py:282 +#: assistant\views.py:587 msgid "No embeddings to inspect!" msgstr "" -#: assistant\views.py:287 +#: assistant\views.py:592 msgid "Embedding not found!" msgstr "" -#: assistant\views.py:305 +#: assistant\views.py:610 msgid "No embeddings to edit!" msgstr "" -#: assistant\views.py:317 +#: assistant\views.py:622 msgid "Failed to edit that embedding, please try again later" msgstr "" -#: assistant\views.py:324 +#: assistant\views.py:629 msgid "Your embedding has been modified!" msgstr "" -#: assistant\views.py:364 +#: assistant\views.py:669 msgid "Add an embedding" msgstr "" -#: assistant\views.py:370 +#: assistant\views.py:675 msgid "Your embedding is processing and will appear when ready!" msgstr "" -#: assistant\views.py:386 +#: assistant\views.py:691 msgid "No embeddings to delete!" msgstr "" -#: assistant\views.py:388 +#: assistant\views.py:693 msgid "Deleted `{}` embedding." msgstr "" -#: assistant\views.py:414 +#: assistant\views.py:719 msgid "No embeddings to search!" msgstr "" -#: assistant\views.py:415 +#: assistant\views.py:720 msgid "Search for an embedding" msgstr "" -#: assistant\views.py:437 +#: assistant\views.py:742 msgid "Search result: **{}**" msgstr "" -#: assistant\views.py:474 +#: assistant\views.py:779 msgid "Function Edit" msgstr "" -#: assistant\views.py:483 +#: assistant\views.py:788 msgid "JSON Schema" msgstr "" -#: assistant\views.py:489 +#: assistant\views.py:794 msgid "Code" msgstr "" -#: assistant\views.py:495 +#: assistant\views.py:800 msgid "Permission Level" msgstr "" -#: assistant\views.py:496 +#: assistant\views.py:801 msgid "User, Mod, Admin, or Owner" msgstr "" -#: assistant\views.py:502 +#: assistant\views.py:807 msgid "Required Discord Permissions" msgstr "" -#: assistant\views.py:503 +#: assistant\views.py:808 msgid "e.g. manage_messages, kick_members (comma-separated, or leave blank)" msgstr "" -#: assistant\views.py:510 +#: assistant\views.py:815 msgid "Category" msgstr "" -#: assistant\views.py:511 +#: assistant\views.py:816 msgid "memory, web, utility" msgstr "" -#: assistant\views.py:523 +#: assistant\views.py:828 msgid "Invalid permission level, must be one of `User`, `Mod`, `Admin`, or `Owner`" msgstr "" -#: assistant\views.py:536 +#: assistant\views.py:841 msgid "Invalid Discord permission names: {}" msgstr "" -#: assistant\views.py:552 +#: assistant\views.py:857 assistant\views.py:1865 msgid "Toggle" msgstr "" -#: assistant\views.py:582 +#: assistant\views.py:887 msgid "Choose tools for {} ({}/{})..." msgstr "" -#: assistant\views.py:588 +#: assistant\views.py:893 msgid "Choose tools for {}..." msgstr "" -#: assistant\views.py:593 +#: assistant\views.py:898 msgid "No tools available" msgstr "" -#: assistant\views.py:606 +#: assistant\views.py:911 assistant\views.py:1387 assistant\views.py:1916 msgid "Prev" msgstr "" -#: assistant\views.py:615 +#: assistant\views.py:920 assistant\views.py:1396 assistant\views.py:1925 msgid "Next" msgstr "" -#: assistant\views.py:623 +#: assistant\views.py:928 assistant\views.py:1420 assistant\views.py:1933 msgid "Close" msgstr "" -#: assistant\views.py:718 +#: assistant\views.py:1023 msgid "{} {}/{} enabled • {} categories • Page {}/{}" msgstr "" -#: assistant\views.py:839 assistant\views.py:859 +#: assistant\views.py:1144 assistant\views.py:1164 assistant\views.py:2200 msgid "That category no longer exists." msgstr "" -#: assistant\views.py:1014 +#: assistant\views.py:1199 +#, docstring +msgid "Split a model id into (provider, short_name).\n\n" +" For ids like ``openai/gpt-4-turbo`` returns ``(\"openai\", \"gpt-4-turbo\")``.\n" +" For ids with no slash returns ``(PROVIDER_OTHER, model_id)``.\n" +" " +msgstr "" + +#: assistant\views.py:1214 +#, docstring +msgid "Group endpoint model ids by their provider prefix.\n\n" +" Returns an ordered dict: providers sorted alphabetically (``other`` last),\n" +" each value is the list of full model ids sorted by short name.\n" +" " +msgstr "" + +#: assistant\views.py:1235 +msgid "Other" +msgstr "" + +#: assistant\views.py:1265 +msgid "Pick a model from {} ({}/{})..." +msgstr "" + +#: assistant\views.py:1271 +msgid "Pick a model from {}..." +msgstr "" + +#: assistant\views.py:1276 +msgid "No models" +msgstr "" + +#: assistant\views.py:1295 +msgid "Enter Model ID" +msgstr "" + +#: assistant\views.py:1298 +msgid "Model ID" +msgstr "" + +#: assistant\views.py:1299 +msgid "e.g. openrouter/auto, openai/gpt-4o, anthropic/claude-3-opus" +msgstr "" + +#: assistant\views.py:1315 +msgid "Search Models" +msgstr "" + +#: assistant\views.py:1318 +msgid "Filter" +msgstr "" + +#: assistant\views.py:1319 +msgid "e.g. claude, gpt-4, mistral" +msgstr "" + +#: assistant\views.py:1335 +msgid "Model Slug Suffix" +msgstr "" + +#: assistant\views.py:1338 assistant\views.py:1360 +msgid "Suffix" +msgstr "" + +#: assistant\views.py:1339 +msgid ":nitro (throughput) :floor (price) :extended (blank = remove)" +msgstr "" + +#: assistant\views.py:1356 +msgid "Search" +msgstr "" + +#: assistant\views.py:1365 +msgid "Clear search" +msgstr "" + +#: assistant\views.py:1405 +msgid "Manual entry" +msgstr "" + +#: assistant\views.py:1413 +msgid "Re-probe" +msgstr "" + +#: assistant\views.py:1445 +#, docstring +msgid "Endpoint model picker grouped by provider prefix." +msgstr "" + +#: assistant\views.py:1532 +msgid "Chat model" +msgstr "" + +#: assistant\views.py:1532 +msgid "Embedding model" +msgstr "" + +#: assistant\views.py:1540 +msgid "# 🤖 {} picker" +msgstr "" + +#: assistant\views.py:1541 +msgid "-# Endpoint: `{}`" +msgstr "" + +#: assistant\views.py:1542 +msgid "Current: **{}**" +msgstr "" + +#: assistant\views.py:1542 assistant\views.py:1760 +msgid "(none)" +msgstr "" + +#: assistant\views.py:1545 +msgid "No models were discovered from this endpoint. Try **Re-probe** or use **Manual entry** to type a model id. Router endpoints like OpenRouter accept aliases such as `{}` or `{}`." +msgstr "" + +#: assistant\views.py:1565 +msgid "-# Search: `{}` • {} result(s)" +msgstr "" + +#: assistant\views.py:1568 +msgid "{} models across {} providers • Page {}/{}" +msgstr "" + +#: assistant\views.py:1577 +msgid "-# Tip: router endpoints accept aliases like `{}` or `{}` via **Manual entry**." +msgstr "" + +#: assistant\views.py:1687 assistant\views.py:1703 +msgid "{} set to **{}**" +msgstr "" + +#: assistant\views.py:1743 +msgid "Invalid suffix `{}`. Valid: {}." +msgstr "" + +#: assistant\views.py:1762 +msgid "Model set to **{}** (suffix: {})" +msgstr "" + +#: assistant\views.py:1784 +#, docstring +msgid "Return on/off/mixed for a trailing-block category.\n\n" +" Inclusion defaults to **off** for every variable on a fresh install.\n" +" " +msgstr "" + +#: assistant\views.py:1801 +#, docstring +msgid "Return every category eligible for the trailing-context-block menu.\n\n" +" Output: ``{category_key: {\"label\": str, \"variables\": [str, ...]}}``.\n\n" +" Inclusion in the floating block is fully admin-controlled - there is\n" +" no implicit default. On a fresh install everything is OFF (blank\n" +" slate). Admins opt variables in one at a time via the floatingcontext\n" +" menu.\n" +" " +msgstr "" + +#: assistant\views.py:1847 +#, docstring +msgid "Return a short human-readable description for a context variable." +msgstr "" + +#: assistant\views.py:1900 +msgid "Toggle individual vars in {}..." +msgstr "" + +#: assistant\views.py:1903 +msgid "No variables" +msgstr "" + +#: assistant\views.py:1993 +#, docstring +msgid "Return formatted warning lines for prompts containing dynamic vars." +msgstr "" + +#: assistant\views.py:2003 +msgid "**System prompt** - `{}`" +msgstr "" + +#: assistant\views.py:2006 +msgid "**Initial prompt** - `{}`" +msgstr "" + +#: assistant\views.py:2011 +msgid "<#{}> - `{}`" +msgstr "" + +#: assistant\views.py:2015 +#, docstring +msgid "Build a mapping of variable name → description for 3rd-party vars." +msgstr "" + +#: assistant\views.py:2049 +msgid "Toggle which variables are included in the trailing `[Current Context]` system message that the bot appends after conversation history. Everything is OFF by default - opt variables in one at a time. Variables you toggle on are rendered as self-encapsulated sentences (e.g. `\"The current date is May 16, 2026.\"`), so you do not need to author a prompt that references them." +msgstr "" + +#: assistant\views.py:2060 +msgid "{} {}/{} variables in block • {} categories • Page {}/{}" +msgstr "" + +#: assistant\views.py:2088 +msgid "(no variables)" +msgstr "" + +#: assistant\views.py:2104 +msgid "## ⚠️ Cache Warning" +msgstr "" + +#: assistant\views.py:2107 +msgid "These prompts contain dynamic variable placeholders that are substituted inline, which busts provider-side prompt-prefix caching on every request:" +msgstr "" + +#: assistant\views.py:2117 +msgid "Tip: remove the placeholder from your prompt and toggle the variable on in the menu above instead - the bot will append the value to the floating context block automatically." +msgstr "" + +#: assistant\views.py:2373 msgid "No code to inspect!" msgstr "" -#: assistant\views.py:1038 +#: assistant\views.py:2397 msgid "Here are your custom functions" msgstr "" -#: assistant\views.py:1043 +#: assistant\views.py:2402 msgid "Reply to this message with the json schema for your function\n" "- [Example Functions](https://github.com/vertyco/vrt-cogs/tree/main/assistant/example-funcs)" msgstr "" -#: assistant\views.py:1064 assistant\views.py:1142 +#: assistant\views.py:2423 assistant\views.py:2501 msgid "SchemaError\n" "{}" msgstr "" -#: assistant\views.py:1066 assistant\views.py:1144 +#: assistant\views.py:2425 assistant\views.py:2503 msgid "Empty schema!" msgstr "" -#: assistant\views.py:1069 assistant\views.py:1147 +#: assistant\views.py:2428 assistant\views.py:2506 msgid "Invalid schema!\n" "**Missing**\n" "{}" msgstr "" -#: assistant\views.py:1073 +#: assistant\views.py:2432 msgid "Reply to this message with the custom code" msgstr "" -#: assistant\views.py:1088 assistant\views.py:1153 +#: assistant\views.py:2447 assistant\views.py:2512 msgid "Invalid function" msgstr "" -#: assistant\views.py:1092 +#: assistant\views.py:2451 msgid "`{}` has been overwritten!" msgstr "" -#: assistant\views.py:1094 +#: assistant\views.py:2453 msgid "`{}` has been created!" msgstr "" -#: assistant\views.py:1105 +#: assistant\views.py:2464 msgid "No code to edit!" msgstr "" -#: assistant\views.py:1113 assistant\views.py:1185 +#: assistant\views.py:2472 assistant\views.py:2544 msgid "Could not find function!" msgstr "" -#: assistant\views.py:1115 +#: assistant\views.py:2474 msgid "This function is managed by the `{}` cog and cannot be edited" msgstr "" -#: assistant\views.py:1121 +#: assistant\views.py:2480 msgid "The json schema for this function is too long, you'll need to re-upload it to modify" msgstr "" -#: assistant\views.py:1126 +#: assistant\views.py:2485 msgid "The code for this function is too long, you'll need to re-upload it to modify" msgstr "" -#: assistant\views.py:1170 +#: assistant\views.py:2529 msgid "`{}` function updated!" msgstr "" -#: assistant\views.py:1178 +#: assistant\views.py:2537 msgid "No code to delete!" msgstr "" -#: assistant\views.py:1187 +#: assistant\views.py:2546 msgid "This function is managed by the `{}` cog and cannot be deleted" msgstr "" -#: assistant\views.py:1194 +#: assistant\views.py:2553 msgid "`{}` has been deleted!" msgstr "" -#: assistant\views.py:1201 +#: assistant\views.py:2560 msgid "No code to toggle!" msgstr "" -#: assistant\views.py:1215 +#: assistant\views.py:2574 msgid "Search for a function" msgstr "" From 59447ab58d3069f43666e989196da81eeb97737b Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Fri, 5 Jun 2026 17:10:58 -0400 Subject: [PATCH 073/104] New translations messages.pot (French) [ci skip] --- assistant/commands/locales/fr-FR.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/assistant/commands/locales/fr-FR.po b/assistant/commands/locales/fr-FR.po index fb277a52b..efd88e057 100644 --- a/assistant/commands/locales/fr-FR.po +++ b/assistant/commands/locales/fr-FR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-06-01 09:46-0400\n" -"PO-Revision-Date: 2026-06-01 15:10\n" +"POT-Creation-Date: 2026-06-05 15:41-0400\n" +"PO-Revision-Date: 2026-06-05 21:10\n" "Last-Translator: \n" "Language-Team: French\n" "MIME-Version: 1.0\n" @@ -1614,12 +1614,12 @@ msgstr "" #, docstring msgid "Switch reasoning effort between none, minimal, low, medium, high, and xhigh\n\n" " Not all models support every level. Unsupported levels are automatically mapped to the closest supported value.\n" -" - **none**: No reasoning (gpt-5.4 only, skipped for other models)\n" +" - **none**: No reasoning (gpt-5.4/5.5 only, skipped for other models)\n" " - **minimal**: Minimal reasoning (gpt-5 only, mapped to low for o-series)\n" " - **low**: Low reasoning effort\n" " - **medium**: Medium reasoning effort\n" " - **high**: High reasoning effort\n" -" - **xhigh**: Maximum reasoning (gpt-5.4 only, mapped to high for other models)\n" +" - **xhigh**: Maximum reasoning (gpt-5.4/5.5 only, mapped to high for other models)\n" " " msgstr "" From 2dcc73d365ff96e900ab92fd403f0698d8cc631e Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Fri, 5 Jun 2026 17:10:59 -0400 Subject: [PATCH 074/104] New translations messages.pot (Spanish) [ci skip] --- assistant/commands/locales/es-ES.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/assistant/commands/locales/es-ES.po b/assistant/commands/locales/es-ES.po index 9dd33a5ec..b579afae9 100644 --- a/assistant/commands/locales/es-ES.po +++ b/assistant/commands/locales/es-ES.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-06-01 09:46-0400\n" -"PO-Revision-Date: 2026-06-01 15:10\n" +"POT-Creation-Date: 2026-06-05 15:41-0400\n" +"PO-Revision-Date: 2026-06-05 21:10\n" "Last-Translator: \n" "Language-Team: Spanish\n" "MIME-Version: 1.0\n" @@ -1632,12 +1632,12 @@ msgstr "" #, docstring msgid "Switch reasoning effort between none, minimal, low, medium, high, and xhigh\n\n" " Not all models support every level. Unsupported levels are automatically mapped to the closest supported value.\n" -" - **none**: No reasoning (gpt-5.4 only, skipped for other models)\n" +" - **none**: No reasoning (gpt-5.4/5.5 only, skipped for other models)\n" " - **minimal**: Minimal reasoning (gpt-5 only, mapped to low for o-series)\n" " - **low**: Low reasoning effort\n" " - **medium**: Medium reasoning effort\n" " - **high**: High reasoning effort\n" -" - **xhigh**: Maximum reasoning (gpt-5.4 only, mapped to high for other models)\n" +" - **xhigh**: Maximum reasoning (gpt-5.4/5.5 only, mapped to high for other models)\n" " " msgstr "" From ae841dad397331c400ce426ece4b8334516e9520 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Fri, 5 Jun 2026 17:11:01 -0400 Subject: [PATCH 075/104] New translations messages.pot (German) [ci skip] --- assistant/commands/locales/de-DE.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/assistant/commands/locales/de-DE.po b/assistant/commands/locales/de-DE.po index dffc85f95..9f55b12ec 100644 --- a/assistant/commands/locales/de-DE.po +++ b/assistant/commands/locales/de-DE.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-06-01 09:46-0400\n" -"PO-Revision-Date: 2026-06-01 15:10\n" +"POT-Creation-Date: 2026-06-05 15:41-0400\n" +"PO-Revision-Date: 2026-06-05 21:11\n" "Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" @@ -1612,12 +1612,12 @@ msgstr "" #, docstring msgid "Switch reasoning effort between none, minimal, low, medium, high, and xhigh\n\n" " Not all models support every level. Unsupported levels are automatically mapped to the closest supported value.\n" -" - **none**: No reasoning (gpt-5.4 only, skipped for other models)\n" +" - **none**: No reasoning (gpt-5.4/5.5 only, skipped for other models)\n" " - **minimal**: Minimal reasoning (gpt-5 only, mapped to low for o-series)\n" " - **low**: Low reasoning effort\n" " - **medium**: Medium reasoning effort\n" " - **high**: High reasoning effort\n" -" - **xhigh**: Maximum reasoning (gpt-5.4 only, mapped to high for other models)\n" +" - **xhigh**: Maximum reasoning (gpt-5.4/5.5 only, mapped to high for other models)\n" " " msgstr "" From 90b30c046eb1d7a3290bbff74a002c9fcd731479 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Fri, 5 Jun 2026 17:11:02 -0400 Subject: [PATCH 076/104] New translations messages.pot (Korean) [ci skip] --- assistant/commands/locales/ko-KR.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/assistant/commands/locales/ko-KR.po b/assistant/commands/locales/ko-KR.po index 26409c7dc..d8ba6e871 100644 --- a/assistant/commands/locales/ko-KR.po +++ b/assistant/commands/locales/ko-KR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-06-01 09:46-0400\n" -"PO-Revision-Date: 2026-06-01 15:10\n" +"POT-Creation-Date: 2026-06-05 15:41-0400\n" +"PO-Revision-Date: 2026-06-05 21:11\n" "Last-Translator: \n" "Language-Team: Korean\n" "MIME-Version: 1.0\n" @@ -1611,12 +1611,12 @@ msgstr "" #, docstring msgid "Switch reasoning effort between none, minimal, low, medium, high, and xhigh\n\n" " Not all models support every level. Unsupported levels are automatically mapped to the closest supported value.\n" -" - **none**: No reasoning (gpt-5.4 only, skipped for other models)\n" +" - **none**: No reasoning (gpt-5.4/5.5 only, skipped for other models)\n" " - **minimal**: Minimal reasoning (gpt-5 only, mapped to low for o-series)\n" " - **low**: Low reasoning effort\n" " - **medium**: Medium reasoning effort\n" " - **high**: High reasoning effort\n" -" - **xhigh**: Maximum reasoning (gpt-5.4 only, mapped to high for other models)\n" +" - **xhigh**: Maximum reasoning (gpt-5.4/5.5 only, mapped to high for other models)\n" " " msgstr "" From 3f8dd5351f128aa8e80285e1d8bee222e0bdfc4f Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Fri, 5 Jun 2026 17:11:04 -0400 Subject: [PATCH 077/104] New translations messages.pot (Portuguese) [ci skip] --- assistant/commands/locales/pt-PT.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/assistant/commands/locales/pt-PT.po b/assistant/commands/locales/pt-PT.po index 83df11aed..a292dd8cb 100644 --- a/assistant/commands/locales/pt-PT.po +++ b/assistant/commands/locales/pt-PT.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-06-01 09:46-0400\n" -"PO-Revision-Date: 2026-06-01 15:10\n" +"POT-Creation-Date: 2026-06-05 15:41-0400\n" +"PO-Revision-Date: 2026-06-05 21:11\n" "Last-Translator: \n" "Language-Team: Portuguese\n" "MIME-Version: 1.0\n" @@ -1616,12 +1616,12 @@ msgstr "" #, docstring msgid "Switch reasoning effort between none, minimal, low, medium, high, and xhigh\n\n" " Not all models support every level. Unsupported levels are automatically mapped to the closest supported value.\n" -" - **none**: No reasoning (gpt-5.4 only, skipped for other models)\n" +" - **none**: No reasoning (gpt-5.4/5.5 only, skipped for other models)\n" " - **minimal**: Minimal reasoning (gpt-5 only, mapped to low for o-series)\n" " - **low**: Low reasoning effort\n" " - **medium**: Medium reasoning effort\n" " - **high**: High reasoning effort\n" -" - **xhigh**: Maximum reasoning (gpt-5.4 only, mapped to high for other models)\n" +" - **xhigh**: Maximum reasoning (gpt-5.4/5.5 only, mapped to high for other models)\n" " " msgstr "" From 5678ed29daee1f54bae802f57afbf15c5d784bdd Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Fri, 5 Jun 2026 17:11:05 -0400 Subject: [PATCH 078/104] New translations messages.pot (Russian) [ci skip] --- assistant/commands/locales/ru-RU.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/assistant/commands/locales/ru-RU.po b/assistant/commands/locales/ru-RU.po index 1792c1e6c..034d5019b 100644 --- a/assistant/commands/locales/ru-RU.po +++ b/assistant/commands/locales/ru-RU.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-06-01 09:46-0400\n" -"PO-Revision-Date: 2026-06-01 15:10\n" +"POT-Creation-Date: 2026-06-05 15:41-0400\n" +"PO-Revision-Date: 2026-06-05 21:11\n" "Last-Translator: \n" "Language-Team: Russian\n" "MIME-Version: 1.0\n" @@ -1600,12 +1600,12 @@ msgstr "" #, docstring msgid "Switch reasoning effort between none, minimal, low, medium, high, and xhigh\n\n" " Not all models support every level. Unsupported levels are automatically mapped to the closest supported value.\n" -" - **none**: No reasoning (gpt-5.4 only, skipped for other models)\n" +" - **none**: No reasoning (gpt-5.4/5.5 only, skipped for other models)\n" " - **minimal**: Minimal reasoning (gpt-5 only, mapped to low for o-series)\n" " - **low**: Low reasoning effort\n" " - **medium**: Medium reasoning effort\n" " - **high**: High reasoning effort\n" -" - **xhigh**: Maximum reasoning (gpt-5.4 only, mapped to high for other models)\n" +" - **xhigh**: Maximum reasoning (gpt-5.4/5.5 only, mapped to high for other models)\n" " " msgstr "" From 4cc4f19475c78b1c324c34d347a255c54759b95a Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Fri, 5 Jun 2026 17:11:07 -0400 Subject: [PATCH 079/104] New translations messages.pot (Turkish) [ci skip] --- assistant/commands/locales/tr-TR.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/assistant/commands/locales/tr-TR.po b/assistant/commands/locales/tr-TR.po index 893e13424..0967049a1 100644 --- a/assistant/commands/locales/tr-TR.po +++ b/assistant/commands/locales/tr-TR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-06-01 09:46-0400\n" -"PO-Revision-Date: 2026-06-01 15:10\n" +"POT-Creation-Date: 2026-06-05 15:41-0400\n" +"PO-Revision-Date: 2026-06-05 21:11\n" "Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" @@ -1613,12 +1613,12 @@ msgstr "" #, docstring msgid "Switch reasoning effort between none, minimal, low, medium, high, and xhigh\n\n" " Not all models support every level. Unsupported levels are automatically mapped to the closest supported value.\n" -" - **none**: No reasoning (gpt-5.4 only, skipped for other models)\n" +" - **none**: No reasoning (gpt-5.4/5.5 only, skipped for other models)\n" " - **minimal**: Minimal reasoning (gpt-5 only, mapped to low for o-series)\n" " - **low**: Low reasoning effort\n" " - **medium**: Medium reasoning effort\n" " - **high**: High reasoning effort\n" -" - **xhigh**: Maximum reasoning (gpt-5.4 only, mapped to high for other models)\n" +" - **xhigh**: Maximum reasoning (gpt-5.4/5.5 only, mapped to high for other models)\n" " " msgstr "" From 89664fc4f9680ece57327bfc6fa78ebb71496bc1 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Fri, 5 Jun 2026 17:11:08 -0400 Subject: [PATCH 080/104] New translations messages.pot (Croatian) [ci skip] --- assistant/commands/locales/hr-HR.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/assistant/commands/locales/hr-HR.po b/assistant/commands/locales/hr-HR.po index e2ca92c3f..9f684b5cd 100644 --- a/assistant/commands/locales/hr-HR.po +++ b/assistant/commands/locales/hr-HR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2026-06-01 09:46-0400\n" -"PO-Revision-Date: 2026-06-01 15:10\n" +"POT-Creation-Date: 2026-06-05 15:41-0400\n" +"PO-Revision-Date: 2026-06-05 21:11\n" "Last-Translator: \n" "Language-Team: Croatian\n" "MIME-Version: 1.0\n" @@ -1600,12 +1600,12 @@ msgstr "" #, docstring msgid "Switch reasoning effort between none, minimal, low, medium, high, and xhigh\n\n" " Not all models support every level. Unsupported levels are automatically mapped to the closest supported value.\n" -" - **none**: No reasoning (gpt-5.4 only, skipped for other models)\n" +" - **none**: No reasoning (gpt-5.4/5.5 only, skipped for other models)\n" " - **minimal**: Minimal reasoning (gpt-5 only, mapped to low for o-series)\n" " - **low**: Low reasoning effort\n" " - **medium**: Medium reasoning effort\n" " - **high**: High reasoning effort\n" -" - **xhigh**: Maximum reasoning (gpt-5.4 only, mapped to high for other models)\n" +" - **xhigh**: Maximum reasoning (gpt-5.4/5.5 only, mapped to high for other models)\n" " " msgstr "" From 3d9e986f0567b3ddd512faf85b49ea8256aafd8f Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Wed, 24 Jun 2026 09:20:17 -0400 Subject: [PATCH 081/104] New translations messages.pot (French) [ci skip] --- guildlock/common/locales/fr-FR.po | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/guildlock/common/locales/fr-FR.po b/guildlock/common/locales/fr-FR.po index 1d95d04ff..d43b64ac3 100644 --- a/guildlock/common/locales/fr-FR.po +++ b/guildlock/common/locales/fr-FR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2023-10-26 15:12-0400\n" -"PO-Revision-Date: 2024-12-03 14:56\n" +"POT-Creation-Date: 2026-05-06 22:10-0400\n" +"PO-Revision-Date: 2026-06-24 13:20\n" "Last-Translator: \n" "Language-Team: French\n" "MIME-Version: 1.0\n" @@ -17,27 +17,27 @@ msgstr "" "X-Crowdin-File-ID: 96\n" "Language: fr_FR\n" -#: common\views.py:13 +#: guildlock\common\views.py:13 msgid "Yes" msgstr "Oui" -#: common\views.py:14 +#: guildlock\common\views.py:14 msgid "No" msgstr "Non" -#: common\views.py:20 common\views.py:82 +#: guildlock\common\views.py:20 guildlock\common\views.py:82 msgid "This isn't your menu!" msgstr "Ce n'est pas votre menu !" -#: common\views.py:43 +#: guildlock\common\views.py:43 msgid "Select a Page" msgstr "" -#: common\views.py:46 +#: guildlock\common\views.py:46 msgid "Enter Page Number" msgstr "" -#: common\views.py:176 +#: guildlock\common\views.py:176 msgid "Page must be a number!" msgstr "" From 54719f2d4361398f367e07b515d7be2b3419b3d9 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Wed, 24 Jun 2026 09:20:19 -0400 Subject: [PATCH 082/104] New translations messages.pot (French) [ci skip] --- guildlock/locales/fr-FR.po | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/guildlock/locales/fr-FR.po b/guildlock/locales/fr-FR.po index 890e4e8ba..ea4554d0b 100644 --- a/guildlock/locales/fr-FR.po +++ b/guildlock/locales/fr-FR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2023-10-16 18:28-0400\n" -"PO-Revision-Date: 2024-12-03 14:56\n" +"POT-Creation-Date: 2026-05-06 22:10-0400\n" +"PO-Revision-Date: 2026-06-24 13:20\n" "Last-Translator: \n" "Language-Team: French\n" "MIME-Version: 1.0\n" @@ -17,7 +17,7 @@ msgstr "" "X-Crowdin-File-ID: 98\n" "Language: fr_FR\n" -#: main.py:26 +#: guildlock\main.py:26 #, docstring msgid "\n" " Tools for managing guild joins and leaves.\n" @@ -26,65 +26,65 @@ msgstr "\n" " Outils de gestion des entrées et sorties de guilde.\n" " " -#: main.py:56 +#: guildlock\main.py:56 msgid "Version: {}\n" "Author: {}" msgstr "" -#: main.py:60 +#: guildlock\main.py:60 #, docstring msgid "No data to delete" msgstr "Pas de données à supprimer" -#: main.py:64 +#: guildlock\main.py:64 msgid "I have left this server because it is blacklisted" msgstr "J'ai quitté ce serveur car il est sur liste noire" -#: main.py:65 +#: guildlock\main.py:65 msgid "I have left this server because it is not whitelisted" msgstr "J'ai quitté ce serveur car il n'est pas sur la liste blanche" -#: main.py:66 +#: guildlock\main.py:66 msgid "I have left this server because I am already at maximum capacity" msgstr "J'ai quitté ce serveur parce que j'ai déjà atteint ma capacité maximale" -#: main.py:67 +#: guildlock\main.py:67 msgid "I have left this server because it has less than {} members" msgstr "" -#: main.py:68 +#: guildlock\main.py:68 msgid "I have left this server because {}% of its members are bots" msgstr "" -#: main.py:76 +#: guildlock\main.py:76 msgid "Guild is in the blacklist" msgstr "La guilde est dans la liste noire" -#: main.py:77 +#: guildlock\main.py:77 msgid "Guild is not in the whitelist" msgstr "Guild n'est pas dans la liste blanche" -#: main.py:78 +#: guildlock\main.py:78 msgid "Cannot surpass guild limit of {}" msgstr "" -#: main.py:79 +#: guildlock\main.py:79 msgid "Guild has less than {} members" msgstr "" -#: main.py:80 +#: guildlock\main.py:80 msgid "Guild exceeds bot threshold of {}% ({}%)" msgstr "" -#: main.py:115 +#: guildlock\main.py:115 msgid "Reason: {}" msgstr "" -#: main.py:116 +#: guildlock\main.py:116 msgid "Left {}" msgstr "" -#: main.py:118 +#: guildlock\main.py:118 msgid "Owner: {}" msgstr "" From 266ff984d19aa9fb06495b5fdee1dadf64e8a875 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Wed, 24 Jun 2026 09:20:20 -0400 Subject: [PATCH 083/104] New translations messages.pot (French) [ci skip] --- bankdecay/locales/fr-FR.po | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/bankdecay/locales/fr-FR.po b/bankdecay/locales/fr-FR.po index 39e5489b9..ad7d0ec58 100644 --- a/bankdecay/locales/fr-FR.po +++ b/bankdecay/locales/fr-FR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2024-02-08 18:30-0500\n" -"PO-Revision-Date: 2024-12-03 14:57\n" +"POT-Creation-Date: 2026-05-06 22:10-0400\n" +"PO-Revision-Date: 2026-06-24 13:20\n" "Last-Translator: \n" "Language-Team: French\n" "MIME-Version: 1.0\n" @@ -17,7 +17,7 @@ msgstr "" "X-Crowdin-File-ID: 110\n" "Language: fr_FR\n" -#: main.py:29 +#: bankdecay\main.py:29 #, docstring msgid "\n" " Economy decay!\n\n" @@ -27,20 +27,20 @@ msgid "\n" " " msgstr "" -#: main.py:157 +#: bankdecay\main.py:169 msgid "Bank Decay Cycle" msgstr "" -#: main.py:159 +#: bankdecay\main.py:171 msgid "- User Balances Decayed: {}\n" "- Total Amount Decayed: {}" msgstr "" -#: main.py:164 +#: bankdecay\main.py:176 msgid "No user balances were decayed during this cycle." msgstr "" -#: main.py:214 +#: bankdecay\main.py:226 #, docstring msgid "No data to delete" msgstr "" From 792fd7a7409e96e717c8051395902a6064c90db0 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Wed, 24 Jun 2026 09:20:24 -0400 Subject: [PATCH 084/104] New translations messages.pot (Spanish) [ci skip] --- guildlock/common/locales/es-ES.po | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/guildlock/common/locales/es-ES.po b/guildlock/common/locales/es-ES.po index 10985458e..660b1f9bf 100644 --- a/guildlock/common/locales/es-ES.po +++ b/guildlock/common/locales/es-ES.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2023-10-26 15:12-0400\n" -"PO-Revision-Date: 2024-12-03 14:56\n" +"POT-Creation-Date: 2026-05-06 22:10-0400\n" +"PO-Revision-Date: 2026-06-24 13:20\n" "Last-Translator: \n" "Language-Team: Spanish\n" "MIME-Version: 1.0\n" @@ -17,27 +17,27 @@ msgstr "" "X-Crowdin-File-ID: 96\n" "Language: es_ES\n" -#: common\views.py:13 +#: guildlock\common\views.py:13 msgid "Yes" msgstr "Sí" -#: common\views.py:14 +#: guildlock\common\views.py:14 msgid "No" msgstr "No" -#: common\views.py:20 common\views.py:82 +#: guildlock\common\views.py:20 guildlock\common\views.py:82 msgid "This isn't your menu!" msgstr "¡Este no es tu menú!" -#: common\views.py:43 +#: guildlock\common\views.py:43 msgid "Select a Page" msgstr "Selecciona una página" -#: common\views.py:46 +#: guildlock\common\views.py:46 msgid "Enter Page Number" msgstr "Ingresa el número de página" -#: common\views.py:176 +#: guildlock\common\views.py:176 msgid "Page must be a number!" msgstr "¡La página debe ser un número!" From 398fafdb5110cf34e4bd9db56cd90047ab060857 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Wed, 24 Jun 2026 09:20:25 -0400 Subject: [PATCH 085/104] New translations messages.pot (Spanish) [ci skip] --- guildlock/locales/es-ES.po | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/guildlock/locales/es-ES.po b/guildlock/locales/es-ES.po index 20aa0271b..170233c77 100644 --- a/guildlock/locales/es-ES.po +++ b/guildlock/locales/es-ES.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2023-10-16 18:28-0400\n" -"PO-Revision-Date: 2024-12-03 14:56\n" +"POT-Creation-Date: 2026-05-06 22:10-0400\n" +"PO-Revision-Date: 2026-06-24 13:20\n" "Last-Translator: \n" "Language-Team: Spanish\n" "MIME-Version: 1.0\n" @@ -17,7 +17,7 @@ msgstr "" "X-Crowdin-File-ID: 98\n" "Language: es_ES\n" -#: main.py:26 +#: guildlock\main.py:26 #, docstring msgid "\n" " Tools for managing guild joins and leaves.\n" @@ -26,66 +26,66 @@ msgstr "\n" " Herramientas para gestionar las altas y bajas en los gremios.\n" " " -#: main.py:56 +#: guildlock\main.py:56 msgid "Version: {}\n" "Author: {}" msgstr "Versión: {}\n" "Autor: {}" -#: main.py:60 +#: guildlock\main.py:60 #, docstring msgid "No data to delete" msgstr "No hay datos que borrar" -#: main.py:64 +#: guildlock\main.py:64 msgid "I have left this server because it is blacklisted" msgstr "He dejado este servidor porque está en la lista negra" -#: main.py:65 +#: guildlock\main.py:65 msgid "I have left this server because it is not whitelisted" msgstr "He dejado este servidor porque no está en la lista blanca" -#: main.py:66 +#: guildlock\main.py:66 msgid "I have left this server because I am already at maximum capacity" msgstr "He abandonado este servidor porque ya estoy al máximo de mi capacidad" -#: main.py:67 +#: guildlock\main.py:67 msgid "I have left this server because it has less than {} members" msgstr "He dejado este servidor porque tiene menos de {} miembros" -#: main.py:68 +#: guildlock\main.py:68 msgid "I have left this server because {}% of its members are bots" msgstr "He dejado este servidor porque {}% de sus miembros son bots" -#: main.py:76 +#: guildlock\main.py:76 msgid "Guild is in the blacklist" msgstr "Guild está en la lista negra" -#: main.py:77 +#: guildlock\main.py:77 msgid "Guild is not in the whitelist" msgstr "El gremio no está en la lista blanca" -#: main.py:78 +#: guildlock\main.py:78 msgid "Cannot surpass guild limit of {}" msgstr "No se puede superar el límite de la guild de {}" -#: main.py:79 +#: guildlock\main.py:79 msgid "Guild has less than {} members" msgstr "La guild tiene menos de {} miembros" -#: main.py:80 +#: guildlock\main.py:80 msgid "Guild exceeds bot threshold of {}% ({}%)" msgstr "La guild excede el umbral de bots de {}% ({}%)" -#: main.py:115 +#: guildlock\main.py:115 msgid "Reason: {}" msgstr "Razón: {}" -#: main.py:116 +#: guildlock\main.py:116 msgid "Left {}" msgstr "Dejado {}" -#: main.py:118 +#: guildlock\main.py:118 msgid "Owner: {}" msgstr "Propietario: {}" From 2c652532acb0d24a9763ee86c027cae8c567a8a7 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Wed, 24 Jun 2026 09:20:27 -0400 Subject: [PATCH 086/104] New translations messages.pot (Spanish) [ci skip] --- bankdecay/locales/es-ES.po | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/bankdecay/locales/es-ES.po b/bankdecay/locales/es-ES.po index c9f010f8c..6cab8c9af 100644 --- a/bankdecay/locales/es-ES.po +++ b/bankdecay/locales/es-ES.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2024-02-08 18:30-0500\n" -"PO-Revision-Date: 2024-12-03 14:57\n" +"POT-Creation-Date: 2026-05-06 22:10-0400\n" +"PO-Revision-Date: 2026-06-24 13:20\n" "Last-Translator: \n" "Language-Team: Spanish\n" "MIME-Version: 1.0\n" @@ -17,7 +17,7 @@ msgstr "" "X-Crowdin-File-ID: 110\n" "Language: es_ES\n" -#: main.py:29 +#: bankdecay\main.py:29 #, docstring msgid "\n" " Economy decay!\n\n" @@ -32,21 +32,21 @@ msgstr "\n" " La actividad de los usuarios se rastrea a través de mensajes y reacciones.\n" " " -#: main.py:157 +#: bankdecay\main.py:169 msgid "Bank Decay Cycle" msgstr "Ciclo de Degradación Bancaria" -#: main.py:159 +#: bankdecay\main.py:171 msgid "- User Balances Decayed: {}\n" "- Total Amount Decayed: {}" msgstr "- Saldos de Usuarios Degradados: {}\n" "- Cantidad Total Degradada: {}" -#: main.py:164 +#: bankdecay\main.py:176 msgid "No user balances were decayed during this cycle." msgstr "No se degradaron saldos de usuarios durante este ciclo." -#: main.py:214 +#: bankdecay\main.py:226 #, docstring msgid "No data to delete" msgstr "No hay datos que borrar" From 8e1d5c71e5b6e0e2cf65bc58a7e8e0d37a742ef0 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Wed, 24 Jun 2026 09:20:30 -0400 Subject: [PATCH 087/104] New translations messages.pot (German) [ci skip] --- guildlock/common/locales/de-DE.po | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/guildlock/common/locales/de-DE.po b/guildlock/common/locales/de-DE.po index e13389c9b..d50a46251 100644 --- a/guildlock/common/locales/de-DE.po +++ b/guildlock/common/locales/de-DE.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2023-10-26 15:12-0400\n" -"PO-Revision-Date: 2024-12-03 14:56\n" +"POT-Creation-Date: 2026-05-06 22:10-0400\n" +"PO-Revision-Date: 2026-06-24 13:20\n" "Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" @@ -17,27 +17,27 @@ msgstr "" "X-Crowdin-File-ID: 96\n" "Language: de_DE\n" -#: common\views.py:13 +#: guildlock\common\views.py:13 msgid "Yes" msgstr "Ja" -#: common\views.py:14 +#: guildlock\common\views.py:14 msgid "No" msgstr "Nein" -#: common\views.py:20 common\views.py:82 +#: guildlock\common\views.py:20 guildlock\common\views.py:82 msgid "This isn't your menu!" msgstr "Das ist nicht Ihre Speisekarte!" -#: common\views.py:43 +#: guildlock\common\views.py:43 msgid "Select a Page" msgstr "" -#: common\views.py:46 +#: guildlock\common\views.py:46 msgid "Enter Page Number" msgstr "" -#: common\views.py:176 +#: guildlock\common\views.py:176 msgid "Page must be a number!" msgstr "" From deefa5faebba488125f034995860c75cb759c512 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Wed, 24 Jun 2026 09:20:32 -0400 Subject: [PATCH 088/104] New translations messages.pot (German) [ci skip] --- guildlock/locales/de-DE.po | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/guildlock/locales/de-DE.po b/guildlock/locales/de-DE.po index 06d72dfa7..526839c0d 100644 --- a/guildlock/locales/de-DE.po +++ b/guildlock/locales/de-DE.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2023-10-16 18:28-0400\n" -"PO-Revision-Date: 2024-12-03 14:56\n" +"POT-Creation-Date: 2026-05-06 22:10-0400\n" +"PO-Revision-Date: 2026-06-24 13:20\n" "Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" @@ -17,7 +17,7 @@ msgstr "" "X-Crowdin-File-ID: 98\n" "Language: de_DE\n" -#: main.py:26 +#: guildlock\main.py:26 #, docstring msgid "\n" " Tools for managing guild joins and leaves.\n" @@ -26,65 +26,65 @@ msgstr "\n" " Werkzeuge zur Verwaltung von Gildenbeitritten und -austritten.\n" " " -#: main.py:56 +#: guildlock\main.py:56 msgid "Version: {}\n" "Author: {}" msgstr "" -#: main.py:60 +#: guildlock\main.py:60 #, docstring msgid "No data to delete" msgstr "Keine Daten zu löschen" -#: main.py:64 +#: guildlock\main.py:64 msgid "I have left this server because it is blacklisted" msgstr "Ich habe diesen Server verlassen, weil er auf der schwarzen Liste steht" -#: main.py:65 +#: guildlock\main.py:65 msgid "I have left this server because it is not whitelisted" msgstr "Ich habe diesen Server verlassen, weil er nicht auf der Whitelist ist" -#: main.py:66 +#: guildlock\main.py:66 msgid "I have left this server because I am already at maximum capacity" msgstr "Ich habe diesen Server verlassen, weil ich bereits an der Kapazitätsgrenze angelangt bin" -#: main.py:67 +#: guildlock\main.py:67 msgid "I have left this server because it has less than {} members" msgstr "" -#: main.py:68 +#: guildlock\main.py:68 msgid "I have left this server because {}% of its members are bots" msgstr "" -#: main.py:76 +#: guildlock\main.py:76 msgid "Guild is in the blacklist" msgstr "Die Gilde steht auf der schwarzen Liste" -#: main.py:77 +#: guildlock\main.py:77 msgid "Guild is not in the whitelist" msgstr "Die Gilde steht nicht auf der Whitelist" -#: main.py:78 +#: guildlock\main.py:78 msgid "Cannot surpass guild limit of {}" msgstr "" -#: main.py:79 +#: guildlock\main.py:79 msgid "Guild has less than {} members" msgstr "" -#: main.py:80 +#: guildlock\main.py:80 msgid "Guild exceeds bot threshold of {}% ({}%)" msgstr "" -#: main.py:115 +#: guildlock\main.py:115 msgid "Reason: {}" msgstr "" -#: main.py:116 +#: guildlock\main.py:116 msgid "Left {}" msgstr "" -#: main.py:118 +#: guildlock\main.py:118 msgid "Owner: {}" msgstr "" From 760820e0e1e343f5c5e8ec0bff716c2939ab0715 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Wed, 24 Jun 2026 09:20:33 -0400 Subject: [PATCH 089/104] New translations messages.pot (German) [ci skip] --- bankdecay/locales/de-DE.po | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/bankdecay/locales/de-DE.po b/bankdecay/locales/de-DE.po index cddee9d3a..8f49a4748 100644 --- a/bankdecay/locales/de-DE.po +++ b/bankdecay/locales/de-DE.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2024-02-08 18:30-0500\n" -"PO-Revision-Date: 2024-12-03 14:57\n" +"POT-Creation-Date: 2026-05-06 22:10-0400\n" +"PO-Revision-Date: 2026-06-24 13:20\n" "Last-Translator: \n" "Language-Team: German\n" "MIME-Version: 1.0\n" @@ -17,7 +17,7 @@ msgstr "" "X-Crowdin-File-ID: 110\n" "Language: de_DE\n" -#: main.py:29 +#: bankdecay\main.py:29 #, docstring msgid "\n" " Economy decay!\n\n" @@ -27,20 +27,20 @@ msgid "\n" " " msgstr "" -#: main.py:157 +#: bankdecay\main.py:169 msgid "Bank Decay Cycle" msgstr "" -#: main.py:159 +#: bankdecay\main.py:171 msgid "- User Balances Decayed: {}\n" "- Total Amount Decayed: {}" msgstr "" -#: main.py:164 +#: bankdecay\main.py:176 msgid "No user balances were decayed during this cycle." msgstr "" -#: main.py:214 +#: bankdecay\main.py:226 #, docstring msgid "No data to delete" msgstr "" From a346b3728747f74f3c6065c6252a404c1bccad37 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Wed, 24 Jun 2026 09:20:37 -0400 Subject: [PATCH 090/104] New translations messages.pot (Korean) [ci skip] --- guildlock/common/locales/ko-KR.po | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/guildlock/common/locales/ko-KR.po b/guildlock/common/locales/ko-KR.po index 5ed157b01..3dadba0c9 100644 --- a/guildlock/common/locales/ko-KR.po +++ b/guildlock/common/locales/ko-KR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2023-10-26 15:12-0400\n" -"PO-Revision-Date: 2024-12-03 14:56\n" +"POT-Creation-Date: 2026-05-06 22:10-0400\n" +"PO-Revision-Date: 2026-06-24 13:20\n" "Last-Translator: \n" "Language-Team: Korean\n" "MIME-Version: 1.0\n" @@ -17,27 +17,27 @@ msgstr "" "X-Crowdin-File-ID: 96\n" "Language: ko_KR\n" -#: common\views.py:13 +#: guildlock\common\views.py:13 msgid "Yes" msgstr "예" -#: common\views.py:14 +#: guildlock\common\views.py:14 msgid "No" msgstr "아니요" -#: common\views.py:20 common\views.py:82 +#: guildlock\common\views.py:20 guildlock\common\views.py:82 msgid "This isn't your menu!" msgstr "이건 메뉴가 아닙니다!" -#: common\views.py:43 +#: guildlock\common\views.py:43 msgid "Select a Page" msgstr "" -#: common\views.py:46 +#: guildlock\common\views.py:46 msgid "Enter Page Number" msgstr "" -#: common\views.py:176 +#: guildlock\common\views.py:176 msgid "Page must be a number!" msgstr "" From bd2d810edfbc9dd81822b2380ed36a1820c9c869 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Wed, 24 Jun 2026 09:20:38 -0400 Subject: [PATCH 091/104] New translations messages.pot (Korean) [ci skip] --- guildlock/locales/ko-KR.po | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/guildlock/locales/ko-KR.po b/guildlock/locales/ko-KR.po index 618a9133f..29e2b038b 100644 --- a/guildlock/locales/ko-KR.po +++ b/guildlock/locales/ko-KR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2023-10-16 18:28-0400\n" -"PO-Revision-Date: 2024-12-03 14:56\n" +"POT-Creation-Date: 2026-05-06 22:10-0400\n" +"PO-Revision-Date: 2026-06-24 13:20\n" "Last-Translator: \n" "Language-Team: Korean\n" "MIME-Version: 1.0\n" @@ -17,7 +17,7 @@ msgstr "" "X-Crowdin-File-ID: 98\n" "Language: ko_KR\n" -#: main.py:26 +#: guildlock\main.py:26 #, docstring msgid "\n" " Tools for managing guild joins and leaves.\n" @@ -26,65 +26,65 @@ msgstr "\n" " 길드 가입과 탈퇴를 관리하는 도구.\n" " " -#: main.py:56 +#: guildlock\main.py:56 msgid "Version: {}\n" "Author: {}" msgstr "" -#: main.py:60 +#: guildlock\main.py:60 #, docstring msgid "No data to delete" msgstr "삭제할 데이터 없음" -#: main.py:64 +#: guildlock\main.py:64 msgid "I have left this server because it is blacklisted" msgstr "이 서버가 블랙리스트에 포함되어서 이 서버를 떠났습니다" -#: main.py:65 +#: guildlock\main.py:65 msgid "I have left this server because it is not whitelisted" msgstr "이 서버가 화이트리스트에 포함되어 있지 않아서 이 서버를 떠났습니다" -#: main.py:66 +#: guildlock\main.py:66 msgid "I have left this server because I am already at maximum capacity" msgstr "이미 최대 용량에 도달하여 이 서버를 떠났습니다" -#: main.py:67 +#: guildlock\main.py:67 msgid "I have left this server because it has less than {} members" msgstr "" -#: main.py:68 +#: guildlock\main.py:68 msgid "I have left this server because {}% of its members are bots" msgstr "" -#: main.py:76 +#: guildlock\main.py:76 msgid "Guild is in the blacklist" msgstr "길드가 블랙리스트에 등록되었습니다" -#: main.py:77 +#: guildlock\main.py:77 msgid "Guild is not in the whitelist" msgstr "길드가 화이트리스트에 없습니다" -#: main.py:78 +#: guildlock\main.py:78 msgid "Cannot surpass guild limit of {}" msgstr "" -#: main.py:79 +#: guildlock\main.py:79 msgid "Guild has less than {} members" msgstr "" -#: main.py:80 +#: guildlock\main.py:80 msgid "Guild exceeds bot threshold of {}% ({}%)" msgstr "" -#: main.py:115 +#: guildlock\main.py:115 msgid "Reason: {}" msgstr "" -#: main.py:116 +#: guildlock\main.py:116 msgid "Left {}" msgstr "" -#: main.py:118 +#: guildlock\main.py:118 msgid "Owner: {}" msgstr "" From 1ac9f2c9f0799126b9bac6758437b6cb0949a435 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Wed, 24 Jun 2026 09:20:40 -0400 Subject: [PATCH 092/104] New translations messages.pot (Korean) [ci skip] --- bankdecay/locales/ko-KR.po | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/bankdecay/locales/ko-KR.po b/bankdecay/locales/ko-KR.po index aa10b7064..5ba1d95cb 100644 --- a/bankdecay/locales/ko-KR.po +++ b/bankdecay/locales/ko-KR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2024-02-08 18:30-0500\n" -"PO-Revision-Date: 2024-12-03 14:57\n" +"POT-Creation-Date: 2026-05-06 22:10-0400\n" +"PO-Revision-Date: 2026-06-24 13:20\n" "Last-Translator: \n" "Language-Team: Korean\n" "MIME-Version: 1.0\n" @@ -17,7 +17,7 @@ msgstr "" "X-Crowdin-File-ID: 110\n" "Language: ko_KR\n" -#: main.py:29 +#: bankdecay\main.py:29 #, docstring msgid "\n" " Economy decay!\n\n" @@ -27,20 +27,20 @@ msgid "\n" " " msgstr "" -#: main.py:157 +#: bankdecay\main.py:169 msgid "Bank Decay Cycle" msgstr "" -#: main.py:159 +#: bankdecay\main.py:171 msgid "- User Balances Decayed: {}\n" "- Total Amount Decayed: {}" msgstr "" -#: main.py:164 +#: bankdecay\main.py:176 msgid "No user balances were decayed during this cycle." msgstr "" -#: main.py:214 +#: bankdecay\main.py:226 #, docstring msgid "No data to delete" msgstr "" From d4aa34c589a8627d6b6755cbaeb1351a5565011e Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Wed, 24 Jun 2026 09:20:43 -0400 Subject: [PATCH 093/104] New translations messages.pot (Portuguese) [ci skip] --- guildlock/common/locales/pt-PT.po | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/guildlock/common/locales/pt-PT.po b/guildlock/common/locales/pt-PT.po index 9e9f42ee0..2b228789c 100644 --- a/guildlock/common/locales/pt-PT.po +++ b/guildlock/common/locales/pt-PT.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2023-10-26 15:12-0400\n" -"PO-Revision-Date: 2024-12-03 14:56\n" +"POT-Creation-Date: 2026-05-06 22:10-0400\n" +"PO-Revision-Date: 2026-06-24 13:20\n" "Last-Translator: \n" "Language-Team: Portuguese\n" "MIME-Version: 1.0\n" @@ -17,27 +17,27 @@ msgstr "" "X-Crowdin-File-ID: 96\n" "Language: pt_PT\n" -#: common\views.py:13 +#: guildlock\common\views.py:13 msgid "Yes" msgstr "Sim" -#: common\views.py:14 +#: guildlock\common\views.py:14 msgid "No" msgstr "Não" -#: common\views.py:20 common\views.py:82 +#: guildlock\common\views.py:20 guildlock\common\views.py:82 msgid "This isn't your menu!" msgstr "Este não é o vosso menu!" -#: common\views.py:43 +#: guildlock\common\views.py:43 msgid "Select a Page" msgstr "" -#: common\views.py:46 +#: guildlock\common\views.py:46 msgid "Enter Page Number" msgstr "" -#: common\views.py:176 +#: guildlock\common\views.py:176 msgid "Page must be a number!" msgstr "" From cde1230de5a22292bdf1d881ac6fbd2dcd4e5a28 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Wed, 24 Jun 2026 09:20:45 -0400 Subject: [PATCH 094/104] New translations messages.pot (Portuguese) [ci skip] --- guildlock/locales/pt-PT.po | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/guildlock/locales/pt-PT.po b/guildlock/locales/pt-PT.po index 53ae69ea3..e32dafc18 100644 --- a/guildlock/locales/pt-PT.po +++ b/guildlock/locales/pt-PT.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2023-10-16 18:28-0400\n" -"PO-Revision-Date: 2024-12-03 14:56\n" +"POT-Creation-Date: 2026-05-06 22:10-0400\n" +"PO-Revision-Date: 2026-06-24 13:20\n" "Last-Translator: \n" "Language-Team: Portuguese\n" "MIME-Version: 1.0\n" @@ -17,7 +17,7 @@ msgstr "" "X-Crowdin-File-ID: 98\n" "Language: pt_PT\n" -#: main.py:26 +#: guildlock\main.py:26 #, docstring msgid "\n" " Tools for managing guild joins and leaves.\n" @@ -26,65 +26,65 @@ msgstr "\n" " Ferramentas para gerir as entradas e saídas de guildas.\n" " " -#: main.py:56 +#: guildlock\main.py:56 msgid "Version: {}\n" "Author: {}" msgstr "" -#: main.py:60 +#: guildlock\main.py:60 #, docstring msgid "No data to delete" msgstr "Não há dados a eliminar" -#: main.py:64 +#: guildlock\main.py:64 msgid "I have left this server because it is blacklisted" msgstr "Deixei este servidor porque está na lista negra" -#: main.py:65 +#: guildlock\main.py:65 msgid "I have left this server because it is not whitelisted" msgstr "Deixei este servidor porque não está na lista branca" -#: main.py:66 +#: guildlock\main.py:66 msgid "I have left this server because I am already at maximum capacity" msgstr "Deixei este servidor porque já atingi a minha capacidade máxima" -#: main.py:67 +#: guildlock\main.py:67 msgid "I have left this server because it has less than {} members" msgstr "" -#: main.py:68 +#: guildlock\main.py:68 msgid "I have left this server because {}% of its members are bots" msgstr "" -#: main.py:76 +#: guildlock\main.py:76 msgid "Guild is in the blacklist" msgstr "O Grémio está na lista negra" -#: main.py:77 +#: guildlock\main.py:77 msgid "Guild is not in the whitelist" msgstr "O Grémio não está na lista branca" -#: main.py:78 +#: guildlock\main.py:78 msgid "Cannot surpass guild limit of {}" msgstr "" -#: main.py:79 +#: guildlock\main.py:79 msgid "Guild has less than {} members" msgstr "" -#: main.py:80 +#: guildlock\main.py:80 msgid "Guild exceeds bot threshold of {}% ({}%)" msgstr "" -#: main.py:115 +#: guildlock\main.py:115 msgid "Reason: {}" msgstr "" -#: main.py:116 +#: guildlock\main.py:116 msgid "Left {}" msgstr "" -#: main.py:118 +#: guildlock\main.py:118 msgid "Owner: {}" msgstr "" From 07589e6751b3a1b11604b1ef151393429ede903c Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Wed, 24 Jun 2026 09:20:46 -0400 Subject: [PATCH 095/104] New translations messages.pot (Portuguese) [ci skip] --- bankdecay/locales/pt-PT.po | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/bankdecay/locales/pt-PT.po b/bankdecay/locales/pt-PT.po index 04488a3f2..2a30bf93e 100644 --- a/bankdecay/locales/pt-PT.po +++ b/bankdecay/locales/pt-PT.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2024-02-08 18:30-0500\n" -"PO-Revision-Date: 2024-12-03 14:57\n" +"POT-Creation-Date: 2026-05-06 22:10-0400\n" +"PO-Revision-Date: 2026-06-24 13:20\n" "Last-Translator: \n" "Language-Team: Portuguese\n" "MIME-Version: 1.0\n" @@ -17,7 +17,7 @@ msgstr "" "X-Crowdin-File-ID: 110\n" "Language: pt_PT\n" -#: main.py:29 +#: bankdecay\main.py:29 #, docstring msgid "\n" " Economy decay!\n\n" @@ -27,20 +27,20 @@ msgid "\n" " " msgstr "" -#: main.py:157 +#: bankdecay\main.py:169 msgid "Bank Decay Cycle" msgstr "" -#: main.py:159 +#: bankdecay\main.py:171 msgid "- User Balances Decayed: {}\n" "- Total Amount Decayed: {}" msgstr "" -#: main.py:164 +#: bankdecay\main.py:176 msgid "No user balances were decayed during this cycle." msgstr "" -#: main.py:214 +#: bankdecay\main.py:226 #, docstring msgid "No data to delete" msgstr "" From b43dd92851a6b6225020df11775b500d72d00017 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Wed, 24 Jun 2026 09:20:50 -0400 Subject: [PATCH 096/104] New translations messages.pot (Russian) [ci skip] --- guildlock/common/locales/ru-RU.po | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/guildlock/common/locales/ru-RU.po b/guildlock/common/locales/ru-RU.po index c1e7b72fb..edb901bc3 100644 --- a/guildlock/common/locales/ru-RU.po +++ b/guildlock/common/locales/ru-RU.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2023-10-26 15:12-0400\n" -"PO-Revision-Date: 2024-12-03 14:56\n" +"POT-Creation-Date: 2026-05-06 22:10-0400\n" +"PO-Revision-Date: 2026-06-24 13:20\n" "Last-Translator: \n" "Language-Team: Russian\n" "MIME-Version: 1.0\n" @@ -17,27 +17,27 @@ msgstr "" "X-Crowdin-File-ID: 96\n" "Language: ru_RU\n" -#: common\views.py:13 +#: guildlock\common\views.py:13 msgid "Yes" msgstr "" -#: common\views.py:14 +#: guildlock\common\views.py:14 msgid "No" msgstr "" -#: common\views.py:20 common\views.py:82 +#: guildlock\common\views.py:20 guildlock\common\views.py:82 msgid "This isn't your menu!" msgstr "" -#: common\views.py:43 +#: guildlock\common\views.py:43 msgid "Select a Page" msgstr "" -#: common\views.py:46 +#: guildlock\common\views.py:46 msgid "Enter Page Number" msgstr "" -#: common\views.py:176 +#: guildlock\common\views.py:176 msgid "Page must be a number!" msgstr "" From 36948284d14c16715c565ad4fc3118ee9033c1d4 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Wed, 24 Jun 2026 09:20:51 -0400 Subject: [PATCH 097/104] New translations messages.pot (Russian) [ci skip] --- guildlock/locales/ru-RU.po | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/guildlock/locales/ru-RU.po b/guildlock/locales/ru-RU.po index a66b0ac54..61c5cc066 100644 --- a/guildlock/locales/ru-RU.po +++ b/guildlock/locales/ru-RU.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2023-10-16 18:28-0400\n" -"PO-Revision-Date: 2024-12-03 14:56\n" +"POT-Creation-Date: 2026-05-06 22:10-0400\n" +"PO-Revision-Date: 2026-06-24 13:20\n" "Last-Translator: \n" "Language-Team: Russian\n" "MIME-Version: 1.0\n" @@ -17,72 +17,72 @@ msgstr "" "X-Crowdin-File-ID: 98\n" "Language: ru_RU\n" -#: main.py:26 +#: guildlock\main.py:26 #, docstring msgid "\n" " Tools for managing guild joins and leaves.\n" " " msgstr "" -#: main.py:56 +#: guildlock\main.py:56 msgid "Version: {}\n" "Author: {}" msgstr "" -#: main.py:60 +#: guildlock\main.py:60 #, docstring msgid "No data to delete" msgstr "" -#: main.py:64 +#: guildlock\main.py:64 msgid "I have left this server because it is blacklisted" msgstr "" -#: main.py:65 +#: guildlock\main.py:65 msgid "I have left this server because it is not whitelisted" msgstr "" -#: main.py:66 +#: guildlock\main.py:66 msgid "I have left this server because I am already at maximum capacity" msgstr "" -#: main.py:67 +#: guildlock\main.py:67 msgid "I have left this server because it has less than {} members" msgstr "" -#: main.py:68 +#: guildlock\main.py:68 msgid "I have left this server because {}% of its members are bots" msgstr "" -#: main.py:76 +#: guildlock\main.py:76 msgid "Guild is in the blacklist" msgstr "" -#: main.py:77 +#: guildlock\main.py:77 msgid "Guild is not in the whitelist" msgstr "" -#: main.py:78 +#: guildlock\main.py:78 msgid "Cannot surpass guild limit of {}" msgstr "" -#: main.py:79 +#: guildlock\main.py:79 msgid "Guild has less than {} members" msgstr "" -#: main.py:80 +#: guildlock\main.py:80 msgid "Guild exceeds bot threshold of {}% ({}%)" msgstr "" -#: main.py:115 +#: guildlock\main.py:115 msgid "Reason: {}" msgstr "" -#: main.py:116 +#: guildlock\main.py:116 msgid "Left {}" msgstr "" -#: main.py:118 +#: guildlock\main.py:118 msgid "Owner: {}" msgstr "" From 5058482c8f5de322c3b377fb32f1afedfb470a31 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Wed, 24 Jun 2026 09:20:53 -0400 Subject: [PATCH 098/104] New translations messages.pot (Russian) [ci skip] --- bankdecay/locales/ru-RU.po | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/bankdecay/locales/ru-RU.po b/bankdecay/locales/ru-RU.po index 5a4652c37..3c0f9b247 100644 --- a/bankdecay/locales/ru-RU.po +++ b/bankdecay/locales/ru-RU.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2024-02-08 18:30-0500\n" -"PO-Revision-Date: 2024-12-03 14:57\n" +"POT-Creation-Date: 2026-05-06 22:10-0400\n" +"PO-Revision-Date: 2026-06-24 13:20\n" "Last-Translator: \n" "Language-Team: Russian\n" "MIME-Version: 1.0\n" @@ -17,7 +17,7 @@ msgstr "" "X-Crowdin-File-ID: 110\n" "Language: ru_RU\n" -#: main.py:29 +#: bankdecay\main.py:29 #, docstring msgid "\n" " Economy decay!\n\n" @@ -27,20 +27,20 @@ msgid "\n" " " msgstr "" -#: main.py:157 +#: bankdecay\main.py:169 msgid "Bank Decay Cycle" msgstr "" -#: main.py:159 +#: bankdecay\main.py:171 msgid "- User Balances Decayed: {}\n" "- Total Amount Decayed: {}" msgstr "" -#: main.py:164 +#: bankdecay\main.py:176 msgid "No user balances were decayed during this cycle." msgstr "" -#: main.py:214 +#: bankdecay\main.py:226 #, docstring msgid "No data to delete" msgstr "" From fddbcbd385cbe63f883e8ec213f428aefda9b51e Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Wed, 24 Jun 2026 09:20:56 -0400 Subject: [PATCH 099/104] New translations messages.pot (Turkish) [ci skip] --- guildlock/common/locales/tr-TR.po | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/guildlock/common/locales/tr-TR.po b/guildlock/common/locales/tr-TR.po index 7c7452b4a..a90c4f198 100644 --- a/guildlock/common/locales/tr-TR.po +++ b/guildlock/common/locales/tr-TR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2023-10-26 15:12-0400\n" -"PO-Revision-Date: 2024-12-03 14:56\n" +"POT-Creation-Date: 2026-05-06 22:10-0400\n" +"PO-Revision-Date: 2026-06-24 13:20\n" "Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" @@ -17,27 +17,27 @@ msgstr "" "X-Crowdin-File-ID: 96\n" "Language: tr_TR\n" -#: common\views.py:13 +#: guildlock\common\views.py:13 msgid "Yes" msgstr "Evet" -#: common\views.py:14 +#: guildlock\common\views.py:14 msgid "No" msgstr "Hayır" -#: common\views.py:20 common\views.py:82 +#: guildlock\common\views.py:20 guildlock\common\views.py:82 msgid "This isn't your menu!" msgstr "Bu senin menün değil!" -#: common\views.py:43 +#: guildlock\common\views.py:43 msgid "Select a Page" msgstr "" -#: common\views.py:46 +#: guildlock\common\views.py:46 msgid "Enter Page Number" msgstr "" -#: common\views.py:176 +#: guildlock\common\views.py:176 msgid "Page must be a number!" msgstr "" From 7d27f966b39d9031add3ffcaed2d88bf5f1e5b0a Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Wed, 24 Jun 2026 09:20:58 -0400 Subject: [PATCH 100/104] New translations messages.pot (Turkish) [ci skip] --- guildlock/locales/tr-TR.po | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/guildlock/locales/tr-TR.po b/guildlock/locales/tr-TR.po index b40bd8c23..b61702c64 100644 --- a/guildlock/locales/tr-TR.po +++ b/guildlock/locales/tr-TR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2023-10-16 18:28-0400\n" -"PO-Revision-Date: 2024-12-03 14:56\n" +"POT-Creation-Date: 2026-05-06 22:10-0400\n" +"PO-Revision-Date: 2026-06-24 13:20\n" "Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" @@ -17,7 +17,7 @@ msgstr "" "X-Crowdin-File-ID: 98\n" "Language: tr_TR\n" -#: main.py:26 +#: guildlock\main.py:26 #, docstring msgid "\n" " Tools for managing guild joins and leaves.\n" @@ -26,65 +26,65 @@ msgstr "\n" " Lonca katılımlarını ve ayrılmalarını yönetmek için araçlar.\n" " " -#: main.py:56 +#: guildlock\main.py:56 msgid "Version: {}\n" "Author: {}" msgstr "" -#: main.py:60 +#: guildlock\main.py:60 #, docstring msgid "No data to delete" msgstr "Silinecek veri yok" -#: main.py:64 +#: guildlock\main.py:64 msgid "I have left this server because it is blacklisted" msgstr "Kara listede olduğu için bu sunucudan ayrıldım" -#: main.py:65 +#: guildlock\main.py:65 msgid "I have left this server because it is not whitelisted" msgstr "Beyaz listede olmadığı için bu sunucudan ayrıldım" -#: main.py:66 +#: guildlock\main.py:66 msgid "I have left this server because I am already at maximum capacity" msgstr "Bu sunucudan ayrıldım çünkü zaten maksimum kapasiteye ulaşmış durumdayım" -#: main.py:67 +#: guildlock\main.py:67 msgid "I have left this server because it has less than {} members" msgstr "" -#: main.py:68 +#: guildlock\main.py:68 msgid "I have left this server because {}% of its members are bots" msgstr "" -#: main.py:76 +#: guildlock\main.py:76 msgid "Guild is in the blacklist" msgstr "Lonca kara listede" -#: main.py:77 +#: guildlock\main.py:77 msgid "Guild is not in the whitelist" msgstr "Lonca beyaz listede değil" -#: main.py:78 +#: guildlock\main.py:78 msgid "Cannot surpass guild limit of {}" msgstr "" -#: main.py:79 +#: guildlock\main.py:79 msgid "Guild has less than {} members" msgstr "" -#: main.py:80 +#: guildlock\main.py:80 msgid "Guild exceeds bot threshold of {}% ({}%)" msgstr "" -#: main.py:115 +#: guildlock\main.py:115 msgid "Reason: {}" msgstr "" -#: main.py:116 +#: guildlock\main.py:116 msgid "Left {}" msgstr "" -#: main.py:118 +#: guildlock\main.py:118 msgid "Owner: {}" msgstr "" From 17ffdb0c3619872406e94b7706cd0af9ceec7841 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Wed, 24 Jun 2026 09:20:59 -0400 Subject: [PATCH 101/104] New translations messages.pot (Turkish) [ci skip] --- bankdecay/locales/tr-TR.po | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/bankdecay/locales/tr-TR.po b/bankdecay/locales/tr-TR.po index 71cb7c243..b0af013e8 100644 --- a/bankdecay/locales/tr-TR.po +++ b/bankdecay/locales/tr-TR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2024-02-08 18:30-0500\n" -"PO-Revision-Date: 2024-12-03 14:57\n" +"POT-Creation-Date: 2026-05-06 22:10-0400\n" +"PO-Revision-Date: 2026-06-24 13:20\n" "Last-Translator: \n" "Language-Team: Turkish\n" "MIME-Version: 1.0\n" @@ -17,7 +17,7 @@ msgstr "" "X-Crowdin-File-ID: 110\n" "Language: tr_TR\n" -#: main.py:29 +#: bankdecay\main.py:29 #, docstring msgid "\n" " Economy decay!\n\n" @@ -27,20 +27,20 @@ msgid "\n" " " msgstr "" -#: main.py:157 +#: bankdecay\main.py:169 msgid "Bank Decay Cycle" msgstr "" -#: main.py:159 +#: bankdecay\main.py:171 msgid "- User Balances Decayed: {}\n" "- Total Amount Decayed: {}" msgstr "" -#: main.py:164 +#: bankdecay\main.py:176 msgid "No user balances were decayed during this cycle." msgstr "" -#: main.py:214 +#: bankdecay\main.py:226 #, docstring msgid "No data to delete" msgstr "" From a51cef57e8bb87159ba4cc37ab866a6156200853 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Wed, 24 Jun 2026 09:21:02 -0400 Subject: [PATCH 102/104] New translations messages.pot (Croatian) [ci skip] --- guildlock/common/locales/hr-HR.po | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/guildlock/common/locales/hr-HR.po b/guildlock/common/locales/hr-HR.po index 2eca81da2..8ce961da2 100644 --- a/guildlock/common/locales/hr-HR.po +++ b/guildlock/common/locales/hr-HR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2023-10-26 15:12-0400\n" -"PO-Revision-Date: 2024-12-03 14:56\n" +"POT-Creation-Date: 2026-05-06 22:10-0400\n" +"PO-Revision-Date: 2026-06-24 13:21\n" "Last-Translator: \n" "Language-Team: Croatian\n" "MIME-Version: 1.0\n" @@ -17,27 +17,27 @@ msgstr "" "X-Crowdin-File-ID: 96\n" "Language: hr_HR\n" -#: common\views.py:13 +#: guildlock\common\views.py:13 msgid "Yes" msgstr "" -#: common\views.py:14 +#: guildlock\common\views.py:14 msgid "No" msgstr "" -#: common\views.py:20 common\views.py:82 +#: guildlock\common\views.py:20 guildlock\common\views.py:82 msgid "This isn't your menu!" msgstr "" -#: common\views.py:43 +#: guildlock\common\views.py:43 msgid "Select a Page" msgstr "" -#: common\views.py:46 +#: guildlock\common\views.py:46 msgid "Enter Page Number" msgstr "" -#: common\views.py:176 +#: guildlock\common\views.py:176 msgid "Page must be a number!" msgstr "" From 23cc96f652ff079b6f6f6cfbb538b9c9e51a4c89 Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Wed, 24 Jun 2026 09:21:04 -0400 Subject: [PATCH 103/104] New translations messages.pot (Croatian) [ci skip] --- guildlock/locales/hr-HR.po | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/guildlock/locales/hr-HR.po b/guildlock/locales/hr-HR.po index 6f92c625e..89baf68fa 100644 --- a/guildlock/locales/hr-HR.po +++ b/guildlock/locales/hr-HR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2023-10-16 18:28-0400\n" -"PO-Revision-Date: 2024-12-03 14:56\n" +"POT-Creation-Date: 2026-05-06 22:10-0400\n" +"PO-Revision-Date: 2026-06-24 13:21\n" "Last-Translator: \n" "Language-Team: Croatian\n" "MIME-Version: 1.0\n" @@ -17,72 +17,72 @@ msgstr "" "X-Crowdin-File-ID: 98\n" "Language: hr_HR\n" -#: main.py:26 +#: guildlock\main.py:26 #, docstring msgid "\n" " Tools for managing guild joins and leaves.\n" " " msgstr "" -#: main.py:56 +#: guildlock\main.py:56 msgid "Version: {}\n" "Author: {}" msgstr "" -#: main.py:60 +#: guildlock\main.py:60 #, docstring msgid "No data to delete" msgstr "" -#: main.py:64 +#: guildlock\main.py:64 msgid "I have left this server because it is blacklisted" msgstr "" -#: main.py:65 +#: guildlock\main.py:65 msgid "I have left this server because it is not whitelisted" msgstr "" -#: main.py:66 +#: guildlock\main.py:66 msgid "I have left this server because I am already at maximum capacity" msgstr "" -#: main.py:67 +#: guildlock\main.py:67 msgid "I have left this server because it has less than {} members" msgstr "" -#: main.py:68 +#: guildlock\main.py:68 msgid "I have left this server because {}% of its members are bots" msgstr "" -#: main.py:76 +#: guildlock\main.py:76 msgid "Guild is in the blacklist" msgstr "" -#: main.py:77 +#: guildlock\main.py:77 msgid "Guild is not in the whitelist" msgstr "" -#: main.py:78 +#: guildlock\main.py:78 msgid "Cannot surpass guild limit of {}" msgstr "" -#: main.py:79 +#: guildlock\main.py:79 msgid "Guild has less than {} members" msgstr "" -#: main.py:80 +#: guildlock\main.py:80 msgid "Guild exceeds bot threshold of {}% ({}%)" msgstr "" -#: main.py:115 +#: guildlock\main.py:115 msgid "Reason: {}" msgstr "" -#: main.py:116 +#: guildlock\main.py:116 msgid "Left {}" msgstr "" -#: main.py:118 +#: guildlock\main.py:118 msgid "Owner: {}" msgstr "" From 338a79678a9375a6293bf48885a8ca8908ab0bfd Mon Sep 17 00:00:00 2001 From: Alex <58824393+vertyco@users.noreply.github.com> Date: Wed, 24 Jun 2026 09:21:06 -0400 Subject: [PATCH 104/104] New translations messages.pot (Croatian) [ci skip] --- bankdecay/locales/hr-HR.po | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/bankdecay/locales/hr-HR.po b/bankdecay/locales/hr-HR.po index 335b61216..5020beab4 100644 --- a/bankdecay/locales/hr-HR.po +++ b/bankdecay/locales/hr-HR.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: vrt-cogs\n" -"POT-Creation-Date: 2024-02-08 18:30-0500\n" -"PO-Revision-Date: 2024-12-03 14:57\n" +"POT-Creation-Date: 2026-05-06 22:10-0400\n" +"PO-Revision-Date: 2026-06-24 13:21\n" "Last-Translator: \n" "Language-Team: Croatian\n" "MIME-Version: 1.0\n" @@ -17,7 +17,7 @@ msgstr "" "X-Crowdin-File-ID: 110\n" "Language: hr_HR\n" -#: main.py:29 +#: bankdecay\main.py:29 #, docstring msgid "\n" " Economy decay!\n\n" @@ -27,20 +27,20 @@ msgid "\n" " " msgstr "" -#: main.py:157 +#: bankdecay\main.py:169 msgid "Bank Decay Cycle" msgstr "" -#: main.py:159 +#: bankdecay\main.py:171 msgid "- User Balances Decayed: {}\n" "- Total Amount Decayed: {}" msgstr "" -#: main.py:164 +#: bankdecay\main.py:176 msgid "No user balances were decayed during this cycle." msgstr "" -#: main.py:214 +#: bankdecay\main.py:226 #, docstring msgid "No data to delete" msgstr ""