Files
limoka/MuRuLOSE/HikkaModulesRepo/HTTPCat.py
2025-07-10 21:02:34 +03:00

175 lines
4.9 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from hikkatl.types import Message
from .. import loader, utils
import random
from ..inline.types import InlineCall
"""
███ ███ ██ ██ ██████ ██ ██ ██ ██████ ███████ ███████
████ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ████ ██ ██ ██ ██████ ██ ██ ██ ██ ██ ███████ █████
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██████ ██ ██ ██████ ███████ ██████ ███████ ███████
HTTPCat
📜 Licensed under the GNU AGPLv3
"""
# meta banner: https://0x0.st/HYVb.jpg
# meta desc: desc
# meta developer: @BruhHikkaModules
@loader.tds
class HTTPCat(loader.Module):
"""Funny images with HTTP statuses"""
strings = {"name": "HTTPCat", "cat": "Here's your {} cat.", "update": "Update"}
strings_ru = {"cat": "Вот тебе твой {} кот.", "update": "Обновить"}
def __init__(self):
self.api = "https://http.cat/"
self.httpstatuses = {
"1xx": [100, 101, 102, 103],
"2xx": [
200,
201,
202,
203,
204,
205,
206,
207,
208,
226,
],
"3xx": [
300,
301,
302,
303,
304,
305,
307,
308,
],
"4xx": [
400,
401,
402,
403,
404,
405,
406,
407,
408,
409,
410,
411,
412,
413,
414,
415,
416,
417,
418,
420,
421,
422,
423,
424,
425,
426,
428,
429,
431,
444,
450,
451,
497,
498,
499,
],
"5xx": [
500,
501,
502,
503,
504,
506,
507,
508,
509,
510,
511,
521,
522,
523,
525,
530,
599,
],
}
@loader.command(
ru_doc=" [HTTP Статус / Ничего] - Получить картинку с котом и HTTP кодом",
)
async def gethttpcat(self, message: Message):
"""[HTTP Status / HTTP Status group (ex. 4xx, 3xx) / Nothing] - Get picture with cat and HTTP code"""
reply_markup = [
[
{"text": f"🔄 {self.strings['update']}", "callback": self.update},
{"text": "❌ Close", "action": "close"},
]
]
args = utils.get_args_raw(message)
if not args:
code = str(
random.choice(
[
value
for sublist in self.httpstatuses.values()
for value in sublist
]
)
)
await self.inline.form(
text=self.strings["cat"].format(code),
photo=self.api + code + ".jpg",
message=message,
reply_markup=reply_markup,
)
else:
await self.inline.form(
text=self.strings["cat"].format(str(args)),
photo=self.api + str(args) + ".jpg",
message=message,
reply_markup=reply_markup,
)
# why jpg at end? to make sure that telegram sends it correctly.
async def update(self, call: InlineCall):
reply_markup = [
[
{"text": f"🔁 {self.strings['update']}", "callback": self.update},
{"text": "❌ Close", "action": "close"},
]
]
code = str(
random.choice(
[value for sublist in self.httpstatuses.values() for value in sublist]
)
)
await call.edit(
photo=self.api + code + ".jpg",
text=self.strings["cat"].format(code),
reply_markup=reply_markup,
)