diff --git a/misskaty/plugins/dev.py b/misskaty/plugins/dev.py index 1954af01..f2e7719c 100644 --- a/misskaty/plugins/dev.py +++ b/misskaty/plugins/dev.py @@ -5,23 +5,22 @@ import io import json import os import pickle +import platform import re import sys import traceback from datetime import datetime from inspect import getfullargspec +from logging import getLogger from shutil import disk_usage from time import time from typing import Any, Optional, Tuple import aiohttp -import contextlib import cloudscraper import requests -import platform from apscheduler.schedulers.asyncio import AsyncIOScheduler from bs4 import BeautifulSoup -from logging import getLogger from PIL import Image, ImageDraw, ImageFont from psutil import Process, boot_time, cpu_count, cpu_percent from psutil import disk_usage as disk_usage_percent @@ -29,15 +28,22 @@ from psutil import net_io_counters, virtual_memory from pyrogram import Client from pyrogram import __version__ as pyrover from pyrogram import enums, filters -from pyrogram.errors import ChatSendPhotosForbidden, FloodWait, MessageTooLong, PeerIdInvalid, ChatSendPlainForbidden, ReactionInvalid +from pyrogram.errors import ( + ChatSendPhotosForbidden, + ChatSendPlainForbidden, + FloodWait, + MessageTooLong, + PeerIdInvalid, + ReactionInvalid, +) from pyrogram.raw.types import UpdateBotStopped from pyrogram.types import ( InlineKeyboardButton, InlineKeyboardMarkup, InputMediaPhoto, LabeledPrice, - PreCheckoutQuery, Message, + PreCheckoutQuery, ) from database.gban_db import add_gban_user, is_gbanned_user, remove_gban_user @@ -86,13 +92,13 @@ async def edit_or_reply(self, msg, **kwargs): async def star_donation(self: Client, ctx: Message): amount = ctx.command[1] if len(ctx.command) == 2 and ctx.command[1].isdigit() else 5 await self.send_invoice( - ctx.chat.id, + ctx.chat.id, title="MissKaty Donate", - description="You can give me donation via star", + description="You can give me donation via star", currency="XTR", prices=[LabeledPrice(label="Donation", amount=amount)], message_thread_id=ctx.message_thread_id, - payload="stars" + payload="stars", ) @@ -104,17 +110,23 @@ async def pre_checkout_query_handler(_: Client, query: PreCheckoutQuery): @app.on_message(filters.private, group=3) async def successful_payment_handler(_: Client, message: Message): if message.successful_payment: - await message.reply(f"Thanks for support for {message.successful_payment.total_amount} {message.successful_payment.currency}! Your transaction ID is : {message.successful_payment.telegram_payment_charge_id}") + await message.reply( + f"Thanks for support for {message.successful_payment.total_amount} {message.successful_payment.currency}! Your transaction ID is : {message.successful_payment.telegram_payment_charge_id}" + ) @app.on_message(filters.command(["refund_star"], COMMAND_HANDLER)) async def refund_star_payment(client: Client, message: Message): if len(message.command) == 1: - return await message.reply_msg("Please input telegram_payment_charge_id after command.") + return await message.reply_msg( + "Please input telegram_payment_charge_id after command." + ) trx_id = message.command[1] try: await client.refund_star_payment(message.from_user.id, trx_id) - await message.reply_msg(f"Great {message.from_user.mention}, your stars has been refunded to your balance.") + await message.reply_msg( + f"Great {message.from_user.mention}, your stars has been refunded to your balance." + ) except Exception as e: await message.reply_msg(e) @@ -131,8 +143,12 @@ async def log_file(_, ctx: Message, strings): data = { "value": content, } - pastelog = await fetch.post("https://paste.yasirapi.eu.org/save", data=data, follow_redirects=True) - await msg.edit_msg(f"Here the Logs\nlog size: {get_readable_file_size(os.path.getsize('MissKatyLogs.txt'))}") + pastelog = await fetch.post( + "https://paste.yasirapi.eu.org/save", data=data, follow_redirects=True + ) + await msg.edit_msg( + f"Here the Logs\nlog size: {get_readable_file_size(os.path.getsize('MissKatyLogs.txt'))}" + ) except Exception: await ctx.reply_document( "MissKatyLogs.txt", @@ -171,10 +187,15 @@ async def donate(self: Client, ctx: Message): "https://img.yasirweb.eu.org/file/ee74ce527fb8264b54691.jpg", caption="Hi, If you find this bot useful, you can make a donation to the account below. Because this bot server uses VPS and is not free. Thank You..\n\nIndonesian Payment:\nQRIS: https://img.yasirweb.eu.org/file/ee74ce527fb8264b54691.jpg (Yasir Store)\nBank Jago: 109641845083 (Yasir Aris M)\n\nFor international people can use PayPal to support me or via GitHub Sponsor:\nhttps://paypal.me/yasirarism\nhttps://github.com/sponsors/yasirarism\n\nSource: @BeriKopi", reply_to_message_id=ctx.id, - message_effect_id=5159385139981059251 if ctx.chat.type.value == "private" else None + message_effect_id=5159385139981059251 + if ctx.chat.type.value == "private" + else None, ) except (ChatSendPlainForbidden, ChatSendPhotosForbidden): - await self.send_message(LOG_CHANNEL, f"❗️ WARNING\nI'm leaving from {ctx.chat.id} since i didn't have sufficient admin permissions.") + await self.send_message( + LOG_CHANNEL, + f"❗️ WARNING\nI'm leaving from {ctx.chat.id} since i didn't have sufficient admin permissions.", + ) await ctx.chat.leave() @@ -222,7 +243,7 @@ async def server_stats(_, ctx: Message) -> "Message": if "oracle" in platform.uname().release: return await ctx.reply_msg(caption, quote=True) - + start = datetime.now() msg = await ctx.reply_photo( photo="https://te.legra.ph/file/30a82c22854971d0232c7.jpg", @@ -234,7 +255,7 @@ async def server_stats(_, ctx: Message) -> "Message": image = Image.open("assets/statsbg.jpg").convert("RGB") IronFont = ImageFont.truetype("assets/IronFont.otf", 42) draw = ImageDraw.Draw(image) - + def draw_progressbar(coordinate, progress): progress = 110 + (progress * 10.8) draw.ellipse((105, coordinate - 25, 127, coordinate), fill="#FFFFFF") @@ -242,7 +263,7 @@ async def server_stats(_, ctx: Message) -> "Message": draw.ellipse( (progress - 7, coordinate - 25, progress + 15, coordinate), fill="#FFFFFF" ) - + draw_progressbar(243, int(cpu_percentage)) draw.text( (225, 153), @@ -372,7 +393,9 @@ async def unban_globally(_, ctx: Message): filters.command(["shell", "sh", "term"], COMMAND_HANDLER) & filters.user(SUDO) ) @app.on_edited_message( - filters.command(["shell", "sh", "term"], COMMAND_HANDLER) & filters.user(SUDO) & ~filters.react + filters.command(["shell", "sh", "term"], COMMAND_HANDLER) + & filters.user(SUDO) + & ~filters.react ) @user.on_message(filters.command(["shell", "sh", "term"], ".") & filters.me) @use_chat_lang() @@ -435,8 +458,12 @@ async def shell_cmd(self: Client, ctx: Message, strings): & filters.user(SUDO) ) @app.on_edited_message( - (filters.command(["ev", "run", "meval"], COMMAND_HANDLER) | filters.regex(r"app.run\(\)$")) - & filters.user(SUDO) & ~filters.react + ( + filters.command(["ev", "run", "meval"], COMMAND_HANDLER) + | filters.regex(r"app.run\(\)$") + ) + & filters.user(SUDO) + & ~filters.react ) @user.on_message(filters.command(["ev", "run", "meval"], ".") & filters.me) @use_chat_lang() @@ -449,7 +476,9 @@ async def cmd_eval(self: Client, ctx: Message, strings) -> Optional[str]: else await ctx.reply_msg(strings("run_eval"), quote=True) ) code = ( - ctx.text.split(maxsplit=1)[1] if ctx.command else ctx.text.split("\napp.run()")[0] + ctx.text.split(maxsplit=1)[1] + if ctx.command + else ctx.text.split("\napp.run()")[0] ) out_buf = io.StringIO() out = "" @@ -586,6 +615,7 @@ async def update_restart(_, ctx: Message, strings): async def tespoll(self, msg): await ctx.reply(msg) + @app.on_raw_update(group=-99) async def updtebot(client, update, users, _): if isinstance(update, UpdateBotStopped): diff --git a/misskaty/plugins/misc_tools.py b/misskaty/plugins/misc_tools.py index 83b01949..951283c3 100644 --- a/misskaty/plugins/misc_tools.py +++ b/misskaty/plugins/misc_tools.py @@ -1,8 +1,8 @@ """ - * @author yasir - * @date 2022-12-01 09:12:27 - * @projectName MissKatyPyro - * Copyright @YasirPedia All rights reserved +* @author yasir +* @date 2022-12-01 09:12:27 +* @projectName MissKatyPyro +* Copyright @YasirPedia All rights reserved """ import asyncio @@ -39,7 +39,7 @@ from pyrogram.types import ( from misskaty import BOT_USERNAME, app from misskaty.core.decorator.errors import capture_err from misskaty.helper.http import fetch -from misskaty.helper.tools import rentry, gen_trans_image +from misskaty.helper.tools import gen_trans_image, rentry from misskaty.vars import COMMAND_HANDLER from utils import extract_user, get_file_id @@ -66,7 +66,6 @@ __HELP__ = """ def remove_html_tags(text): """Remove html tags from a string""" - import re clean = re.compile("<.*?>") return re.sub(clean, "", text) @@ -78,7 +77,7 @@ def calcExpression(text): except (SyntaxError, ZeroDivisionError): return "" except TypeError: - return float(eval(text.replace('(', '*('))) + return float(eval(text.replace("(", "*("))) except Exception as e: LOGGER.error(e, exc_info=True) return "" @@ -129,9 +128,10 @@ async def calculate_handler(self, ctx): text=f"Made by @{self.me.username}", reply_markup=calc_btn(ctx.from_user.id), disable_web_page_preview=True, - quote=True + quote=True, ) + @app.on_callback_query(filters.regex("^calc")) async def calc_cb(self, query): _, uid, data = query.data.split("|") @@ -139,7 +139,7 @@ async def calc_cb(self, query): return await query.answer("Who are you??", show_alert=True, cache_time=5) try: text = query.message.text.split("\n")[0].strip().split("=")[0].strip() - text = '' if f"Made by @{self.me.username}" in text else text + text = "" if f"Made by @{self.me.username}" in text else text inpt = text + query.data result = "" if data == "=": @@ -167,7 +167,7 @@ async def calc_cb(self, query): await query.message.edit_msg( text=text, disable_web_page_preview=True, - reply_markup=calc_btn(query.from_user.id) + reply_markup=calc_btn(query.from_user.id), ) except Exception as error: LOGGER.error(error)