# █▀ █░█ ▄▀█ █▀▄ █▀█ █░█░█
# ▄█ █▀█ █▀█ █▄▀ █▄█ ▀▄▀▄▀
# Copyright 2023 t.me/shadow_modules
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# meta developer: @shadow_modules, @toxicuse, @vsecoder
# meta banner: https://i.imgur.com/8UYznku.jpeg
import requests # type: ignore
from .. import loader, utils # type: ignore
from telethon.tl.types import Message # type: ignore
from ..inline.types import InlineCall # type: ignore
async def request(url: str) -> dict:
"""Manga handler"""
return (await utils.run_sync(requests.get, url)).json()["data"]
@loader.tds
class HentaiMangaMod(loader.Module):
strings = {
"name": "HentaiManga",
"message": "Title: {title}\nPages: {total}\nTags: {tags}\n\n"
"Command to get this manga: .ghm {api} {id}",
"time": "Wait...",
"warn-form": (
"⚠️ Attention!\n😰 This module is 18+\n"
"✉️ In many chats it is prohibited\n✅ If you agree with what you can get"
"ban - click on the button below"
),
"yes": "✅ Yes",
"no": "❌ No",
"args_error": "Not enough arguments",
"not_found": "Not found",
}
strings_ru = {
"message": "Название: {title}\nСтраниц: {total}\nТеги: {tags}\n\n"
"Команда для получения этой манги: .ghm {api} {id}",
"time": "Ожидайте...",
"warn-form": (
"⚠️ Внимание!\n😰 Данный модуль 18+\n"
"✉️ Во многих чатах он запрещен\n✅ Если вы согласны с тем что можете получить"
" бан - нажмите на кнопку ниже"
),
"yes": "✅ Да",
"no": "❌ Нет",
"args_error": "Недостаточно аргументов",
"not_found": "Не найдено",
}
def __init__(self):
self.name = self.strings["name"]
self.config = loader.ModuleConfig(
loader.ConfigValue(
"janda",
"144.22.39.141:3333",
"https://github.com/sinkaroid/jandapress",
validator=loader.validators.Hidden(),
),
)
async def client_ready(self, client, db):
self.client = client
self.db = db
self.apis = {
"3hentai": {
"random": "http://{janda}/3hentai/random",
"get": "http://{janda}/3hentai/get?book={id}",
},
"asmhentai": {
"random": "http://{janda}/asmhentai/random",
"get": "http://{janda}/asmhentai/get?book={id}",
},
"hentaifox": {
"random": "http://{janda}/hentaifox/random",
"get": "http://{janda}/hentaifox/get?book={id}",
},
# now not working
# "hentai2read": {
# "random": "https://{janda}/hentai2read/random",
# "get": "https://{janda}/hentai2read/get?book={id}",
# },
# "nhentai": {
# "random": "https://{janda}/nhentai/random",
# "get": "https://{janda}/nhentai/get?book={id}",
# },
# "pururin": {
# "random": "https://{janda}/pururin/random",
# "get": "https://{janda}/pururin/get?book={id}",
# },
}
async def gallery(self, message: Message, mang: dict, api: str = "3hentai"):
await self.inline.gallery(
caption=self.strings["message"].format(
title=mang["title"].replace("[", "").replace("]", ""),
total=mang["total"],
tags=", ".join(mang["tags"]),
api=api,
id=mang["id"],
),
message=message,
next_handler=mang["image"],
)
async def warn(self, message: Message):
await self.inline.form(
message=message,
text=self.strings["warn-form"],
reply_markup=[
[
{
"text": self.strings["yes"],
"callback": self.inline_call_answer,
},
],
[
{
"text": self.strings["no"],
"callback": self.delete_module,
"args": (message,),
},
],
],
)
@loader.command(alias="rhm")
async def rnd_hentai_mangacmd(self, message: Message):
"""
{hentai_api_name: optional} - рандомная хентай-манга
"""
args = utils.get_args_raw(message).split(" ")
if not self.db.get(__name__, "warn", False):
await self.warn(message)
return
await utils.answer(message, self.strings["time"])
api = args[0] if args and args[0] in self.apis else "3hentai"
mang = await request(self.apis[api]["random"].format(janda=self.config["janda"]))
await self.gallery(message, mang, api)
@loader.command(alias="ghm")
async def get_hentai_mangacmd(self, message: Message):
"""
{hentai_api_name} {id} - получить хентай-мангу
"""
args = utils.get_args_raw(message).split(" ")
if len(args) < 2:
return await utils.answer(message, self.strings["args_error"])
if not self.db.get(__name__, "warn", False):
await self.warn(message)
return
await utils.answer(message, self.strings["time"])
if args[0] not in self.apis:
return await utils.answer(message, self.strings["args_error"])
mang = await request(self.apis[args[0]]["get"].format(id=args[1], janda=self.config['janda']))
if not mang:
return await utils.answer(message, self.strings["not_found"])
await self.gallery(message, mang, args[0])
async def inline_call_answer(self, call: InlineCall):
self.db.set(__name__, "warn", True)
await call.delete()
@loader.owner
async def delete_module(self, call: InlineCall, message):
await call.delete()
await self.invoke("unloadmod", "HentaiManga", message.peer_id)