diff --git a/misskaty/helper/media_helper.py b/misskaty/helper/media_helper.py index ca1cd4f6..4fa70f6f 100644 --- a/misskaty/helper/media_helper.py +++ b/misskaty/helper/media_helper.py @@ -3,21 +3,24 @@ import os import shlex from typing import Tuple -from html_telegraph_poster import TelegraphPoster +from telegraph.aio import Telegraph +from utils import LOGGER -def post_to_telegraph(a_title: str, content: str) -> str: +async def post_to_telegraph(is_media: bool, title: str, content: str, media=None): + telegraph = Telegraph() + LOGGER.info(await telegraph.create_account(short_name='MissKaty')) + if is_media: + """Create a Telegram Post Foto/Video""" + response = await telegraph.upload_file(media) + return f"https://telegra.ph{response[0]['src']}" """Create a Telegram Post using HTML Content""" - post_client = TelegraphPoster(use_api=True) - auth_name = "MissKaty Bot" - post_client.create_api_token(auth_name) - post_page = post_client.post( - title=a_title, - author=auth_name, - author_url="https://www.yasir.my.id", - text=content, + response = await telegraph.create_page( + title, + html_content=content, + author_url="https://t.me/MissKatyPyro" ) - return post_page["url"] + return response['url'] async def run_subprocess(cmd): diff --git a/misskaty/plugins/inkick_user.py b/misskaty/plugins/inkick_user.py index 00ce1c03..237ac2d7 100644 --- a/misskaty/plugins/inkick_user.py +++ b/misskaty/plugins/inkick_user.py @@ -113,17 +113,13 @@ async def dkick(client, message): await sleep(1) await message.chat.unban_member(member.user.id) except (ChatAdminRequired, UserAdminInvalid): - await sent_message.edit("❗**Oh tidaakk, saya bukan admin disini**\n__Saya pergi dari sini, tambahkan aku kembali dengan perijinan banned pengguna.__") - await app.leave_chat(message.chat.id) + await sent_message.edit("❗**Oh Nooo, i'm doesn't have admin permission in this group. Make sure i'm have admin permission to ban users.") break except FloodWait as e: await sleep(e.value) if count == 0: return await editPesan(sent_message, "There are no deleted accounts in this chat.") - try: - await sent_message.edit(f"✔️ **Berhasil menendang {count} akun terhapus.**") - except ChatWriteForbidden: - await app.leave_chat(message.chat.id) + await editPesan(sent_message, f"✔️ **Berhasil menendang {count} akun terhapus.**") else: sent_message = await message.reply_text("❗ **Kamu harus jadi admin atau owner grup untuk melakukan tindakan ini.**") await sleep(5) diff --git a/misskaty/plugins/inline_search.py b/misskaty/plugins/inline_search.py index e8b9cc49..aa798d61 100644 --- a/misskaty/plugins/inline_search.py +++ b/misskaty/plugins/inline_search.py @@ -125,7 +125,7 @@ async def inline_menu(_, inline_query: InlineQuery): body_text = f"""
{msg}
""" - msg = post_to_telegraph(method, body_text) + msg = await post_to_telegraph(False, method, body_text) datajson.append( InlineQueryResultArticle( title=method, @@ -162,7 +162,7 @@ async def inline_menu(_, inline_query: InlineQuery): body_text = f"""
{msg}
""" - msg = post_to_telegraph(method, body_text) + msg = await post_to_telegraph(False, method, body_text) datajson.append( InlineQueryResultArticle( title=types, diff --git a/misskaty/plugins/mediainfo.py b/misskaty/plugins/mediainfo.py index 532fd082..74a99a25 100644 --- a/misskaty/plugins/mediainfo.py +++ b/misskaty/plugins/mediainfo.py @@ -47,7 +47,7 @@ async def mediainfo(client, message): """ title = "MissKaty Bot Mediainfo" text_ = file_info.message_type - link = post_to_telegraph(title, body_text) + link = await post_to_telegraph(False, title, body_text) markup = InlineKeyboardMarkup([[InlineKeyboardButton(text=text_, url=link)]]) await kirimPesan(message, "ℹ️ MEDIA INFO", reply_markup=markup, quote=True) await process.delete() @@ -67,7 +67,7 @@ async def mediainfo(client, message): body_text = f"""
{output}
""" - link = post_to_telegraph(title, body_text) + link = await post_to_telegraph(False, title, body_text) # siteurl = "https://spaceb.in/api/v1/documents/" # response = await http.post(siteurl, data={"content": output, "extension": 'txt'} ) # response = response.json() diff --git a/misskaty/plugins/paste.py b/misskaty/plugins/paste.py index 491f58c3..7e04cad7 100644 --- a/misskaty/plugins/paste.py +++ b/misskaty/plugins/paste.py @@ -13,8 +13,7 @@ from pyrogram import filters from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup from misskaty import app -from misskaty.helper.http import http -from misskaty.helper.tools import rentry +from misskaty.helper import http, rentry, post_to_telegraph from misskaty.vars import COMMAND_HANDLER __MODULE__ = "Paste" @@ -22,6 +21,7 @@ __HELP__ = """ /paste [Text/Reply To Message] - Post text to My Pastebin. /sbin [Text/Reply To Message] - Post text to Spacebin. /neko [Text/Reply To Message] - Post text to Nekobin. +/tgraph [Text/Reply To Message] - Post text to Telegra.ph. /rentry [Text/Reply To Message] - Post text to Rentry using markdown style. /temp_paste [Text/Reply To Message] - Post text to tempaste.com using html style. """ @@ -63,6 +63,60 @@ def humanbytes(size: int): # Pattern if extension supported, PR if want to add more pattern = compiles(r"^text/|json$|yaml$|xml$|toml$|x-sh$|x-shellscript$|x-subrip$") +@app.on_message(filters.command(["tgraph"], COMMAND_HANDLER)) +async def telegraph_paste(_, message): + reply = message.reply_to_message + if not reply and len(message.command) < 2: + return await message.reply_text(f"**Reply To A Message With /{message.command[0]} or with command**") + + msg = await message.reply_text("`Pasting to Telegraph...`") + data = "" + limit = 1024 * 1024 + if reply and reply.document: + if reply.document.file_size > limit: + return await msg.edit(f"**You can only paste files smaller than {humanbytes(limit)}.**") + if not pattern.search(reply.document.mime_type): + return await msg.edit("**Only text files can be pasted.**") + file = await reply.download() + try: + with open(file, "r") as text: + data = text.read() + remove(file) + except UnicodeDecodeError: + try: + remove(file) + except: + pass + return await msg.edit("`File Not Supported !`") + elif reply and (reply.text or reply.caption): + data = reply.text.html or reply.caption.html + elif not reply and len(message.command) >= 2: + data = message.text.split(None, 1)[1] + + if message.from_user: + if message.from_user.username: + uname = f"@{message.from_user.username} [{message.from_user.id}]" + else: + uname = f"[{message.from_user.first_name}](tg://user?id={message.from_user.id}) [{message.from_user.id}]" + else: + uname = message.sender_chat.title + + try: + url = await post_to_telegraph(False, f"MissKaty Paste", data) + except Exception as e: + await msg.edit(f"ERROR: {e}") + return + + if not url: + return await msg.edit("Text Too Short Or File Problems") + button = [ + [InlineKeyboardButton("Open Link", url=url)], + [InlineKeyboardButton("Share Link", url=f"https://telegram.me/share/url?url={url}")], + ] + + pasted = f"**Successfully pasted your data to Telegraph.\n\nPaste by {uname}**" + await msg.edit(pasted, reply_markup=InlineKeyboardMarkup(button)) + # Default Paste to Wastebin using Deta @app.on_message(filters.command(["paste"], COMMAND_HANDLER)) async def wastepaste(_, message):