diff --git a/misskaty/__init__.py b/misskaty/__init__.py
index 027aebbf..e7c54e56 100644
--- a/misskaty/__init__.py
+++ b/misskaty/__init__.py
@@ -1,4 +1,4 @@
-from logging import basicConfig, FileHandler, StreamHandler, getLogger
+from logging import basicConfig, FileHandler, StreamHandler
import time
from pyrogram import Client
from misskaty.vars import API_ID, API_HASH, BOT_TOKEN, USER_SESSION
@@ -12,7 +12,6 @@ basicConfig(
MOD_LOAD = []
MOD_NOLOAD = []
HELPABLE = {}
-LOGGER = getLogger(__name__)
botStartTime = time.time()
# Pyrogram Bot Client
diff --git a/misskaty/__main__.py b/misskaty/__main__.py
index 6717995c..295d6284 100644
--- a/misskaty/__main__.py
+++ b/misskaty/__main__.py
@@ -6,7 +6,8 @@
* Copyright @YasirPedia All rights reserved
"""
import asyncio, importlib, re
-from misskaty import app, user, HELPABLE, LOGGER
+from logging import getLogger
+from misskaty import app, user, HELPABLE
from misskaty.plugins import ALL_MODULES
from misskaty.helper import paginate_modules
from misskaty.helper.tools import bot_sys_stats
@@ -17,6 +18,7 @@ from pyrogram.raw.all import layer
from pyrogram import idle, __version__, filters
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
+LOGGER = getLogger(__name__)
loop = asyncio.get_event_loop()
# Run Bot
diff --git a/misskaty/plugins/admin.py b/misskaty/plugins/admin.py
index 4bda289e..3e3690d5 100644
--- a/misskaty/plugins/admin.py
+++ b/misskaty/plugins/admin.py
@@ -1,4 +1,5 @@
import asyncio, re
+from logging import getLogger
from misskaty import app
from misskaty.helper.functions import (
extract_user_and_reason,
@@ -21,6 +22,8 @@ from misskaty.core.keyboard import ikb
from misskaty.vars import SUDO, COMMAND_HANDLER
from database.warn_db import get_warn, remove_warns, add_warn
+LOGGER = getLogger(__name__)
+
__MODULE__ = "Admin"
__HELP__ = """
/ban - Ban A User From A Group
diff --git a/misskaty/plugins/auto_forwarder.py b/misskaty/plugins/auto_forwarder.py
index 86197975..eec5bf7f 100644
--- a/misskaty/plugins/auto_forwarder.py
+++ b/misskaty/plugins/auto_forwarder.py
@@ -1,5 +1,6 @@
# Code copy from https://github.com/AbirHasan2005/Forward-Client
-from misskaty import user, LOGGER
+from misskaty import user
+from logging import getLogger
from pyrogram import filters
from asyncio import sleep
from pyrogram.types import Message
@@ -13,6 +14,8 @@ from misskaty.vars import (
MINIMUM_FILE_SIZE,
)
+LOGGER = getLogger(__name__)
+
async def FilterMessage(message: Message):
if (message.forward_from or message.forward_from_chat) and (
diff --git a/misskaty/plugins/download_upload.py b/misskaty/plugins/download_upload.py
index 34edc8aa..f5e22335 100644
--- a/misskaty/plugins/download_upload.py
+++ b/misskaty/plugins/download_upload.py
@@ -5,8 +5,9 @@ import os
import aiohttp
import json
from misskaty.helper.http import http
+from logging import getLogger
from bs4 import BeautifulSoup
-from misskaty import app, LOGGER
+from misskaty import app
from pySmartDL import SmartDL
from datetime import datetime
from misskaty.core.decorator.errors import capture_err
@@ -18,6 +19,8 @@ from misskaty.helper.pyro_progress import (
humanbytes,
)
+LOGGER = getLogger(__name__)
+
__MODULE__ = "Download/Upload"
__HELP__ = """
/download [url] - Download file from URL (Sudo Only)
diff --git a/misskaty/plugins/genss.py b/misskaty/plugins/genss.py
index bd37a814..f8a035c6 100644
--- a/misskaty/plugins/genss.py
+++ b/misskaty/plugins/genss.py
@@ -8,13 +8,16 @@
import os, time, traceback
from asyncio import sleep, gather
from shutil import rmtree
+from logging import getLogger
from pyrogram import filters, enums
from pyrogram.errors import FloodWait
-from misskaty import app, LOGGER
+from misskaty import app
from misskaty.helper.ffmpeg_helper import take_ss, genss_link
from misskaty.vars import COMMAND_HANDLER
from misskaty.helper.pyro_progress import progress_for_pyrogram
+LOGGER = getLogger(__name__)
+
__MODULE__ = "MediaTool"
__HELP__ = """"
/genss [reply to video] - Generate Screenshot From Video.
diff --git a/misskaty/plugins/grup_tools.py b/misskaty/plugins/grup_tools.py
index ff8337ec..f3c8f0fb 100644
--- a/misskaty/plugins/grup_tools.py
+++ b/misskaty/plugins/grup_tools.py
@@ -1,11 +1,17 @@
from datetime import datetime, timedelta
import time
import os
+from logging import getLogger
from misskaty.helper.http import http
from pyrogram import enums, filters
from pyrogram.types import ChatMemberUpdated, InlineKeyboardButton, InlineKeyboardMarkup
-from pyrogram.errors import ChatSendMediaForbidden, MessageTooLong, RPCError, SlowmodeWait
-from misskaty import app, LOGGER
+from pyrogram.errors import (
+ ChatSendMediaForbidden,
+ MessageTooLong,
+ RPCError,
+ SlowmodeWait,
+)
+from misskaty import app
from misskaty.core.decorator.errors import capture_err, asyncify
from PIL import Image, ImageChops, ImageDraw, ImageFont
import textwrap
@@ -14,6 +20,8 @@ from utils import temp
from pyrogram.errors import ChatAdminRequired
from misskaty.vars import SUDO, LOG_CHANNEL, SUPPORT_CHAT, COMMAND_HANDLER
+LOGGER = getLogger(__name__)
+
def circle(pfp, size=(215, 215)):
pfp = pfp.resize(size, Image.ANTIALIAS).convert("RGBA")
@@ -37,7 +45,9 @@ def draw_multiple_line_text(image, text, font, text_start_height):
lines = textwrap.wrap(text, width=50)
for line in lines:
line_width, line_height = font.getsize(line)
- draw.text(((image_width - line_width) / 2, y_text), line, font=font, fill="black")
+ draw.text(
+ ((image_width - line_width) / 2, y_text), line, font=font, fill="black"
+ )
y_text += line_height
@@ -47,20 +57,38 @@ def welcomepic(pic, user, chat, count, id):
background = background.resize((1024, 500), Image.ANTIALIAS)
pfp = Image.open(pic).convert("RGBA")
pfp = circle(pfp)
- pfp = pfp.resize((265, 265)) # Resizes the Profilepicture so it fits perfectly in the circle
- font = ImageFont.truetype("Calistoga-Regular.ttf", 37) # <- Text Font of the Member Count. Change the text size for your preference
+ pfp = pfp.resize(
+ (265, 265)
+ ) # Resizes the Profilepicture so it fits perfectly in the circle
+ font = ImageFont.truetype(
+ "Calistoga-Regular.ttf", 37
+ ) # <- Text Font of the Member Count. Change the text size for your preference
member_text = f"User#{count}, Selamat Datang {user}" # <- Text under the Profilepicture with the Membercount
draw_multiple_line_text(background, member_text, font, 395)
draw_multiple_line_text(background, chat, font, 47)
- ImageDraw.Draw(background).text((530, 460), "Generated by @MissKatyRoBot", font=ImageFont.truetype("Calistoga-Regular.ttf", 28), size=20, align="right")
- background.paste(pfp, (379, 123), pfp) # Pastes the Profilepicture on the Background Image
- background.save(f"downloads/welcome#{id}.png") # Saves the finished Image in the folder with the filename
+ ImageDraw.Draw(background).text(
+ (530, 460),
+ "Generated by @MissKatyRoBot",
+ font=ImageFont.truetype("Calistoga-Regular.ttf", 28),
+ size=20,
+ align="right",
+ )
+ background.paste(
+ pfp, (379, 123), pfp
+ ) # Pastes the Profilepicture on the Background Image
+ background.save(
+ f"downloads/welcome#{id}.png"
+ ) # Saves the finished Image in the folder with the filename
return f"downloads/welcome#{id}.png"
@app.on_chat_member_updated(filters.group & filters.chat(-1001128045651))
async def member_has_joined(c: app, member: ChatMemberUpdated):
- if not member.new_chat_member or member.new_chat_member.status in {"banned", "left", "restricted"} or member.old_chat_member:
+ if (
+ not member.new_chat_member
+ or member.new_chat_member.status in {"banned", "left", "restricted"}
+ or member.old_chat_member
+ ):
return
user = member.new_chat_member.user if member.new_chat_member else member.from_user
if user.id in SUDO:
@@ -79,15 +107,21 @@ async def member_has_joined(c: app, member: ChatMemberUpdated):
pass
mention = f"{user.first_name}"
joined_date = datetime.fromtimestamp(time.time()).strftime("%Y.%m.%d %H:%M:%S")
- first_name = f"{user.first_name} {user.last_name}" if user.last_name else user.first_name
+ first_name = (
+ f"{user.first_name} {user.last_name}" if user.last_name else user.first_name
+ )
id = user.id
dc = user.dc_id or "Member tanpa PP"
count = await app.get_chat_members_count(member.chat.id)
try:
- pic = await app.download_media(user.photo.big_file_id, file_name=f"pp{user.id}.png")
+ pic = await app.download_media(
+ user.photo.big_file_id, file_name=f"pp{user.id}.png"
+ )
except AttributeError:
pic = "img/profilepic.png"
- welcomeimg = await welcomepic(pic, user.first_name, member.chat.title, count, user.id)
+ welcomeimg = await welcomepic(
+ pic, user.first_name, member.chat.title, count, user.id
+ )
temp.MELCOW[f"welcome-{member.chat.id}"] = await c.send_photo(
member.chat.id,
photo=welcomeimg,
@@ -96,18 +130,30 @@ async def member_has_joined(c: app, member: ChatMemberUpdated):
userspammer = ""
# Spamwatch Detection
try:
- headers = {"Authorization": "Bearer XvfzE4AUNXkzCy0DnIVpFDlxZi79lt6EnwKgBj8Quuzms0OSdHvf1k6zSeyzZ_lz"}
- apispamwatch = (await http.get(f"https://api.spamwat.ch/banlist/{user.id}", headers=headers)).json()
+ headers = {
+ "Authorization": "Bearer XvfzE4AUNXkzCy0DnIVpFDlxZi79lt6EnwKgBj8Quuzms0OSdHvf1k6zSeyzZ_lz"
+ }
+ apispamwatch = (
+ await http.get(
+ f"https://api.spamwat.ch/banlist/{user.id}", headers=headers
+ )
+ ).json()
if not apispamwatch.get("error"):
- await app.ban_chat_member(member.chat.id, user.id, datetime.now() + timedelta(seconds=30))
+ await app.ban_chat_member(
+ member.chat.id, user.id, datetime.now() + timedelta(seconds=30)
+ )
userspammer += f"#SpamWatch Federation Ban\nUser {mention} [{user.id}] has been kicked because {apispamwatch.get('reason')}.\n"
except Exception as err:
LOGGER.error(f"ERROR in Spamwatch Detection. {err}")
# Combot API Detection
try:
- apicombot = (await http.get(f"https://api.cas.chat/check?user_id={user.id}")).json()
+ apicombot = (
+ await http.get(f"https://api.cas.chat/check?user_id={user.id}")
+ ).json()
if apicombot.get("ok") == "true":
- await app.ban_chat_member(member.chat.id, user.id, datetime.now() + timedelta(seconds=30))
+ await app.ban_chat_member(
+ member.chat.id, user.id, datetime.now() + timedelta(seconds=30)
+ )
userspammer += f"#CAS Federation Ban\nUser {mention} [{user.id}] detected as spambot and has been kicked. Powered by Combot AntiSpam."
except Exception as err:
LOGGER.error(f"ERROR in Combot API Detection. {err}")
@@ -135,7 +181,9 @@ async def save_group(bot, message):
await db.add_chat(message.chat.id, message.chat.title)
if message.chat.id in temp.BANNED_CHATS:
# Inspired from a boat of a banana tree
- buttons = [[InlineKeyboardButton("Support", url=f"https://t.me/{SUPPORT_CHAT}")]]
+ buttons = [
+ [InlineKeyboardButton("Support", url=f"https://t.me/{SUPPORT_CHAT}")]
+ ]
reply_markup = InlineKeyboardMarkup(buttons)
k = await message.reply(
text="CHAT NOT ALLOWED 🐞\n\nMy admins has restricted me from working here ! If you want to know more about it contact support..",
@@ -148,17 +196,31 @@ async def save_group(bot, message):
pass
await bot.leave_chat(message.chat.id)
return
- buttons = [[InlineKeyboardButton("ℹ️ Help", url=f"https://t.me/{temp.U_NAME}?start=help"), InlineKeyboardButton("📢 Updates", url="https://t.me/YasirPediaChannel")]]
+ buttons = [
+ [
+ InlineKeyboardButton(
+ "ℹ️ Help", url=f"https://t.me/{temp.U_NAME}?start=help"
+ ),
+ InlineKeyboardButton("📢 Updates", url="https://t.me/YasirPediaChannel"),
+ ]
+ ]
reply_markup = InlineKeyboardMarkup(buttons)
- await message.reply_text(text=f"Terimakasih sudah menambahkan saya di {message.chat.title} ❣️\n\nJika ada kendala atau saran bisa kontak ke saya.", reply_markup=reply_markup)
+ await message.reply_text(
+ text=f"Terimakasih sudah menambahkan saya di {message.chat.title} ❣️\n\nJika ada kendala atau saran bisa kontak ke saya.",
+ reply_markup=reply_markup,
+ )
else:
for u in message.new_chat_members:
count = await app.get_chat_members_count(message.chat.id)
try:
- pic = await app.download_media(u.photo.big_file_id, file_name=f"pp{u.id}.png")
+ pic = await app.download_media(
+ u.photo.big_file_id, file_name=f"pp{u.id}.png"
+ )
except AttributeError:
pic = "img/profilepic.png"
- welcomeimg = await welcomepic(pic, u.first_name, message.chat.title, count, u.id)
+ welcomeimg = await welcomepic(
+ pic, u.first_name, message.chat.title, count, u.id
+ )
if (temp.MELCOW).get(f"welcome-{message.chat.id}") is not None:
try:
await (temp.MELCOW[f"welcome-{message.chat.id}"]).delete()
@@ -189,7 +251,9 @@ async def leave_a_chat(bot, message):
except:
chat = chat
try:
- buttons = [[InlineKeyboardButton("Support", url=f"https://t.me/{SUPPORT_CHAT}")]]
+ buttons = [
+ [InlineKeyboardButton("Support", url=f"https://t.me/{SUPPORT_CHAT}")]
+ ]
reply_markup = InlineKeyboardMarkup(buttons)
await bot.send_message(
chat_id=chat,
@@ -221,14 +285,22 @@ async def disable_chat(bot, message):
if not cha_t:
return await message.reply("Chat Not Found In DB")
if cha_t["is_disabled"]:
- return await message.reply(f"This chat is already disabled:\nReason- {cha_t['reason']} ")
+ return await message.reply(
+ f"This chat is already disabled:\nReason- {cha_t['reason']} "
+ )
await db.disable_chat(chat_, reason)
temp.BANNED_CHATS.append(chat_)
await message.reply("Chat Succesfully Disabled")
try:
- buttons = [[InlineKeyboardButton("Support", url=f"https://t.me/{SUPPORT_CHAT}")]]
+ buttons = [
+ [InlineKeyboardButton("Support", url=f"https://t.me/{SUPPORT_CHAT}")]
+ ]
reply_markup = InlineKeyboardMarkup(buttons)
- await bot.send_message(chat_id=chat_, text=f"Hello Friends, \nMy admin has told me to leave from group so i go! If you wanna add me again contact my support group. \nReason : {reason}", reply_markup=reply_markup)
+ await bot.send_message(
+ chat_id=chat_,
+ text=f"Hello Friends, \nMy admin has told me to leave from group so i go! If you wanna add me again contact my support group. \nReason : {reason}",
+ reply_markup=reply_markup,
+ )
await bot.leave_chat(chat_)
except Exception as e:
await message.reply(f"Error - {e}")
@@ -267,24 +339,32 @@ async def gen_invite(bot, message):
try:
link = await bot.create_chat_invite_link(chat)
except ChatAdminRequired:
- return await message.reply("Invite Link Generation Failed, Iam Not Having Sufficient Rights")
+ return await message.reply(
+ "Invite Link Generation Failed, Iam Not Having Sufficient Rights"
+ )
except Exception as e:
return await message.reply(f"Error {e}")
await message.reply(f"Here is your Invite Link {link.invite_link}")
-@app.on_message(filters.command(["adminlist", "adminlist@MissKatyRoBot"], COMMAND_HANDLER))
+@app.on_message(
+ filters.command(["adminlist", "adminlist@MissKatyRoBot"], COMMAND_HANDLER)
+)
@capture_err
async def adminlist(_, message):
if message.chat.type == enums.ChatType.PRIVATE:
return await message.reply("Perintah ini hanya untuk grup")
try:
administrators = []
- async for m in app.get_chat_members(message.chat.id, filter=enums.ChatMembersFilter.ADMINISTRATORS):
+ async for m in app.get_chat_members(
+ message.chat.id, filter=enums.ChatMembersFilter.ADMINISTRATORS
+ ):
administrators.append(f"{m.user.first_name}")
res = "".join(f"~ {i}\n" for i in administrators)
- return await message.reply(f"Daftar Admin di {message.chat.title} ({message.chat.id}):\n~ {res}")
+ return await message.reply(
+ f"Daftar Admin di {message.chat.title} ({message.chat.id}):\n~ {res}"
+ )
except Exception as e:
await message.reply(f"ERROR: {str(e)}")
@@ -302,7 +382,9 @@ async def kickme(_, message):
await message.reply_text(txt)
await message.unban_member(message.from_user.id)
except RPCError as ef:
- await message.reply_text(f"Sepertinya ada error, silahkan report ke owner saya. \nERROR: {str(ef)}")
+ await message.reply_text(
+ f"Sepertinya ada error, silahkan report ke owner saya. \nERROR: {str(ef)}"
+ )
return
diff --git a/misskaty/plugins/misc_tools.py b/misskaty/plugins/misc_tools.py
index 342ac68c..1eb11002 100644
--- a/misskaty/plugins/misc_tools.py
+++ b/misskaty/plugins/misc_tools.py
@@ -18,12 +18,15 @@ from misskaty.vars import COMMAND_HANDLER
from utils import extract_user, get_file_id, demoji
import time
from datetime import datetime
+from logging import getLogger
from pykeyboard import InlineKeyboard
from pyrogram.types import InlineKeyboardMarkup, InlineKeyboardButton, CallbackQuery
from misskaty.core.decorator.errors import capture_err
from misskaty.helper.tools import rentry, GENRES_EMOJI
from misskaty.helper.http import http
-from misskaty import app, LOGGER
+from misskaty import app
+
+LOGGER = getLogger(__name__)
__MODULE__ = "Misc"
__HELP__ = """
diff --git a/misskaty/plugins/sub_extractor.py b/misskaty/plugins/sub_extractor.py
index 4a4e52f5..5f65e05b 100644
--- a/misskaty/plugins/sub_extractor.py
+++ b/misskaty/plugins/sub_extractor.py
@@ -5,7 +5,8 @@
* @projectName MissKatyPyro
* Copyright @YasirPedia All rights reserved
"""
-from misskaty import app, LOGGER
+from misskaty import app
+from logging import getLogger
from pyrogram import filters
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
from misskaty.vars import COMMAND_HANDLER
@@ -17,6 +18,8 @@ from re import split as ngesplit, I
from urllib.parse import unquote
from misskaty.helper.tools import get_random_string
+LOGGER = getLogger(__name__)
+
ARCH_EXT = [".mkv", ".avi", ".mp4", ".mov"]
__MODULE__ = "MediaExtract"
diff --git a/misskaty/plugins/webss.py b/misskaty/plugins/webss.py
index 49b461d4..551943b4 100644
--- a/misskaty/plugins/webss.py
+++ b/misskaty/plugins/webss.py
@@ -2,11 +2,14 @@ from asyncio import gather
from base64 import b64decode
from io import BytesIO
from pyrogram import filters
-from misskaty import app, LOGGER
+from logging import getLogger
+from misskaty import app
from misskaty.vars import COMMAND_HANDLER
from misskaty.core.decorator.errors import capture_err
from misskaty.helper.http import post
+LOGGER = getLogger(__name__)
+
__MODULE__ = "WebSS"
__HELP__ = """
/webss [URL] [FULL_SIZE?, use (y|yes|true) to get full size image. (optional)] - Take A Screenshot Of A Webpage.
diff --git a/misskaty/plugins/ytdl_download.py b/misskaty/plugins/ytdl_download.py
index 2bf3c6e6..e8067b40 100644
--- a/misskaty/plugins/ytdl_download.py
+++ b/misskaty/plugins/ytdl_download.py
@@ -1,10 +1,11 @@
import os, json, shutil, asyncio, time
-from misskaty import app, LOGGER
+from misskaty import app
from PIL import Image
from pyrogram import filters
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
from misskaty.vars import COMMAND_HANDLER
from datetime import datetime
+from logging import getLogger
from hachoir.metadata import extractMetadata
from hachoir.parser import createParser
from misskaty.helper.ytdl_helper import random_char, DownLoadFile
diff --git a/misskaty/vars.py b/misskaty/vars.py
index a005462c..b9d427d5 100644
--- a/misskaty/vars.py
+++ b/misskaty/vars.py
@@ -1,8 +1,9 @@
-from misskaty import LOGGER
+from logging import getLogger
from os import environ
from dotenv import load_dotenv
load_dotenv("config.env", override=True)
+LOGGER = getLogger(__name__)
def getConfig(name: str):
diff --git a/utils.py b/utils.py
index 17badac2..16c0d183 100644
--- a/utils.py
+++ b/utils.py
@@ -5,13 +5,14 @@ from pyrogram.errors import (
UserIsBlocked,
)
import asyncio
-from misskaty import LOGGER
+from logging import getLogger
from pyrogram.types import Message
from typing import Union
import os
import emoji
from database.users_chats_db import db
+LOGGER = getLogger(__name__)
BANNED = {}