mirror of
https://github.com/MuRuLOSE/limoka.git
synced 2026-06-17 23:04:17 +02:00
Added and updated repositories 2026-04-12 14:57:04
This commit is contained in:
94
archquise/q.mods/CodeShare.py
Normal file
94
archquise/q.mods/CodeShare.py
Normal file
@@ -0,0 +1,94 @@
|
||||
# █▀▀▄ █▀▄▀█ █▀█ █▀▄ █▀
|
||||
# ▀▀▀█ ▄ █ ▀ █ █▄█ █▄▀ ▄█
|
||||
|
||||
# #### Copyright (c) 2026 Archquise #####
|
||||
|
||||
# 💬 Contact: https://t.me/archquise
|
||||
# 🔒 Licensed under the GNU AGPLv3.
|
||||
# 📄 LICENSE: https://raw.githubusercontent.com/archquise/Q.Mods/main/LICENSE
|
||||
# ---------------------------------------------------------------------------------
|
||||
# Name: CodeShare
|
||||
# Description: Uploads your code at the kmi.aeza.net (Pastebin and GitHub Gist alternative)
|
||||
# Author: @quise_m
|
||||
# ---------------------------------------------------------------------------------
|
||||
# meta developer: @quise_m
|
||||
# meta banner: https://raw.githubusercontent.com/archquise/qmods_meta/main/CodeShare.png
|
||||
# requires: aiofiles
|
||||
# ---------------------------------------------------------------------------------
|
||||
|
||||
import logging
|
||||
from http import HTTPStatus
|
||||
from pathlib import Path
|
||||
|
||||
import aiofiles
|
||||
import aiohttp
|
||||
from telethon.types import MessageMediaDocument
|
||||
|
||||
from .. import loader, utils
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@loader.tds
|
||||
class CodeShareMod(loader.Module):
|
||||
"""Uploads your code at the kmi.aeza.net (Pastebin and GitHub Gist alternative)."""
|
||||
|
||||
strings = { # noqa: RUF012
|
||||
"name": "CodeShare",
|
||||
"invalid_args": "<emoji document_id=5854929766146118183>❌</emoji> There is no arguments or reply with a file, or they are invalid",
|
||||
"_cls_doc": "Uploads your code at the kmi.aeza.net (Pastebin and GitHub Gist alternative)",
|
||||
"link_ready": "<emoji document_id=5854762571659218443>✅</emoji> <b>Code uploaded! Link:</b> <code>{}</code>",
|
||||
}
|
||||
|
||||
strings_ru = { # noqa: RUF012
|
||||
"_cls_doc": "Загружает ваш код на kmi.aeza.net (альтернатива Pastebin и GitHub Gist)",
|
||||
"invalid_args": "<emoji document_id=5854929766146118183>❌</emoji> Нет аргументов или реплая с файлом, или они неверны",
|
||||
"link_ready": "<emoji document_id=5854762571659218443>✅</emoji> <b>Код загружен! Ссылка:</b> <code>{}</code>",
|
||||
}
|
||||
|
||||
async def upload_to_kmi(self, content: str) -> str:
|
||||
"""Upload text to kmi.aeza.net."""
|
||||
url = "https://kmi.aeza.net"
|
||||
data = aiohttp.FormData()
|
||||
data.add_field("kmi", content)
|
||||
|
||||
async with (
|
||||
aiohttp.ClientSession(timeout=aiohttp.ClientTimeout(20)) as session,
|
||||
session.post(url, data=data) as response,
|
||||
):
|
||||
if response.status == HTTPStatus.OK:
|
||||
return await response.text()
|
||||
logger.error("Error occurred! Status code: %s", response.status)
|
||||
return None
|
||||
|
||||
@loader.command(
|
||||
ru_doc="Загрузка кода на сайт",
|
||||
en_doc="Upload code to the site",
|
||||
)
|
||||
async def codesharecmd(self, message) -> None: # noqa: ANN001, D102
|
||||
args = utils.get_args(message)
|
||||
reply = await message.get_reply_message()
|
||||
if args:
|
||||
async with (
|
||||
aiohttp.ClientSession(timeout=aiohttp.ClientTimeout(20)) as session,
|
||||
session.get(args[0]) as response,
|
||||
):
|
||||
if response.status == HTTPStatus.OK:
|
||||
content = await response.text()
|
||||
link = await self.upload_to_kmi(content)
|
||||
await utils.answer(message, self.strings["link_ready"].format(link))
|
||||
return
|
||||
logger.error("Error occurred! Status code: %s", response.status)
|
||||
return
|
||||
if reply and isinstance(reply.media, MessageMediaDocument):
|
||||
file_name = await reply.download_media()
|
||||
async with aiofiles.open(file_name) as f:
|
||||
content = await f.read()
|
||||
try:
|
||||
Path(file_name).unlink()
|
||||
except Exception as e: # noqa: BLE001
|
||||
logger.warning(e)
|
||||
link = await self.upload_to_kmi(content)
|
||||
await utils.answer(message, self.strings["link_ready"].format(link))
|
||||
return
|
||||
await utils.answer(message, self.strings["invalid_args"])
|
||||
Reference in New Issue
Block a user