feat(assistant): an admin can share their ChatGPT plan with everyone

The connection for everyone can now also be the admin's own ChatGPT sign-in.
Whether a plan may be shared that way is the self-hoster's call under their
plan and OpenAI's terms; the form says what it means before the sign-in.
The sign-in starts on the admin route and finishes on the shared one, which
refuses a sign-in for everyone to anyone who is not an admin. The ChatGPT
return reads the clipboard only once the paste handler exists.
This commit is contained in:
Maurice
2026-10-21 22:57:40 +02:00
parent 422e213438
commit a372313ea1
38 changed files with 220 additions and 68 deletions
+2
View File
@@ -511,5 +511,7 @@ const assistant: TranslationStrings = {
'assistant.tool.toggle_vacay_entry': 'تحديد يوم إجازة',
'assistant.tool.mark_country_visited': 'تحديد البلد كمُزار',
'assistant.tool.send_collab_message': 'إرسال إلى محادثة الرحلة',
'assistant.admin.chatgptShared':
'أنت تشارك اشتراكك الشخصي في ChatGPT مع الجميع على هذا الخادم: تُحتسب محادثاتهم من خطتك. تحقّق من أن خطتك وشروط OpenAI تسمح بذلك.',
};
export default assistant;
+2
View File
@@ -431,5 +431,7 @@ const assistant: TranslationStrings = {
'assistant.tool.toggle_vacay_entry': 'Məzuniyyət günü təyin et',
'assistant.tool.mark_country_visited': 'Ölkəni ziyarət edilmiş kimi işarələ',
'assistant.tool.send_collab_message': 'Səyahət söhbətinə göndər',
'assistant.admin.chatgptShared':
'Öz ChatGPT abunəliyini bu serverdəki hər kəslə paylaşırsan: onların söhbətləri sənin planından çıxılır. Planının və OpenAI şərtlərinin buna icazə verdiyini yoxla.',
};
export default assistant;
+2
View File
@@ -431,5 +431,7 @@ const assistant: TranslationStrings = {
'assistant.tool.toggle_vacay_entry': 'Lakaat un devezh vakañsoù',
'assistant.tool.mark_country_visited': 'Merkañ ar vro evel gweladennet',
'assistant.tool.send_collab_message': 'Kas d’ar gaozeadenn veaj',
'assistant.admin.chatgptShared':
'Rannañ a rez da goumanant ChatGPT gant an holl war ar servijer-mañ: o c’haozeadennoù a vez kontet war da goumanant. Gwir pe ha da goumanant ha divizoù OpenAI a aotre an dra-se.',
};
export default assistant;
+2
View File
@@ -434,5 +434,7 @@ const assistant: TranslationStrings = {
'assistant.tool.toggle_vacay_entry': 'Marca un dia de vacances',
'assistant.tool.mark_country_visited': 'Marca el país com a visitat',
'assistant.tool.send_collab_message': 'Envia al xat del viatge',
'assistant.admin.chatgptShared':
'Comparteixes el teu propi pla de ChatGPT amb tothom en aquest servidor: els seus xats compten contra el teu pla. Comprova que el teu pla i les condicions d’OpenAI ho permeten.',
};
export default assistant;
+2
View File
@@ -450,5 +450,7 @@ const assistant: TranslationStrings = {
'assistant.tool.toggle_vacay_entry': 'Nastavit den dovolené',
'assistant.tool.mark_country_visited': 'Označit zemi jako navštívenou',
'assistant.tool.send_collab_message': 'Poslat do chatu cesty',
'assistant.admin.chatgptShared':
'Sdílíš své vlastní předplatné ChatGPT se všemi na tomto serveru: jejich chaty se počítají do tvého tarifu. Ověř, že to tvůj tarif a podmínky OpenAI dovolují.',
};
export default assistant;
+2
View File
@@ -431,5 +431,7 @@ const assistant: TranslationStrings = {
'assistant.tool.toggle_vacay_entry': 'Urlaubstag setzen',
'assistant.tool.mark_country_visited': 'Land als besucht markieren',
'assistant.tool.send_collab_message': 'In den Trip-Chat senden',
'assistant.admin.chatgptShared':
'Du teilst dein eigenes ChatGPT-Abo mit allen auf diesem Server: Ihre Chats zählen gegen dein Kontingent. Prüfe, ob dein Abo und die Bedingungen von OpenAI das erlauben.',
};
export default assistant;
+2
View File
@@ -426,5 +426,7 @@ const assistant: TranslationStrings = {
'assistant.tool.toggle_vacay_entry': 'Set a vacation day',
'assistant.tool.mark_country_visited': 'Mark the country as visited',
'assistant.tool.send_collab_message': 'Send to the trip chat',
'assistant.admin.chatgptShared':
'You share your own ChatGPT plan with everyone on this server: their chats count against your plan. Check that your plan and OpenAI’s terms allow this.',
};
export default assistant;
+2
View File
@@ -429,5 +429,7 @@ const assistant: TranslationStrings = {
'assistant.tool.toggle_vacay_entry': 'Marcar un día de vacaciones',
'assistant.tool.mark_country_visited': 'Marcar el país como visitado',
'assistant.tool.send_collab_message': 'Enviar al chat del viaje',
'assistant.admin.chatgptShared':
'Compartes tu propio plan de ChatGPT con todos en este servidor: sus chats cuentan contra tu plan. Comprueba que tu plan y las condiciones de OpenAI lo permiten.',
};
export default assistant;
+2
View File
@@ -430,5 +430,7 @@ const assistant: TranslationStrings = {
'assistant.tool.toggle_vacay_entry': 'Määra puhkusepäev',
'assistant.tool.mark_country_visited': 'Märgi riik külastatuks',
'assistant.tool.send_collab_message': 'Saada reisivestlusesse',
'assistant.admin.chatgptShared':
'Jagad oma ChatGPT tellimust kõigiga selles serveris: nende vestlused arvestatakse sinu paketist. Kontrolli, kas sinu pakett ja OpenAI tingimused seda lubavad.',
};
export default assistant;
+2
View File
@@ -436,5 +436,7 @@ const assistant: TranslationStrings = {
'assistant.tool.toggle_vacay_entry': 'Poser un jour de congé',
'assistant.tool.mark_country_visited': 'Marquer le pays comme visité',
'assistant.tool.send_collab_message': 'Envoyer dans la discussion du voyage',
'assistant.admin.chatgptShared':
'Vous partagez votre propre abonnement ChatGPT avec tout le monde sur ce serveur : leurs discussions comptent sur votre forfait. Vérifiez que votre forfait et les conditions d’OpenAI le permettent.',
};
export default assistant;
+2
View File
@@ -435,5 +435,7 @@ const assistant: TranslationStrings = {
'assistant.tool.toggle_vacay_entry': 'Ορισμός ημέρας άδειας',
'assistant.tool.mark_country_visited': 'Σήμανση χώρας ως επισκεφθείσας',
'assistant.tool.send_collab_message': 'Αποστολή στη συνομιλία ταξιδιού',
'assistant.admin.chatgptShared':
'Μοιράζεσαι τη δική σου συνδρομή ChatGPT με όλους σε αυτόν τον διακομιστή: οι συνομιλίες τους χρεώνονται στο δικό σου πρόγραμμα. Έλεγξε ότι το πρόγραμμά σου και οι όροι της OpenAI το επιτρέπουν.',
};
export default assistant;
+2
View File
@@ -436,5 +436,7 @@ const assistant: TranslationStrings = {
'assistant.tool.toggle_vacay_entry': 'Szabadnap beállítása',
'assistant.tool.mark_country_visited': 'Ország megjelölése meglátogatottként',
'assistant.tool.send_collab_message': 'Küldés az utazási csevegésbe',
'assistant.admin.chatgptShared':
'A saját ChatGPT-előfizetésedet osztod meg mindenkivel ezen a szerveren: a csevegéseik a te keretedből fogynak. Ellenőrizd, hogy az előfizetésed és az OpenAI feltételei ezt megengedik-e.',
};
export default assistant;
+2
View File
@@ -411,5 +411,7 @@ const assistant: TranslationStrings = {
'assistant.tool.toggle_vacay_entry': 'Tetapkan hari cuti',
'assistant.tool.mark_country_visited': 'Tandai negara sebagai dikunjungi',
'assistant.tool.send_collab_message': 'Kirim ke obrolan perjalanan',
'assistant.admin.chatgptShared':
'Kamu membagikan paket ChatGPT milikmu kepada semua orang di server ini: obrolan mereka dihitung dari paketmu. Pastikan paketmu dan ketentuan OpenAI mengizinkannya.',
};
export default assistant;
+2
View File
@@ -437,5 +437,7 @@ const assistant: TranslationStrings = {
'assistant.tool.toggle_vacay_entry': 'Segna un giorno di ferie',
'assistant.tool.mark_country_visited': 'Segna il paese come visitato',
'assistant.tool.send_collab_message': 'Invia nella chat del viaggio',
'assistant.admin.chatgptShared':
'Condividi il tuo abbonamento ChatGPT con tutti su questo server: le loro chat contano sul tuo piano. Verifica che il tuo piano e i termini di OpenAI lo consentano.',
};
export default assistant;
+2
View File
@@ -406,5 +406,7 @@ const assistant: TranslationStrings = {
'assistant.tool.toggle_vacay_entry': '休暇日を設定',
'assistant.tool.mark_country_visited': '国を訪問済みにする',
'assistant.tool.send_collab_message': '旅行チャットに送信',
'assistant.admin.chatgptShared':
'自分の ChatGPT プランをこのサーバーの全員と共有します。全員のチャットがあなたのプランの利用枠を使います。プランと OpenAI の規約で許可されているか確認してください。',
};
export default assistant;
+2
View File
@@ -403,5 +403,7 @@ const assistant: TranslationStrings = {
'assistant.tool.toggle_vacay_entry': '휴가일 지정',
'assistant.tool.mark_country_visited': '국가를 방문함으로 표시',
'assistant.tool.send_collab_message': '여행 채팅으로 보내기',
'assistant.admin.chatgptShared':
'내 ChatGPT 요금제를 이 서버의 모든 사람과 공유합니다. 모든 사람의 채팅이 내 요금제 한도에서 차감됩니다. 요금제와 OpenAI 약관에서 허용되는지 확인하세요.',
};
export default assistant;
+2
View File
@@ -432,5 +432,7 @@ const assistant: TranslationStrings = {
'assistant.tool.toggle_vacay_entry': 'Vakantiedag instellen',
'assistant.tool.mark_country_visited': 'Land als bezocht markeren',
'assistant.tool.send_collab_message': 'Naar de reischat sturen',
'assistant.admin.chatgptShared':
'Je deelt je eigen ChatGPT-abonnement met iedereen op deze server: hun chats tellen mee voor jouw abonnement. Controleer of je abonnement en de voorwaarden van OpenAI dit toestaan.',
};
export default assistant;
+2
View File
@@ -474,5 +474,7 @@ const assistant: TranslationStrings = {
'assistant.tool.toggle_vacay_entry': 'Ustaw dzień urlopu',
'assistant.tool.mark_country_visited': 'Oznacz kraj jako odwiedzony',
'assistant.tool.send_collab_message': 'Wyślij na czat podróży',
'assistant.admin.chatgptShared':
'Udostępniasz własny plan ChatGPT wszystkim na tym serwerze: ich czaty liczą się do twojego planu. Sprawdź, czy twój plan i warunki OpenAI na to pozwalają.',
};
export default assistant;
+2
View File
@@ -474,5 +474,7 @@ const assistant: TranslationStrings = {
'assistant.tool.toggle_vacay_entry': 'Отметить день отпуска',
'assistant.tool.mark_country_visited': 'Отметить страну как посещённую',
'assistant.tool.send_collab_message': 'Отправить в чат поездки',
'assistant.admin.chatgptShared':
'Вы делитесь своей подпиской ChatGPT со всеми на этом сервере: их чаты расходуют ваш лимит. Проверьте, что ваш тариф и условия OpenAI это допускают.',
};
export default assistant;
+2
View File
@@ -450,5 +450,7 @@ const assistant: TranslationStrings = {
'assistant.tool.toggle_vacay_entry': 'Nastaviť deň dovolenky',
'assistant.tool.mark_country_visited': 'Označiť krajinu ako navštívenú',
'assistant.tool.send_collab_message': 'Poslať do chatu cesty',
'assistant.admin.chatgptShared':
'Zdieľaš svoje vlastné predplatné ChatGPT so všetkými na tomto serveri: ich chaty sa počítajú do tvojho plánu. Over, že to tvoj plán a podmienky OpenAI dovoľujú.',
};
export default assistant;
+2
View File
@@ -430,5 +430,7 @@ const assistant: TranslationStrings = {
'assistant.tool.toggle_vacay_entry': 'Sätt en semesterdag',
'assistant.tool.mark_country_visited': 'Markera landet som besökt',
'assistant.tool.send_collab_message': 'Skicka till reschatten',
'assistant.admin.chatgptShared':
'Du delar ditt eget ChatGPT-abonnemang med alla på den här servern: deras chattar räknas mot ditt abonnemang. Kontrollera att ditt abonnemang och OpenAIs villkor tillåter det.',
};
export default assistant;
+2
View File
@@ -403,5 +403,7 @@ const assistant: TranslationStrings = {
'assistant.tool.toggle_vacay_entry': 'กำหนดวันลา',
'assistant.tool.mark_country_visited': 'ทำเครื่องหมายว่าเคยไปประเทศนี้',
'assistant.tool.send_collab_message': 'ส่งไปยังแชตทริป',
'assistant.admin.chatgptShared':
'คุณกำลังแชร์แพ็กเกจ ChatGPT ของตัวเองกับทุกคนบนเซิร์ฟเวอร์นี้: แชตของทุกคนจะนับรวมในแพ็กเกจของคุณ ตรวจสอบว่าแพ็กเกจและข้อกำหนดของ OpenAI อนุญาต',
};
export default assistant;
+2
View File
@@ -430,5 +430,7 @@ const assistant: TranslationStrings = {
'assistant.tool.toggle_vacay_entry': 'İzin günü belirle',
'assistant.tool.mark_country_visited': 'Ülkeyi ziyaret edildi olarak işaretle',
'assistant.tool.send_collab_message': 'Gezi sohbetine gönder',
'assistant.admin.chatgptShared':
'Kendi ChatGPT aboneliğini bu sunucudaki herkesle paylaşıyorsun: sohbetleri senin planından düşer. Planının ve OpenAI koşullarının buna izin verip vermediğini kontrol et.',
};
export default assistant;
+2
View File
@@ -472,5 +472,7 @@ const assistant: TranslationStrings = {
'assistant.tool.toggle_vacay_entry': 'Позначити день відпустки',
'assistant.tool.mark_country_visited': 'Позначити країну як відвідану',
'assistant.tool.send_collab_message': 'Надіслати в чат подорожі',
'assistant.admin.chatgptShared':
'Ви ділитеся своєю підпискою ChatGPT з усіма на цьому сервері: їхні чати витрачають ваш ліміт. Перевірте, що ваш тариф і умови OpenAI це дозволяють.',
};
export default assistant;
+2
View File
@@ -406,5 +406,7 @@ const assistant: TranslationStrings = {
'assistant.tool.toggle_vacay_entry': 'Đặt ngày nghỉ phép',
'assistant.tool.mark_country_visited': 'Đánh dấu quốc gia đã đến',
'assistant.tool.send_collab_message': 'Gửi vào trò chuyện chuyến đi',
'assistant.admin.chatgptShared':
'Bạn đang chia sẻ gói ChatGPT của riêng mình với mọi người trên máy chủ này: các cuộc trò chuyện của họ được tính vào gói của bạn. Hãy kiểm tra gói của bạn và điều khoản của OpenAI có cho phép không.',
};
export default assistant;
+2
View File
@@ -400,5 +400,7 @@ const assistant: TranslationStrings = {
'assistant.tool.toggle_vacay_entry': '設為休假日',
'assistant.tool.mark_country_visited': '標記國家為已去過',
'assistant.tool.send_collab_message': '傳送到行程聊天',
'assistant.admin.chatgptShared':
'你正在與此伺服器上的所有人共用你自己的 ChatGPT 訂閱:他們的聊天會計入你的方案。請確認你的方案和 OpenAI 的條款允許這樣做。',
};
export default assistant;
+2
View File
@@ -400,5 +400,7 @@ const assistant: TranslationStrings = {
'assistant.tool.toggle_vacay_entry': '设为休假日',
'assistant.tool.mark_country_visited': '标记国家为已去过',
'assistant.tool.send_collab_message': '发送到行程聊天',
'assistant.admin.chatgptShared':
'你正在与此服务器上的所有人共享你自己的 ChatGPT 订阅:他们的聊天会计入你的套餐。请确认你的套餐和 OpenAI 的条款允许这样做。',
};
export default assistant;