Tłumaczenie (Translation)
Moduł Translation integruje DeepL API do tłumaczenia wiadomości tekstowych oraz Groq Whisper do transkrypcji wiadomości głosowych. Działa przez menu kontekstowe (prawy klik na wiadomość).
Włączanie modułu
- Dashboard → Twój serwer → toggle Translation
- Kliknij Edit i wprowadź klucz API DeepL
- Opcjonalnie: wprowadź klucz API Groq (dla transkrypcji audio)
- Zapisz zmiany
Moduł Translation wymaga klucza API DeepL do działania. Bez niego tłumaczenie nie będzie możliwe. Klucze są szyfrowane (Fernet) przed zapisaniem w bazie danych.
Uzyskaj darmowy klucz na: https://www.deepl.com/pro-api
Konfiguracja
Klucze API są przechowywane na poziomie guild config (nie w cog_settings):
| Opcja | Typ | Opis |
|---|---|---|
deepl_api_key_encrypted | string | Zaszyfrowany klucz API DeepL |
groq_api_key_encrypted | string | Zaszyfrowany klucz API Groq (opcjonalny) |
Dashboard
Panel edycji zawiera:
- DeepL API Key — pole hasła (masked)
- Groq API Key — pole hasła (opcjonalne, do transkrypcji audio)
- Informacja o statusie klucza (skonfigurowany / brak)
Menu kontekstowe
Po włączeniu modułu, w menu kontekstowym wiadomości (prawy klik → Apps) pojawiają się:
Translate Message
Tłumaczy tekst wiadomości na preferowany język użytkownika.
Flow:
- Wyodrębnia tekst z wiadomości (content + embed title/description/fields/footer)
- Sprawdza preferencje językowe użytkownika
- Jeśli brak preferencji — wyświetla modal z prośbą o wybór języka
- Tłumaczy przez DeepL API
- Wyświetla tłumaczenie efemeralnie
Transcribe & Translate
Transkrybuje wiadomość głosową/audio i tłumaczy transkrypcję.
Flow:
- Szuka załącznika audio w wiadomości
- Sprawdza rozmiar (max 25 MB)
- Sprawdza preferencje językowe użytkownika
- Transkrybuje przez Groq Whisper API
- Tłumaczy transkrypcję przez DeepL API
- Wyświetla oba (oryginał + tłumaczenie) w embedzie efemeralnym
.ogg, .mp3, .wav, .m4a, .flac, .webm, .mp4 oraz wszelkie pliki z content-type audio/* lub video/* (voice messages).
Komendy
/setlang
Ustawia preferowany język tłumaczenia użytkownika (globalny, cross-server).
Wyświetla menu rozwijane z paginacją (25 języków na stronę) — po wyborze zapisuje preferencję w bazie danych.
/languages
Wyświetla listę wszystkich obsługiwanych języków DeepL (efemeralnie).
Obsługiwane języki
DeepL obsługuje 31 języków docelowych:
| Kod | Język |
|---|---|
| BG | Bulgarian |
| CS | Czech |
| DA | Danish |
| DE | German |
| EL | Greek |
| EN-GB | English (British) |
| EN-US | English (American) |
| ES | Spanish |
| ET | Estonian |
| FI | Finnish |
| FR | French |
| HU | Hungarian |
| ID | Indonesian |
| IT | Italian |
| JA | Japanese |
| KO | Korean |
| LT | Lithuanian |
| LV | Latvian |
| NB | Norwegian |
| NL | Dutch |
| PL | Polish |
| PT-BR | Portuguese (Brazilian) |
| PT-PT | Portuguese (European) |
| RO | Romanian |
| RU | Russian |
| SK | Slovak |
| SL | Slovenian |
| SV | Swedish |
| TR | Turkish |
| UK | Ukrainian |
| ZH | Chinese (simplified) |
Preferencje językowe
Kolejność rozwiązywania języka docelowego:
translator_langw tabeliuser_language_prefs(ustawiony przez/setlang)- Język interfejsu użytkownika (z LanguageManager)
- Modal z prośbą o ręczny wybór
Preferencja jest globalna — raz ustawiona działa na wszystkich serwerach z ArcBotem.
Limity
| Limit | Wartość |
|---|---|
| Tekst do tłumaczenia | 5000 znaków |
| Plik audio | 25 MB |
| Cache klucza API | 30 minut |
| Timeout API | 30s (DeepL), 120s (Groq) |
Obsługa błędów
| Kod HTTP | Akcja |
|---|---|
| 403 | Nieprawidłowy klucz API — cache unieważniony |
| 456 | Wyczerpany limit DeepL — informacja dla użytkownika |
| Inne | Generyczny błąd "API error" |
Nasłuchiwane zdarzenia
Moduł nie nasłuchuje zdarzeń — działa wyłącznie przez menu kontekstowe i komendy slash.
Wskazówki
- Użyj
/setlangraz — bot zapamięta Twój język na stałe - DeepL Free pozwala na 500,000 znaków/miesiąc — wystarczające dla większości serwerów
- Groq API jest opcjonalne — bez niego "Transcribe & Translate" nie będzie dostępne
- Klucze API DeepL kończące się na
:fxto klucze darmowe
Tłumaczenia są wyświetlane efemeralnie (widoczne tylko dla użytkownika). Treść wiadomości jest wysyłana do DeepL/Groq API w celu przetworzenia.