// ==UserScript== // @name ChatGPT Infinity ∞ // @name:af ChatGPT Oneindig ∞ // @name:ar دردشةGPT إنفينيتي ∞ // @name:az ChatGPT Sonsuzluq ∞ // @name:be ChatGPT Бясконцасць ∞ // @name:bg ChatGPT Безкрайност ∞ // @name:bn ChatGPT ইনফিনিটি ∞ // @name:bo ChatGPT དག་སྐྱེས་ཡོད་པ་ ∞ // @name:bs ChatGPT Beskrajnost ∞ // @name:ca ChatGPT Infinit ∞ // @name:ckb ChatGPT نەپێندییە ∞ // @name:cs ChatGPT Nekonečno ∞ // @name:cy ChatGPT Anfeidredd ∞ // @name:da ChatGPT Uendelighed ∞ // @name:de ChatGPT Unendlichkeit ∞ // @name:dv ChatGPT ނުވަތަ ބާވައްޖޭގެން ∞ // @name:dz ChatGPT རྩེད་སྒྲིབ་གཉིས་ ∞ // @name:el ChatGPT Άπειρο ∞ // @name:eo ChatGPT Infinito ∞ // @name:es ChatGPT Infinito ∞ // @name:et ChatGPT Lõpmatus ∞ // @name:eu ChatGPT Infinitua ∞ // @name:fa ChatGPT بینهایت ∞ // @name:fi ChatGPT Ääretön ∞ // @name:fo ChatGPT Óendanlighed ∞ // @name:fr ChatGPT Infini ∞ // @name:fr-CA ChatGPT Infini ∞ // @name:gl ChatGPT Infinito ∞ // @name:gu ChatGPT અનંત ∞ // @name:haw ChatGPT Māhina ʻole ∞ // @name:he ChatGPT אינסוף ∞ // @name:hi ChatGPT अनंत ∞ // @name:hr ChatGPT Beskrajnost ∞ // @name:hu ChatGPT Végtelenség ∞ // @name:hy ChatGPT Անվերջ ∞ // @name:id ChatGPT Infinity ∞ // @name:is ChatGPT Óendanleiki ∞ // @name:it ChatGPT Infinito ∞ // @name:ja ChatGPT 無限 ∞ // @name:ka ChatGPT უსასრულობა ∞ // @name:km ChatGPT អនឡាញ ∞ // @name:kn ChatGPT ಅನಂತ ∞ // @name:ko ChatGPT 무한 ∞ // @name:ku ChatGPT Pêşangeh ∞ // @name:ky ChatGPT Ички ∞ // @name:la ChatGPT Infinitas ∞ // @name:lb ChatGPT Unendlechkeet ∞ // @name:lo ChatGPT ບໍ່ໄປສູ່ຈັກຂອງສາມຫວ່າງ ∞ // @name:lt ChatGPT Begalybė ∞ // @name:lv ChatGPT Bezgalība ∞ // @name:mk ChatGPT Бесконечност ∞ // @name:ml ChatGPT അനന്തത ∞ // @name:mn ChatGPT Тэгш бус ∞ // @name:mt ChatGPT Infinità ∞ // @name:my ChatGPT မြင်ကွင်း ∞ // @name:ne ChatGPT अनंत ∞ // @name:nl ChatGPT Oneindigheid ∞ // @name:no ChatGPT Uendelighet ∞ // @name:pa ChatGPT ਇਨਫਿਨਿਟੀ ∞ // @name:pl ChatGPT Nieskończoność ∞ // @name:ps ChatGPT لامکان ∞ // @name:pt ChatGPT Infinito ∞ // @name:pt-BR ChatGPT Infinito ∞ // @name:ro ChatGPT Infinitate ∞ // @name:ru ChatGPT Бесконечность ∞ // @name:si ChatGPT අනන්තය ∞ // @name:sk ChatGPT Nekonečno ∞ // @name:sl ChatGPT Neskončnost ∞ // @name:so ChatGPT Qaybtiisa ∞ // @name:sr ChatGPT Бескрајност ∞ // @name:sv ChatGPT Oändlighet ∞ // @name:ta ChatGPT முடிவிலிருந்து ∞ // @name:te ChatGPT అనంతత ∞ // @name:tg ChatGPT Беоҳӣ ∞ // @name:th ChatGPT อนันต์ ∞ // @name:ti ChatGPT መደመር ∞ // @name:tk ChatGPT Sonsuzluk ∞ // @name:tr ChatGPT Sonsuzluk ∞ // @name:uk ChatGPT Нескінченність ∞ // @name:ur ChatGPT بے انتہا ∞ // @name:vi ChatGPT Vô cùng ∞ // @name:yi ChatGPT אינפיניטי ∞ // @name:zh ChatGPT 无限 ∞ // @name:zh-CN ChatGPT 无限 ∞ // @name:zh-HK ChatGPT 無限 ∞ // @name:zh-SG ChatGPT 无限 ∞ // @name:zh-TW ChatGPT 無限 ∞ // @description Generate endless answers from all-knowing ChatGPT (in any language!) // @description:af Genereer eindelose antwoorde van die alwetende ChatGPT (in enige taal!) // @description:am ሓበሬታይ ኣይነበርና መልእኽቲ ኣለኹም ኣሎኻዊ ያልኣይት ChatGPT (በቋንቋ!) // @description:ar قم بتوليد إجابات لا نهائية من ChatGPT المعرف بكل شيء (بأي لغة!) // @description:az Hər şeyi bilən ChatGPT-dən sonsuz cavablar yaradın (hər hansı bir dil ilə!) // @description:be Стварыце бясконцы адказы ад ўсеведучага ChatGPT (на любой мове!) // @description:bem Pamene mwaposa mafolosho a mʌnoze ChatGPT (mu lupiya lwa ndalama!) // @description:bg Генерирайте безкрайни отговори от всезнайния ChatGPT (на всяк език!) // @description:bn সর্বজ্ঞ চ্যাটজিপিটি থেকে অসীম উত্তর তৈরি করুন (যে কোন ভাষায়!) // @description:bo བཟོས་པ་བརྗོད་པའི་ChatGPTགི་གྲོས་པར་འགྲུབ་འདེམས་བསྐྱེད་མི་འོངས་པ། (ལས་སྐབས་ཀྱི་སྐད་ཡིག་གི་སྐད་!) // @description:bs Generišite beskonačne odgovore od sveznajućeg ChatGPT (na bilo kom jeziku!) // @description:ca Genereu respostes infinites des de l'omniscient ChatGPT (en qualsevol idioma!) // @description:ceb Sukdagon ang walay katapusan nga mga tubag gikan sa tanan-mahibaw-anong ChatGPT (sa bisan unsang pinulongan!) // @description:ckb پێشبینی چاتگپتەکە دیارییەکانی پێکراوەکان بنووسە (بە هەر زمانێکی دیکە!) // @description:cs Generujte nekonečné odpovědi od vševědoucího ChatGPT (v jakémkoli jazyce!) // @description:cy Cynhyrchwch atebion diddiwedd o ChatGPT y gŵr sy'n gwybod popeth (mewn unrhyw iaith!) // @description:da Generer endeløse svar fra den altvidende ChatGPT (på hvilket som helst sprog!) // @description:de Generieren Sie endlose Antworten von dem allwissenden ChatGPT (in beliebiger Sprache!) // @description:dv އެހެނދުކަޗެއްވެސީ ޗެއްސިސްޓޯނަށް ނިޔަލައިފައިވަނީ ސުރުކޮށް ފީހުން (ކަންއެވެސް ހަމަވެސް!) // @description:dz ཆགས་ཀྱིས་ལ་བརྟེན་གང་རུང་གི་ChatGPTགི་ཚོགས་པའི་སྐད་ཡིག་གྱི་སྐད་ཡིག་བྱེད་པ། (བླ་མའི་སྐད་ཡིག་!) // @description:el Δημιουργήστε ατελείωτες απαντήσεις από το γνώστη ChatGPT (σε οποιαδήποτε γλώσσα!) // @description:eo Kreu nesfinaĵajn respondojn el la ĉio-scianta ChatGPT (en ajn lingvo!) // @description:es Genera respuestas infinitas desde el ChatGPT omnisciente (¡en cualquier idioma!) // @description:et Loo lõputuid vastuseid kõike-teadvast ChatGPT-st (mis tahes keeles!) // @description:eu Sortu erantzun infinituak guztiz-arduratsuaren ChatGPT-tik (edozein hizkuntzan!) // @description:fa پاسخهای بیپایانی را از ChatGPT همهدانا تولید کنید (به هر زبانی!) // @description:fi Luo loputtomia vastauksia kaikkitietävästä ChatGPT:stä (millä tahansa kielellä!) // @description:fo Skapa endalaus svør frá altvitandi ChatGPT (á hvørjum málrøð!) // @description:fr Générez des réponses infinies à partir de ChatGPT qui sait tout (dans n'importe quelle langue!) // @description:fr-CA Générez des réponses infinies à partir de ChatGPT qui sait tout (dans n'importe quelle langue!) // @description:gd Cruthaich freagairtean gun crìoch à ChatGPT a tha a' faighneachd gach càil (ann an sam bith cànan!) // @description:gl Xere as respostas infinitas do ChatGPT que todo o sabe (en calquera lingua!) // @description:gu જ્ઞાનવાન ChatGPT થી અનંત જવાબો ઉત્પન કરો (કોઈ પણ ભાષામાં!) // @description:haw Haleleʻa i nā ʻōlelo pālulelo mai ke kupa ʻike loa o ChatGPT (i loko o kēlā ʻōlelo aku aʻe!) // @description:he יצרו תשובות אינסופיות מה-ChatGPT המבין הכל (בכל שפה!) // @description:hi सभी-जाननेवाले चैटजीपीटी से अनंत उत्तरों का उत्पादन करें (किसी भी भाषा में!) // @description:hr Generirajte beskrajne odgovore iz sveznajućeg ChatGPT-a (na bilo kojem jeziku!) // @description:ht Jenere repons san fen soti nan ChatGPT k-ap konnen tout bagay yo (nan nenpòt lang!) // @description:hu Végtelen válaszokat generáljon a mindentudó ChatGPT-ből (bármely nyelven!) // @description:hy Ստեղծեք անսահմանափակ պատասխաններ ամենագիտական ChatGPT-ից (ցանկացած լեզուն մեջ!) // @description:id Hasilkan jawaban tak terbatas dari ChatGPT yang tahu segalanya (dalam bahasa apa pun!) // @description:is Búið til endalaus svör frá allvissu ChatGPT (á hvaða tungumáli sem er!) // @description:it Genera risposte infinite dall'onnisciente ChatGPT (in qualsiasi lingua!) // @description:ja あらゆる言語で全知のChatGPTから無限の回答を生成します! // @description:jv Mbukak panggung jawaban saka ChatGPT kang suwénéh kabèh (kénging basa apapun!) // @description:ka შექმენით უსასრულო პასუხები ყველგანაწილებული ChatGPT-დან (ნელა ენაზე!) // @description:kab Kkes-as yidir seg yisem-asen n tafriqt ara ddunnit ChatGPT (di tifrat ara ddunit!) // @description:kk Барлық тілде бар білген ChatGPT-ден шексіз жауаптар жасау (қандай да тілде!) // @description:km បង្កើតចម្លើយមិនឃើញចប់ពី ChatGPT ដែលចែកសង្ស័យទាំងអស់ (ជាន់គ្រប់ភាសា!) // @description:kn ಎಲ್ಲರು ತಿಳಿದಿರುವ ಚಾಟ್ಜಿಪಿಟಿಯಿಂದ ಅನಂತ ಉತ್ತರಗಳನ್ನು ರಚಿಸಿ (ಯಾವುದೇ ಭಾಷೆಯಲ್ಲಿ!) // @description:ko 어떤 언어로든지 무궁무진한 답변을 만들어내는 ChatGPT입니다! // @description:ku Ji ChatGPT-ê, ku hemî tiştan dizane, bersiva li serbazên li dor qewî yên hilbijartin (bi hertiştî zimanek!) // @description:ky Түз билимдүү ChatGPT боюнча чыгармаларды жаса // @description:la Genera infinitas responsiones de ChatGPT omniscio (in qualibet lingua!) // @description:lb Generéiert endlos Äntwerten vum allwëssende ChatGPT (op jiddere Sprooch!) // @description:lo ສ້າງຜົນສົດທີ່ສາມາດເລືອກຈາກພາສາທີ່ຮູ້ບຸກກຳລັງ ChatGPT (ໃນພາສາໃດໜຶ່ງ!) // @description:lt Sugeneruokite begalinį atsakymų kiekį iš visai žinoančio ChatGPT (bet kuria kalba!) // @description:lv Ģenerē nebeidzamus atbilžu variantus no vissapratīgā ChatGPT (jebkurā valodā!) // @description:mg Mandoza ny valiny miaraka amin'ny ChatGPT mahalala ny zavatra rehetra (amin'ny fiteny iray kokoa!) // @description:mi Whakapūmau i ngā whakautu kore mutunga mai i te ChatGPT matau i ngā reo katoa! // @description:mk Генерирајте безброј одговори од сèзнаената ChatGPT (на било кој јазик!) // @description:ml എന്നെഴുതാൻ അനന്യനായ ChatGPT (ഏതെങ്കിലും ഭാഷയിൽ) ഇന്നേക്കും വേണ്ടി അവസാനിപ്പിക്കുക! // @description:mn Сүүлд үлдсэнээсээ хайрцаг болох ChatGPT (ямар ч хэл дээр) дээрхээр ярих // @description:ms Cipta pelbagai jawapan daripada ChatGPT yang tahu segala-galanya (dalam apa-apa bahasa!) // @description:mt Iġġenera risposti infiniti mill-ChatGPT li kollha jaf (f'xi lingwa!) // @description:my အားလုံးကိုသင်ရိုးရိုးဆွဲနိုင်သည့် ChatGPT (တစ်ခုမှာယူသုံးရန်!) // @description:ne सबै-ज्ञानी ChatGPT बाट अनंत उत्तरहरू उत्पन्न गर्नुहोस् (कुनै पनि भाषामा!) // @description:nl Genereer eindeloze antwoorden van alwetende ChatGPT (in elke taal!) // @description:no Generer endeløse svar fra allvitende ChatGPT (på hvilket som helst språk!) // @description:ny Galimoto mabwino a mtendere zosiyanasiyana kuchokera ku ChatGPT woyankhula zonse! (muyankhulitsa chilichonse!) // @description:pa ਸਭ ਜਾਣ ਵਾਲੇ ChatGPT ਤੋਂ ਲੰਬੇ ਉੱਤਰਾਂ ਨੂੰ ਬਣਾਓ (ਕਿਸੇ ਵੀ ਭਾਸ਼ਾ ਵਿੱਚ!) // @description:pap Hasi respuesta sinfin di ChatGPT ku tur sabi (na kua idioma!) // @description:pl Generuj nieskończone odpowiedzi od wszechwiedzącego ChatGPT (w dowolnym języku!) // @description:ps د هغوی چټکال ChatGPT لخوا نهایت جوابونه جوړه کړئ (د هر یوه ژبه کی!) // @description:pt Gere respostas infinitas do ChatGPT onisciente (em qualquer idioma!) // @description:pt-BR Gere respostas infinitas do ChatGPT onisciente (em qualquer idioma!) // @description:rn Basha inzira nk'itandukanye z'uko ChatGPT uzi (mu rurimi rwose!) // @description:ro Generează răspunsuri infinite de la ChatGPT omniscient (în orice limbă!) // @description:ru Генерируйте бесконечные ответы от всезнающего ChatGPT (на любом языке!) // @description:rw Banda inama z'imirimo isigaye zose z'umuco wa ChatGPT (mu rurimi rwose!) // @description:sg Tia ngamana nga mbetela ti ChatGPT tozuwa mitayi mingi (po wundi ndimi yo ngambo!) // @description:si සියළු දැනටමත් සහතිකපත්කරන තවත් සිතියම් සැකසුම් ලබා දෙන්නාවූ ChatGPT සෑදීම (ඕනෑම භාෂාවෙන්ම!) // @description:sk Generujte nekonečné odpovede od vševietajúceho ChatGPT (v akomkoľvek jazyku!) // @description:sl Generirajte neskončne odgovore iz vsevednega ChatGPT (v katerem koli jeziku!) // @description:sm Faia se faiga tele i le ChatGPT eseese (i nisi gagana!) // @description:sn Simudza mhinduro dzakawanda kubva kune ChatGPT ichiwanikwa chisarudzo! (mune rimwe nguva!) // @description:so Kor u qaado jawaabo kala duwan oo ka soo saar ChatGPT (luuqad ka mid ah!) // @description:sr Генеришите безброј одговора од свемоћног ChatGPT (на било ком језику!) // @description:sv Generera oändliga svar från allvetande ChatGPT (på valfritt språk!) // @description:sw Toa majibu yasiyokuwa na mwisho kutoka kwa ChatGPT mwenye maarifa yote (katika lugha yoyote!) // @description:ta அனைத்து தகவலையும் அறியப்பட்ட சொந்தமான ChatGPT இலிருந்து முடிவுகளை உருவாக்கவும் (எந்த மொழியிலும்!) // @description:te అన్నింటినీకింట మాటలు రాయండి ChatGPT గురించి అనేక జవాబాలను సృష్టించండి (ఏదైనా భాషలో!) // @description:tg Ҷавобҳои бесуданни ChatGPTи ҳамаифақат (дар як забони муайяни!) // @description:th สร้างคำตอบไม่สิ้นสุดจาก ChatGPT ที่รู้ทุกสิ่ง (ในภาษาใดก็ได้!) // @description:ti ክርስትን ለማውጣት ከገጽታውን ChatGPT የተከሳሽ አስተካክል አስተካክሎት (በእውነት ቋንቋ!) // @description:tk Şeýle anlaşylýan ChatGPT (her hili üçin) arasyndan bäşmüňhat jawaplar döret // @description:tn Hlela zitsha zwine zwiṱhiselela kha ChatGPT vhufudziṱe (muvhili wo vha u ite!) // @description:to Fakatonutonu ʻihe ngāuekesi mei he ChatGPT fakaongoongo toenga (i he lea faka-Tonga ia!) // @description:tpi Sanapim hamamasples long save olsem ChatGPT i masples (long wanpela tok ples!) // @description:tr Bilge ChatGPT'den sonsuz cevaplar üret (herhangi bir dilde!) // @description:uk Генеруйте безкінечні відповіді від усезнаючого ChatGPT (на будь-якій мові!) // @description:ur سب جاننے والے ChatGPT سے لامتناہی جوابات پیدا کریں (کسی بھی زبان میں!) // @description:uz Barcha biladigan ChatGPT dan cheklovli javoblar oling (hech qanday tilda ham)! // @description:vi Tạo ra vô số câu trả lời từ ChatGPT thông minh (bằng bất kỳ ngôn ngữ nào!) // @description:xh Bhala izinto ezingekwaziyo eziyimfihlo kusuka ku ChatGPT (ngolwimi lwanyanetha!) // @description:yi דזשענערייט סאָף ענטפֿערס פֿון אַלע-געוויסן ChatGPT (אין קיין שפּראַך!) // @description:zh 从无所不知的 ChatGPT 生成无穷无尽的答案 (用任何语言!) // @description:zh-CN 从无所不知的 ChatGPT 生成无穷无尽的答案 (用任何语言!) // @description:zh-HK 從無所不知的 ChatGPT 生成無窮無盡的答案 (用任何語言!) // @description:zh-SG 从无所不知的 ChatGPT 生成无穷无尽的答案 (用任何语言!) // @description:zh-TW 從無所不知的 ChatGPT 生成無窮無盡的答案 (用任何語言!) // @author Adam Lui // @namespace https://github.com/adamlui // @version 2025.9.15.1 // @license MIT // @icon data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22180%22%20height=%22180%22%20fill=%22none%22%3E%3Cstyle%3E:root%7B--primary-fill:%23000;--secondary-fill:%23fff;%7D@media%20(prefers-color-scheme:dark)%7B:root%7B--primary-fill:%23fff;--secondary-fill:%23000;%7D%7D%3C/style%3E%3Cg%20clip-path=%22url(%23a)%22%3E%3Crect%20width=%22180%22%20height=%22180%22%20fill=%22var(--primary-fill)%22%20rx=%2290%22/%3E%3Cg%20clip-path=%22url(%23b)%22%3E%3Cpath%20fill=%22var(--secondary-fill)%22%20d=%22M75.91%2073.628V62.232c0-.96.36-1.68%201.199-2.16l22.912-13.194c3.119-1.8%206.838-2.639%2010.676-2.639%2014.394%200%2023.511%2011.157%2023.511%2023.032%200%20.839%200%201.799-.12%202.758l-23.752-13.914c-1.439-.84-2.879-.84-4.318%200L75.91%2073.627Zm53.499%2044.383v-27.23c0-1.68-.72-2.88-2.159-3.719L97.142%2069.55l9.836-5.638c.839-.48%201.559-.48%202.399%200l22.912%2013.195c6.598%203.839%2011.035%2011.995%2011.035%2019.912%200%209.116-5.397%2017.513-13.915%2020.992v.001Zm-60.577-23.99-9.836-5.758c-.84-.48-1.2-1.2-1.2-2.16v-26.39c0-12.834%209.837-22.55%2023.152-22.55%205.039%200%209.716%201.679%2013.676%204.678L70.993%2055.516c-1.44.84-2.16%202.039-2.16%203.719v34.787-.002Zm21.173%2012.234L75.91%2098.339V81.546l14.095-7.917%2014.094%207.917v16.793l-14.094%207.916Zm9.056%2036.467c-5.038%200-9.716-1.68-13.675-4.678l23.631-13.676c1.439-.839%202.159-2.038%202.159-3.718V85.863l9.956%205.757c.84.48%201.2%201.2%201.2%202.16v26.389c0%2012.835-9.957%2022.552-23.27%2022.552v.001Zm-28.43-26.75L47.72%20102.778c-6.599-3.84-11.036-11.996-11.036-19.913%200-9.236%205.518-17.513%2014.034-20.992v27.35c0%201.68.72%202.879%202.16%203.718l29.989%2017.393-9.837%205.638c-.84.48-1.56.48-2.399%200Zm-1.318%2019.673c-13.555%200-23.512-10.196-23.512-22.792%200-.959.12-1.919.24-2.879l23.63%2013.675c1.44.84%202.88.84%204.32%200l30.108-17.392v11.395c0%20.96-.361%201.68-1.2%202.16l-22.912%2013.194c-3.119%201.8-6.837%202.639-10.675%202.639Zm29.748%2014.274c14.515%200%2026.63-10.316%2029.39-23.991%2013.434-3.479%2022.071-16.074%2022.071-28.91%200-8.396-3.598-16.553-10.076-22.43.6-2.52.96-5.039.96-7.557%200-17.153-13.915-29.99-29.989-29.99-3.239%200-6.358.48-9.477%201.56-5.398-5.278-12.835-8.637-20.992-8.637-14.515%200-26.63%2010.316-29.39%2023.991-13.434%203.48-22.07%2016.074-22.07%2028.91%200%208.396%203.598%2016.553%2010.075%2022.431-.6%202.519-.96%205.038-.96%207.556%200%2017.154%2013.915%2029.989%2029.99%2029.989%203.238%200%206.357-.479%209.476-1.559%205.397%205.278%2012.835%208.637%2020.992%208.637Z%22/%3E%3C/g%3E%3C/g%3E%3Cdefs%3E%3CclipPath%20id=%22a%22%3E%3Cpath%20d=%22M0%200h180v180H0z%22/%3E%3C/clipPath%3E%3CclipPath%20id=%22b%22%3E%3Cpath%20d=%22M29.487%2029.964h121.035v119.954H29.487z%22/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E // @icon64 data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22180%22%20height=%22180%22%20fill=%22none%22%3E%3Cstyle%3E:root%7B--primary-fill:%23000;--secondary-fill:%23fff;%7D@media%20(prefers-color-scheme:dark)%7B:root%7B--primary-fill:%23fff;--secondary-fill:%23000;%7D%7D%3C/style%3E%3Cg%20clip-path=%22url(%23a)%22%3E%3Crect%20width=%22180%22%20height=%22180%22%20fill=%22var(--primary-fill)%22%20rx=%2290%22/%3E%3Cg%20clip-path=%22url(%23b)%22%3E%3Cpath%20fill=%22var(--secondary-fill)%22%20d=%22M75.91%2073.628V62.232c0-.96.36-1.68%201.199-2.16l22.912-13.194c3.119-1.8%206.838-2.639%2010.676-2.639%2014.394%200%2023.511%2011.157%2023.511%2023.032%200%20.839%200%201.799-.12%202.758l-23.752-13.914c-1.439-.84-2.879-.84-4.318%200L75.91%2073.627Zm53.499%2044.383v-27.23c0-1.68-.72-2.88-2.159-3.719L97.142%2069.55l9.836-5.638c.839-.48%201.559-.48%202.399%200l22.912%2013.195c6.598%203.839%2011.035%2011.995%2011.035%2019.912%200%209.116-5.397%2017.513-13.915%2020.992v.001Zm-60.577-23.99-9.836-5.758c-.84-.48-1.2-1.2-1.2-2.16v-26.39c0-12.834%209.837-22.55%2023.152-22.55%205.039%200%209.716%201.679%2013.676%204.678L70.993%2055.516c-1.44.84-2.16%202.039-2.16%203.719v34.787-.002Zm21.173%2012.234L75.91%2098.339V81.546l14.095-7.917%2014.094%207.917v16.793l-14.094%207.916Zm9.056%2036.467c-5.038%200-9.716-1.68-13.675-4.678l23.631-13.676c1.439-.839%202.159-2.038%202.159-3.718V85.863l9.956%205.757c.84.48%201.2%201.2%201.2%202.16v26.389c0%2012.835-9.957%2022.552-23.27%2022.552v.001Zm-28.43-26.75L47.72%20102.778c-6.599-3.84-11.036-11.996-11.036-19.913%200-9.236%205.518-17.513%2014.034-20.992v27.35c0%201.68.72%202.879%202.16%203.718l29.989%2017.393-9.837%205.638c-.84.48-1.56.48-2.399%200Zm-1.318%2019.673c-13.555%200-23.512-10.196-23.512-22.792%200-.959.12-1.919.24-2.879l23.63%2013.675c1.44.84%202.88.84%204.32%200l30.108-17.392v11.395c0%20.96-.361%201.68-1.2%202.16l-22.912%2013.194c-3.119%201.8-6.837%202.639-10.675%202.639Zm29.748%2014.274c14.515%200%2026.63-10.316%2029.39-23.991%2013.434-3.479%2022.071-16.074%2022.071-28.91%200-8.396-3.598-16.553-10.076-22.43.6-2.52.96-5.039.96-7.557%200-17.153-13.915-29.99-29.989-29.99-3.239%200-6.358.48-9.477%201.56-5.398-5.278-12.835-8.637-20.992-8.637-14.515%200-26.63%2010.316-29.39%2023.991-13.434%203.48-22.07%2016.074-22.07%2028.91%200%208.396%203.598%2016.553%2010.075%2022.431-.6%202.519-.96%205.038-.96%207.556%200%2017.154%2013.915%2029.989%2029.99%2029.989%203.238%200%206.357-.479%209.476-1.559%205.397%205.278%2012.835%208.637%2020.992%208.637Z%22/%3E%3C/g%3E%3C/g%3E%3Cdefs%3E%3CclipPath%20id=%22a%22%3E%3Cpath%20d=%22M0%200h180v180H0z%22/%3E%3C/clipPath%3E%3CclipPath%20id=%22b%22%3E%3Cpath%20d=%22M29.487%2029.964h121.035v119.954H29.487z%22/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E // @compatible chrome // @compatible firefox // @compatible edge // @compatible opera // @compatible brave // @compatible vivaldi // @compatible waterfox // @compatible librewolf // @compatible ghost // @compatible qq // @compatible whale // @match *://chatgpt.com/* // @connect cdn.jsdelivr.net // @connect gm.chatgptinfinity.com // @connect raw.githubusercontent.com // @require https://cdn.jsdelivr.net/npm/@kudoai/chatgpt.js@3.8.3/dist/chatgpt.min.js#sha256-jeA6TrwGYL3u5epUnl+2cbbGPhvFRocIMwQbQjNedZs= // @require https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@1e84c2e/assets/js/lib/dom.js/dist/dom.min.js#sha256-xovdxRnmYD/eCgBiGCu5+Vd3+WWIvLUKVtU/MnRueeU= // @require https://cdn.jsdelivr.net/gh/adamlui/chatgpt-infinity@b80cf38/chromium/extension/components/modals.js#sha256-DhMWnY6BLbd5gmKI3TjnPq8vzDMqGKd7bJLeLS4DMRc= // @require https://cdn.jsdelivr.net/gh/adamlui/chatgpt-infinity@a55cbec/chromium/extension/components/toggles.js#sha256-Z2rDqk5xYecPUTltm5tgJqgkWfwVKm3UoeFSI9z61fY= // @require https://cdn.jsdelivr.net/gh/adamlui/chatgpt-infinity@62b5899/chromium/extension/lib/browser.js#sha256-7teBecqrjkazKH6oetGyxKlBkAk5U9ota/LNCB3Q+Jw= // @require https://cdn.jsdelivr.net/gh/adamlui/chatgpt-infinity@63b2a9d/chromium/extension/lib/feedback.js#sha256-+pCdFOvlfPkjBY2uk+6waX+K+NPkJ6teEBY2qSlUnuo= // @require https://cdn.jsdelivr.net/gh/adamlui/chatgpt-infinity@3372987/chromium/extension/lib/infinity.js#sha256-MN1pC8s+N3Rqqj+2TmKB3Q3DyjNMmFSmdZD/4FusqyE= // @require https://cdn.jsdelivr.net/gh/adamlui/chatgpt-infinity@619cd01/chromium/extension/lib/settings.js#sha256-ZjJnWJTkURgan8bqB5R2xiXUzLyf7+ksViFrZ7kGInI= // @require https://cdn.jsdelivr.net/gh/adamlui/chatgpt-infinity@be74ae2/chromium/extension/lib/string.js#sha256-FDNZnx3brYq3W6+KD7pbnffgiXQgnehgvZBOpT3PLrs= // @require https://cdn.jsdelivr.net/gh/adamlui/chatgpt-infinity@4d9d28f/chromium/extension/lib/styles.js#sha256-eFylUQlwNiAAbGJlK0D6MSrDdTOFxQK/L3MJG7YUQG0= // @require https://cdn.jsdelivr.net/gh/adamlui/chatgpt-infinity@c040d5d/chromium/extension/lib/sync.js#sha256-XA2p7A8i2R0MHsO4J0R2hwHSaAC/orytT3POQfeNY0I= // @require https://cdn.jsdelivr.net/gh/adamlui/chatgpt-infinity@8156513/chromium/extension/lib/ui.js#sha256-2yuQbliwz+uaCxUIEeTMWIH5JADHgjDBZD4/8I2T8rE= // @resource rpgCSS https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@727feff/assets/styles/rising-particles/dist/gray.min.css#sha256-48sEWzNUGUOP04ur52G5VOfGZPSnZQfrF3szUr4VaRs= // @resource rpwCSS https://cdn.jsdelivr.net/gh/adamlui/ai-web-extensions@727feff/assets/styles/rising-particles/dist/white.min.css#sha256-6xBXczm7yM1MZ/v0o1KVFfJGehHk47KJjq8oTktH4KE= // @grant GM_setValue // @grant GM_getValue // @grant GM_registerMenuCommand // @grant GM_unregisterMenuCommand // @grant GM_getResourceText // @grant GM_xmlhttpRequest // @grant GM.xmlHttpRequest // @noframes // @downloadURL https://gm.chatgptinfinity.com // @updateURL https://gm.chatgptinfinity.com // @homepageURL https://chatgptinfinity.com // @supportURL https://support.chatgptinfinity.com // @contributionURL https://github.com/sponsors/adamlui // ==/UserScript== // Documentation: https://docs.chatgptinfinity.com // NOTE: This script relies on the powerful chatgpt.js library @ https://chatgpt.js.org // © 2023–2025 KudoAI & contributors under the MIT license. (async () => { // Init DATA window.env = { browser: { language: chatgpt.getUserLanguage(), isFF: chatgpt.browser.isFirefox(), isMobile: chatgpt.browser.isMobile() }, scriptManager: { name: (() => { try { return GM_info.scriptHandler } catch (err) { return 'unknown' }})(), version: (() => { try { return GM_info.version } catch (err) { return 'unknown' }})() }, ui: { scheme: ui.getScheme() } } env.browser.isPortrait = env.browser.isMobile && ( innerWidth < innerHeight ) env.scriptManager.supportsTooltips = env.scriptManager.name == 'Tampermonkey' && parseInt(env.scriptManager.version.split('.')[0]) >= 5 window.xhr = typeof GM != 'undefined' && GM.xmlHttpRequest || GM_xmlhttpRequest window.app = { version: GM_info.script.version, chatgptjsVer: /chatgpt\.js@([\d.]+)/.exec(GM_info.scriptMetaStr)[1], commitHashes: { app: '4894b54' } // for cached .json } app.urls = { resourceHost: `https://cdn.jsdelivr.net/gh/adamlui/chatgpt-infinity@${app.commitHashes.app}` } const remoteData = { app: await new Promise(resolve => xhr({ method: 'GET', url: `${app.urls.resourceHost}/assets/data/app.json`, onload: ({ responseText }) => resolve(JSON.parse(responseText)) })), msgs: await new Promise(resolve => { const msgHostDir = `${app.urls.resourceHost}/chromium/extension/_locales/`, msgLocaleDir = `${ env.browser.language ? env.browser.language.replace('-', '_') : 'en' }/` let msgHref = `${ msgHostDir + msgLocaleDir }messages.json`, msgXHRtries = 0 function fetchMsgs() { xhr({ method: 'GET', url: msgHref, onload: handleMsgs })} function handleMsgs(resp) { try { // to return localized messages.json const msgs = JSON.parse(resp.responseText), flatMsgs = {} for (const key in msgs) // remove need to ref nested keys if (typeof msgs[key] == 'object' && 'message' in msgs[key]) flatMsgs[key] = msgs[key].message resolve(flatMsgs) } catch (err) { // if bad response msgXHRtries++ ; if (msgXHRtries == 3) return resolve({}) // try original/region-stripped/EN only msgHref = env.browser.language.includes('-') && msgXHRtries == 1 ? // if regional lang on 1st try... msgHref.replace(/(_locales\/[^_]+)_[^_]+(\/)/, '$1$2') // ...strip region before retrying : `${msgHostDir}en/messages.json` // else use default English messages fetchMsgs() } } fetchMsgs() }) } Object.assign(app, { ...remoteData.app, urls: { ...app.urls, ...remoteData.app.urls }, msgs: remoteData.msgs }) // Init SETTINGS settings.load(Object.keys(settings.controls).filter(key => key != 'infinityMode')) // exclude infinityMode... settings.save('infinityMode', false) // ...to always init as false if (!config.replyLanguage) settings.save('replyLanguage', env.browser.language) // init reply language if unset if (!config.replyTopic) settings.save('replyTopic', app.msgs.menuLabel_all) // init reply topic if unset if (!config.replyInterval) settings.save('replyInterval', 7) // init refresh interval to 7 secs if unset // Define MENU functions window.toolbarMenu = { state: { symbols: ['❌', '✔️'], separator: env.scriptManager.name == 'Tampermonkey' ? ' — ' : ': ', words: [app.msgs.state_off.toUpperCase(), app.msgs.state_on.toUpperCase()] }, refresh() { if (typeof GM_unregisterMenuCommand == 'undefined') return this.entryIDs.forEach(id => GM_unregisterMenuCommand(id)) this.register() }, register() { const re_all = new RegExp(`^(${app.msgs.menuLabel_all}|all|any|every)$`, 'i') // Show "Disabled (extension active)" this.entryIDs = env.extensionActive ? [ GM_registerMenuCommand(`${this.state.symbols[0]} ${ string.toTitleCase(app.msgs.state_disabled)} (${app.msgs.menuLabel_extensionActive})`, () => modals.open('about'), env.scriptManager.supportsTooltips ? { title: ' ' } : undefined ) ] // ...or add settings entries : Object.keys(settings.controls).map(key => { const entryData = settings.controls[key] const menuLabel = `${ entryData.symbol || this.state.symbols[+settings.typeIsEnabled(key)] } ${entryData.label} ${ entryData.type == 'toggle' ? this.state.separator + this.state.words[+settings.typeIsEnabled(key)] : entryData.type == 'slider' ? ': ' + config[key] + entryData.labelSuffix || '' : entryData.status ? ` — ${entryData.status}` : '' }` return GM_registerMenuCommand(menuLabel, () => { if (entryData.type == 'toggle') { settings.save(key, !config[key]) feedback.notify(`${entryData.label}: ${this.state.words[+settings.typeIsEnabled(key)]}`) } else if (key == 'replyLanguage') { let replyLang = prompt(`${app.msgs.prompt_updateReplyLang}:`, config.replyLanguage) if (replyLang == null) return // user cancelled so do nothing else if (!/\d/.test(replyLang)) { // valid reply language set replyLang = ( // auto-case for menu/alert aesthetics replyLang.length < 4 || replyLang.includes('-') ? replyLang.toUpperCase() : string.toTitleCase(replyLang) ) settings.save('replyLanguage', replyLang || env.browser.language) modals.alert(`${app.msgs.alert_replyLangUpdated}!`, // title `${app.msgs.appName} ${ // msg app.msgs.alert_willReplyIn} ${ replyLang || app.msgs.alert_yourSysLang }.` ) } } else if (key == 'replyTopic') { let replyTopic = prompt(( app.msgs.prompt_updateReplyTopic ) + ' (' + ( app.msgs.prompt_orEnter ) + ' \'ALL\'):', config.replyTopic) if (replyTopic != null) { // user didn't cancel replyTopic = string.toTitleCase(replyTopic.toString()) // for menu/alert aesthetics settings.save('replyTopic', !replyTopic || re_all.test(replyTopic) ? app.msgs.menuLabel_all : replyTopic) modals.alert(`${app.msgs.alert_replyTopicUpdated}!`, `${app.msgs.appName} ${app.msgs.alert_willAnswer} ${ !replyTopic || re_all.test(replyTopic) ? app.msgs.alert_onAllTopics : `${app.msgs.alert_onTopicOf} ${replyTopic}` }!` ) } } else if (key == 'replyInterval') { const replyInterval = prompt(`${app.msgs.prompt_updateReplyInt}:`, config.replyInterval) if (replyInterval == null) return // user cancelled so do nothing else if (!isNaN(parseInt(replyInterval, 10)) && parseInt(replyInterval, 10) > 4) { settings.save('replyInterval', parseInt(replyInterval, 10)) modals.alert(`${app.msgs.alert_replyIntUpdated}!`, // title `${app.msgs.appName} ${ // msg app.msgs.alert_willReplyEvery} ${replyInterval} ${app.msgs.unit_seconds}.` ) } } sync.configToUI({ updatedKey: key }) }, env.scriptManager.supportsTooltips ? { title: entryData.helptip || ' ' } : undefined) }); // Add About entry this.entryIDs.push(GM_registerMenuCommand( `💡 ${app.msgs.menuLabel_about} ${app.msgs.appName}`, () => modals.open('about'), env.scriptManager.supportsTooltips ? { title: ' ' } : undefined )) } } window.updateCheck = () => xhr({ method: 'GET', url: `${app.urls.update.gm}?t=${Date.now()}`, headers: { 'Cache-Control': 'no-cache' }, onload: ({ responseText }) => { // Compare versions, alert if update found app.latestVer = /@version +(.*)/.exec(responseText)?.[1] if (app.latestVer) for (let i = 0 ; i < 4 ; i++) { // loop thru subver's const currentSubVer = parseInt(app.version.split('.')[i], 10) || 0, latestSubVer = parseInt(app.latestVer.split('.')[i], 10) || 0 if (currentSubVer > latestSubVer) break // out of comparison since not outdated else if (latestSubVer > currentSubVer) // if outdated return modals.open('update', 'available') } // Alert to no update found, nav back to About modals.open('update', 'unavailable') ; modals.open('about') }}) // Define UI functions chatgpt.isIdle = function() { // replace waiting for chat to start in case of interrupts return new Promise(resolve => { // when stop btn missing new MutationObserver((_, obs) => { if (!chatgpt.getStopBtn()) { obs.disconnect(); resolve() } }).observe(document.body, { childList: true, subtree: true }) }) } modals.update = { width: 377, available() { // Show modal const updateAvailModal = modals.alert(`🚀 ${app.msgs.alert_updateAvail}!`, // title `${app.msgs.alert_newerVer} ${app.msgs.appName} ` // msg + `(v${app.latestVer}) ${app.msgs.alert_isAvail}! ` + '${app.msgs.link_viewChanges}`, function update() { // button modals.safeWinOpen(`${app.urls.update.gm}?t=${Date.now()}`) }, '', modals.update.width ) // Localize button labels if needed if (!env.browser.language.startsWith('en')) { const updateBtns = updateAvailModal.querySelectorAll('button') updateBtns[1].textContent = app.msgs.btnLabel_update updateBtns[0].textContent = app.msgs.btnLabel_dismiss } return updateAvailModal }, unavailable() { return modals.alert(`${app.msgs.alert_upToDate}!`, // title `${app.msgs.appName} (v${app.version}) ${app.msgs.alert_isUpToDate}!`, // msg '', '', modals.update.width ) } } // Run MAIN routine // Preload sidebar NAVICON variants toggles.sidebar.update.navicon({ preload: true }) // Init EXTENSION ACTIVE state postMessage({ action: 'getExtensionInfo', source: `${app.slug}.user.js` }, location.origin) addEventListener('message', handleMsgResp) function handleMsgResp(resp) { if (resp.origin != location.origin) return const sender = resp.data.source env.extensionActive = sender.includes(app.slug) && /extension/i.test(sender) } await new Promise(resolve => setTimeout(resolve, 100)) // wait for extension response removeEventListener('message', handleMsgResp) // Create browser TOOLBAR MENU + DISABLE SCRIPT if extension active toolbarMenu.register() ; if (env.extensionActive) return // Init BROWSER/UI props await Promise.race([chatgpt.isLoaded(), new Promise(resolve => setTimeout(resolve, 5000))]) // initial UI loaded // Add LISTENER to auto-disable Infinity Mode if ('hidden' in document) // ...if Page Visibility API supported document.onvisibilitychange = () => { if (config.infinityMode) { settings.save('infinityMode', false) ; sync.configToUI({ updatedKey: 'infinityMode' }) } } // Add RISING PARTICLES styles ['rpg', 'rpw'].forEach(cssType => document.head.append(dom.create.style(GM_getResourceText(`${cssType}CSS`)))) toggles.sidebar.insert() // Auto-start if enabled if (config.autoStart) { settings.save('infinityMode', true) ; sync.configToUI({ updatedKey: 'infinityMode' }) feedback.notify(`${app.msgs.menuLabel_autoStart}: ${app.msgs.state_on.toUpperCase()}`) } // Monitor NODE CHANGES to maintain sidebar toggle visibility new MutationObserver(() => { if (!config.toggleHidden && document.querySelector(chatgpt.selectors.sidebar) && !document.querySelector(`.${toggles.sidebar.class}`) && toggles.sidebar.status != 'inserting' ) { toggles.sidebar.status = 'missing' ; toggles.sidebar.insert() } }).observe(document.body, { attributes: true, subtree: true }) // Monitor SCHEME PREF changes to update sidebar toggle + modal colors new MutationObserver(handleSchemePrefChange).observe( // for site scheme pref changes document.documentElement, { attributes: true, attributeFilter: ['class'] }) window.matchMedia('(prefers-color-scheme: dark)').addEventListener( // for browser/system scheme pref changes 'change', () => requestAnimationFrame(handleSchemePrefChange)) function handleSchemePrefChange() { const displayedScheme = ui.getScheme() if (env.ui.scheme != displayedScheme) { env.ui.scheme = displayedScheme ; toggles.sidebar.update.scheme() ; modals.stylize() } } })()