diff --git a/misskaty/__init__.py b/misskaty/__init__.py index 1cb53e67..3d9b9827 100644 --- a/misskaty/__init__.py +++ b/misskaty/__init__.py @@ -28,6 +28,7 @@ MOD_NOLOAD = ["subscene_dl"] HELPABLE = {} cleanmode = {} botStartTime = time.time() +misskaty_version = "v2.04.27 - Stable" pymonclient = MongoClient(DATABASE_URI) mongo = AsyncIOMotorClient(DATABASE_URI) diff --git a/misskaty/core/misskaty_patch/bound/message.py b/misskaty/core/misskaty_patch/bound/message.py index a2db77ab..1c25b2df 100644 --- a/misskaty/core/misskaty_patch/bound/message.py +++ b/misskaty/core/misskaty_patch/bound/message.py @@ -169,7 +169,7 @@ async def edit_or_send_as_file(self, text: str, del_in: int = 0, as_raw: bool = return await reply_as_file(self, text=text, *args, **kwargs) -async def reply_or_send_as_file(self, text: str, as_raw: bool = False, del_in: int = -1, *args, **kwargs) -> Union["Message", bool]: +async def reply_or_send_as_file(self, text: str, as_raw: bool = False, del_in: int = 0, *args, **kwargs) -> Union["Message", bool]: """\nThis will first try to message.reply. If it raise MessageTooLong error, run message.send_as_file. diff --git a/misskaty/plugins/dev.py b/misskaty/plugins/dev.py index ed61d56e..d39c8e43 100644 --- a/misskaty/plugins/dev.py +++ b/misskaty/plugins/dev.py @@ -19,11 +19,11 @@ from psutil import cpu_percent from psutil import disk_usage as disk_usage_percent from psutil import virtual_memory -from pyrogram import enums, filters, Client +from pyrogram import enums, filters, Client, __version__ as pyrover from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup, Message from pyrogram.raw.types import UpdateBotStopped -from misskaty import app, user, botStartTime, BOT_NAME +from misskaty import app, user, botStartTime, misskaty_version, BOT_NAME from misskaty.helper.http import http from misskaty.helper.eval_helper import meval, format_exception from misskaty.helper.localization import use_chat_lang @@ -100,10 +100,6 @@ async def server_stats(self: Client, ctx: Message) -> "Message": """ Give system stats of the server. """ - if os.path.exists(".git"): - botVersion = (await shell_exec("git log -1 --date=format:v%y.%m%d.%H%M --pretty=format:%cd"))[0] - else: - botVersion = "v2.49" try: serverinfo = await http.get("https://ipinfo.io/json") org = serverinfo.json()["org"] @@ -116,16 +112,18 @@ async def server_stats(self: Client, ctx: Message) -> "Message": free = get_readable_file_size(free) neofetch = (await shell_exec("neofetch --stdout"))[0] caption = f""" -**{BOT_NAME} {botVersion} is Up and Running successfully.** -Bot Uptime: `{currentTime}` +{BOT_NAME} {misskaty_version} is Up and Running successfully. +Bot Uptime: {currentTime} +Pyrogram Version: {pyrover} +Python Version: {sys.version_info[0]}.{sys.version_info[1]}.{sys.version_info[2]} {sys.version_info[3].title()} Server: {org} -Total Disk Space: `{total}` -Used: `{used}({disk_usage_percent("/").percent}%)` -Free: `{free}` -CPU Usage: `{cpu_percent()}%` -RAM Usage: `{virtual_memory().percent}%` +Total Disk Space: {total} +Used: {used}({disk_usage_percent("/").percent}%) +Free: {free} +CPU Usage: {cpu_percent()}% +RAM Usage: {virtual_memory().percent}% -`{neofetch}` +{neofetch} """ await ctx.reply_msg(caption) @@ -304,7 +302,7 @@ async def update_restart(self: Client, ctx: Message, strings) -> "Message": async def updtebot(client, update, users, chats): if isinstance(update, UpdateBotStopped): user = users[update.user_id] - await client.send_msg(LOG_CHANNEL, f"{user.first_name} ({user.id}) " f"{'BLOCKED' if update.stopped else 'UNBLOCKED'} the bot at " f"{datetime.fromtimestamp(update.date)}") + await client.send_msg(LOG_CHANNEL, f"{user.first_name} ({user.id}) " f"{'BLOCKED' if update.stopped else 'UNBLOCKED'} the bot at " f"{datetime.fromtimestamp(update.date)}") async def aexec(code, c, m): exec("async def __aexec(c, m): " + "\n p = print" + "\n replied = m.reply_to_message" + "".join(f"\n {l_}" for l_ in code.split("\n"))) diff --git a/misskaty/plugins/imdb_search.py b/misskaty/plugins/imdb_search.py index 9633c2b5..5c895e8a 100644 --- a/misskaty/plugins/imdb_search.py +++ b/misskaty/plugins/imdb_search.py @@ -443,8 +443,8 @@ async def imdb_en_callback(self: Client, query: CallbackQuery): i, userid, movie = query.data.split("#") if query.from_user.id != int(userid): return await query.answer("⚠️ Access Denied!", True) - await query.message.edit_caption("⏳ Getting IMDb source..") try: + await query.message.edit_caption("⏳ Getting IMDb source..") url = f"https://www.imdb.com/title/tt{movie}/" resp = await http.get(url, headers=headers) sop = BeautifulSoup(resp, "lxml") diff --git a/misskaty/plugins/inline_search.py b/misskaty/plugins/inline_search.py index 6eb4feea..54d5b920 100644 --- a/misskaty/plugins/inline_search.py +++ b/misskaty/plugins/inline_search.py @@ -11,6 +11,7 @@ from motor import version as mongover from pykeyboard import InlineKeyboard, InlineButton from pyrogram import __version__ as pyrover from pyrogram import enums, filters +from pyrogram.errors import MessageIdInvalid, MessageNotModified from pyrogram.types import ( InlineKeyboardButton, InlineKeyboardMarkup, @@ -541,8 +542,8 @@ async def destroy_msg(_, c_q): async def imdb_inl(_, query): i, user, movie = query.data.split("#") if user == f"{query.from_user.id}": - await query.edit_message_caption("⏳ Permintaan kamu sedang diproses.. ") try: + await query.edit_message_caption("⏳ Permintaan kamu sedang diproses.. ") url = f"https://www.imdb.com/title/{movie}/" resp = await get_content(url) sop = BeautifulSoup(resp, "lxml") @@ -649,6 +650,8 @@ async def imdb_inl(_, query): ] ) await query.edit_message_caption(res_str, parse_mode=enums.ParseMode.HTML, reply_markup=markup) + except (MessageNotModified, MessageIdInvalid): + pass except Exception: exc = traceback.format_exc() await query.edit_message_caption(f"ERROR:\n{exc}") diff --git a/misskaty/plugins/ping.py b/misskaty/plugins/ping.py index 943f2b81..2417a472 100644 --- a/misskaty/plugins/ping.py +++ b/misskaty/plugins/ping.py @@ -7,39 +7,30 @@ """ import time import os +import platform from asyncio import Lock from re import MULTILINE, findall from subprocess import run as srun -from pyrogram import filters, Client +from pyrogram import filters, Client, __version__ as pyrover from pyrogram.types import Message -from misskaty import app, botStartTime +from misskaty import app, botStartTime, misskaty_version from misskaty.core.decorator.ratelimiter import ratelimiter from misskaty.helper.human_read import get_readable_time from misskaty.helper.http import http -from .dev import shell_exec from misskaty.vars import COMMAND_HANDLER @app.on_message(filters.command(["ping"], COMMAND_HANDLER)) @ratelimiter async def ping(self: Client, ctx: Message): - if os.path.exists(".git"): - botVersion = (await shell_exec("git log -1 --date=format:v%y.%m%d.%H%M --pretty=format:%cd"))[0] - else: - botVersion = "v2.49" - try: - serverinfo = await http.get("https://ipinfo.io/json") - org = serverinfo.json()["org"] - except: - org = "N/A" currentTime = get_readable_time(time.time() - botStartTime) start_t = time.time() rm = await ctx.reply_msg("🐱 Pong!!...") end_t = time.time() time_taken_s = round(end_t - start_t, 3) - await rm.edit_msg(f"🐈 MissKatyBot {botVersion} online.\n\nPing: {time_taken_s} detik\nUptime: {currentTime}\nHosted by {org}") + await rm.edit_msg(f"🐈 MissKatyBot {botVersion} based Pyrogram {pyrover} Online.\n\nPing: {time_taken_s} detik\nUptime: {currentTime}\nPython Version: {platform.python_version()}") @app.on_message(filters.command(["ping_dc"], COMMAND_HANDLER)) diff --git a/misskaty/plugins/web_scraper.py b/misskaty/plugins/web_scraper.py index 177e3f2b..0614f270 100644 --- a/misskaty/plugins/web_scraper.py +++ b/misskaty/plugins/web_scraper.py @@ -481,7 +481,7 @@ async def lendrive_s(self: Client, ctx: Message, strings): kueri = ctx.input if not kueri: kueri = "" - pesan = await ctx.edit_msg(strings("get_data"), quote=True) + pesan = await ctx.reply_msg(strings("get_data"), quote=True) CurrentPage = 1 lendres, PageLen, btn = await getDataLendrive(pesan, kueri, CurrentPage, ctx.from_user.id, strings) if not lendres: