g4f.py 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. # ______ ______ ______ ______ ______ __ ______ ______
  2. # /\ ___\ /\ == \ /\ ___\ /\ __ \ /\__ _\ /\ \ /\___ \ /\ ___\
  3. # \ \ \____ \ \ __< \ \ __\ \ \ __ \ \/_/\ \/ \ \ \ \/_/ /__ \ \ __\
  4. # \ \_____\ \ \_\ \_\ \ \_____\ \ \_\ \_\ \ \_\ \ \_\ /\_____\ \ \_____\
  5. # \/_____/ \/_/ /_/ \/_____/ \/_/\/_/ \/_/ \/_/ \/_____/ \/_____/
  6. # Code is licensed under CC-BY-NC-ND 4.0 unless otherwise specified.
  7. # https://creativecommons.org/licenses/by-nc-nd/4.0/
  8. # You CANNOT edit this file without direct permission from the author.
  9. # You can redistribute this file without any changes.
  10. # meta developer: @creaz_mods
  11. # scope: hikka_min 1.6.2
  12. # requires: gpt4free
  13. from asyncio import sleep
  14. from gpt4free import you
  15. from hikkatl.types import Message
  16. from mistune import html
  17. from .. import loader, utils # type: ignore
  18. @loader.tds
  19. class GPT4Free(loader.Module):
  20. """Module for interacting with GPT without API-key. Unstable"""
  21. strings = {
  22. "name": "GPT4Free",
  23. "wait": (
  24. "<emoji document_id=5443038326535759644>💬</emoji><b> GPT is generating"
  25. " response, please wait</b>"
  26. ),
  27. "quest": (
  28. "{answer}\n\n\n<emoji document_id=5452069934089641166>❓</emoji><b> Your"
  29. " question to ChatGPT was:</b> <code>{args}</code>"
  30. ),
  31. "args_err": (
  32. "<emoji document_id=5210952531676504517>❌</emoji><b> You didn't ask a"
  33. " question GPT</b>"
  34. ),
  35. "api_err": (
  36. "<emoji document_id=5210952531676504517>❌</emoji><b> Error on you.com"
  37. " servers. Try repeating your question</b>"
  38. ),
  39. "floodwait": (
  40. "<emoji document_id=6332573220868196043>🕓</emoji><b> You have reached the"
  41. " request per minute limit. Retry your request in 10-40 seconds</b>"
  42. ),
  43. "cleared": (
  44. "<emoji document_id=5206607081334906820>✔️</emoji><b> Dialog cleared"
  45. " successfully</b>"
  46. ),
  47. }
  48. strings_ru = {
  49. "wait": (
  50. "<emoji document_id=5443038326535759644>💬</emoji><b> GPT генерирует ответ,"
  51. " подождите</b>"
  52. ),
  53. "quest": (
  54. "{answer}\n\n\n<emoji document_id=5452069934089641166>❓</emoji><b> Ваш"
  55. " вопрос к ChatGPT был:</b> <code>{args}</code>"
  56. ),
  57. "args_err": (
  58. "<emoji document_id=5210952531676504517>❌</emoji><b> Вы не задали вопрос"
  59. " GPT</b>"
  60. ),
  61. "api_err": (
  62. "<emoji document_id=5210952531676504517>❌</emoji><b> Ошибка на серверах"
  63. " you.com. Попробуйте повторить свой вопрос</b>"
  64. ),
  65. "floodwait": (
  66. "<emoji document_id=6332573220868196043>🕓</emoji> Вы достигли лимита"
  67. " запросов в минуту. Повторите свой запрос через 10-40 секунд"
  68. ),
  69. "cleared": (
  70. "<emoji document_id=5206607081334906820>✔️</emoji><b> Диалог успешно"
  71. " очищен</b>"
  72. ),
  73. }
  74. strings_de = {
  75. "wait": (
  76. "<emoji document_id=5443038326535759644>💬</emoji><b> GPT generiert eine"
  77. " Antwort. Bitte warten...</b>"
  78. ),
  79. "quest": (
  80. "{answer}\n\n\n<emoji document_id=5452069934089641166>❓</emoji><b> Ihre"
  81. " Frage an ChatGPT lautet:</b> <code>{args}</code>"
  82. ),
  83. "args_err": (
  84. "<emoji document_id=5210952531676504517>❌</emoji><b> Sie haben keine Frage"
  85. " an GPT gestellt.</b>"
  86. ),
  87. "api_err": (
  88. "<emoji document_id=5210952531676504517>❌</emoji><b> Es gab einen Fehler"
  89. " auf den you.com- Servern. Bitte stellen Sie Ihre Frage erneut.</b>"
  90. ),
  91. "floodwait": (
  92. "<emoji document_id=6332573220868196043>🕓</emoji> Sie haben das Limit von"
  93. " Anfragen pro Minute erreicht. Bitte wiederholen Sie Ihre Anfrage in 10-40"
  94. " Sekunden."
  95. ),
  96. "cleared": (
  97. "<emoji document_id=5206607081334906820>✔️</emoji><b> Der Dialog wurde"
  98. " erfolgreich gelöscht.</b>"
  99. ),
  100. }
  101. strings_ru = {
  102. "wait": (
  103. "<emoji document_id = 5443038326535759644> 💬 </emoji><B > GPT genera una"
  104. " respuesta, espera</B>"
  105. ),
  106. "quest": (
  107. "{answer}\n\n\n<emoji document_id = 5452069934089641166> ❓ </emoji><B > su"
  108. " la pregunta para ChatGPT fue:< / B><code > {args}</code>"
  109. ),
  110. "args_err": (
  111. "<emoji document_id = 5210952531676504517 > ❌ < / emoji > <B > no has"
  112. " hecho la pregunta GPT</b>"
  113. ),
  114. "api_err": (
  115. "<emoji document_id = 5210952531676504517> ❌ </emoji><B > Error en los"
  116. " servidores you.com. Intenta repetir tu pregunta< / b>"
  117. ),
  118. "floodwait": (
  119. "<emoji document_id = 6332573220868196043 > 🕓 < / emoji> has alcanzado el"
  120. " límite consultas por minuto. Repita su solicitud en 10-40 segundos"
  121. ),
  122. "cleared": (
  123. "<emoji document_id=5206607081334906820> ✔️ </emoji> < B> diálogo con éxito"
  124. "despejado</b>"
  125. ),
  126. }
  127. @loader.command(
  128. ru_doc="- ваш вопрос к ChatGPT",
  129. es_doc="- tu pregunta a ChatGPT",
  130. de_doc="- deine Frage an ChatGPT",
  131. )
  132. async def gpt(self, m: Message):
  133. """- question to ChatGPT"""
  134. args = utils.get_args_raw(m)
  135. try:
  136. if not args:
  137. args = (await m.get_reply_message()).message # type: ignore
  138. except:
  139. return await utils.answer(m, self.strings["args_err"])
  140. if not self._db.get(self.name, "chat"):
  141. chat = []
  142. else:
  143. chat = self._db.get(self.name, "chat")
  144. m = await utils.answer(m, self.strings["wait"])
  145. response = you.Completion.create(
  146. prompt=args, chat=self._db.get(self.name, "chat"), include_links=False
  147. )
  148. while response.text == "Unable to fetch the response, Please try again.":
  149. await sleep(1)
  150. response = you.Completion.create(
  151. prompt=args, chat=self._db.get(self.name, "chat")
  152. )
  153. chat.append({"question": args, "answer": response.text})
  154. self._db.set(self.name, "chat", chat)
  155. answer = bytes(response.text, "utf-8").decode("unicode_escape") # type: ignore
  156. await utils.answer(
  157. m,
  158. self.strings["quest"].format(answer=html(answer), args=args),
  159. )
  160. @loader.command(
  161. ru_doc="- очистить диалог", es_doc="- diálogo claro", de_doc="- klaren Dialog"
  162. )
  163. async def resg(self, m: Message):
  164. """- clear dialog"""
  165. self._db.set(self.name, "chat", None)
  166. await utils.answer(m, self.strings["cleared"])