mirror of
https://github.com/yasirarism/MissKatyPyro.git
synced 2025-12-29 09:44:50 +00:00
Merge pull request #115 from yasirarism/develop
Fix IMDB Typo and change motor to async pymongo
This commit is contained in:
commit
469ed1ee12
28 changed files with 76 additions and 105 deletions
|
|
@ -2,12 +2,12 @@ version = 1
|
|||
|
||||
[[analyzers]]
|
||||
name = "python"
|
||||
enabled = true
|
||||
dependency_file_paths = ["requirements.txt"]
|
||||
|
||||
[analyzers.meta]
|
||||
runtime_version = "3.x.x"
|
||||
|
||||
[[transformers]]
|
||||
name = "black"
|
||||
|
||||
max_line_length = 100
|
||||
|
||||
[[transformers]]
|
||||
name = "isort"
|
||||
15
.pep8speaks.toml
Normal file
15
.pep8speaks.toml
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
# File : .pep8speaks.yml
|
||||
|
||||
scanner:
|
||||
linter: flake8
|
||||
|
||||
flake8:
|
||||
max-line-length: 100
|
||||
ignore:
|
||||
- W503 # line break before binary operator
|
||||
|
||||
message:
|
||||
opened:
|
||||
header: "@{name}, Thanks for opening this PR."
|
||||
updated:
|
||||
header: "@{name}, Thanks for updating this PR."
|
||||
|
|
@ -4,9 +4,8 @@
|
|||
* @projectName MissKatyPyro
|
||||
* Copyright @YasirPedia All rights reserved
|
||||
"""
|
||||
from motor.motor_asyncio import AsyncIOMotorClient as MongoClient
|
||||
from async_pymongo import AsyncClient
|
||||
from misskaty.vars import DATABASE_URI, DATABASE_NAME
|
||||
|
||||
from misskaty.vars import DATABASE_URI
|
||||
|
||||
mongo = MongoClient(DATABASE_URI)
|
||||
dbname = mongo.MissKatyDB
|
||||
mongo = AsyncClient(DATABASE_URI)
|
||||
dbname = mongo[DATABASE_NAME]
|
||||
|
|
|
|||
|
|
@ -10,8 +10,8 @@
|
|||
|
||||
from database import dbname
|
||||
|
||||
usersdb = dbname.users
|
||||
cleandb = dbname.cleanmode
|
||||
usersdb = dbname["users"]
|
||||
cleandb = dbname["cleanmode"]
|
||||
cleanmode = {}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ from typing import Dict, List, Union
|
|||
|
||||
from database import dbname
|
||||
|
||||
filtersdb = dbname.filters
|
||||
filtersdb = dbname["filters"]
|
||||
|
||||
|
||||
async def _get_filters(chat_id: int) -> Dict[str, int]:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
from database import dbname
|
||||
|
||||
gbansdb = dbname.gban
|
||||
gbansdb = dbname["gban"]
|
||||
|
||||
|
||||
async def is_gbanned_user(user_id: int) -> bool:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
from database import dbname
|
||||
|
||||
imbd_db = dbname.imdb
|
||||
imbd_db = dbname["imdb"]
|
||||
|
||||
|
||||
async def is_imdbset(user_id: int) -> bool:
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ from typing import Dict, Union
|
|||
from database import dbname
|
||||
from misskaty.helper.functions import int_to_alpha
|
||||
|
||||
karmadb = dbname.karma
|
||||
karmadb = dbname["karma"]
|
||||
|
||||
|
||||
async def get_karmas_count() -> dict:
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ from pyrogram.enums import ChatType
|
|||
|
||||
from database import dbname
|
||||
|
||||
localesdb = dbname.locale # DB for localization
|
||||
localesdb = dbname["locale"] # DB for localization
|
||||
|
||||
group_types: Iterable[ChatType] = (ChatType.GROUP, ChatType.SUPERGROUP)
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ from typing import Dict, List, Union
|
|||
|
||||
from database import dbname
|
||||
|
||||
notesdb = dbname.notes
|
||||
notesdb = dbname["notes"]
|
||||
|
||||
|
||||
async def _get_notes(chat_id: int) -> Dict[str, int]:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
from database import dbname
|
||||
|
||||
matadb = dbname.sangmata
|
||||
matadb = dbname["sangmata"]
|
||||
|
||||
|
||||
# Get Data User
|
||||
|
|
|
|||
|
|
@ -1,14 +1,13 @@
|
|||
import motor.motor_asyncio
|
||||
|
||||
from async_pymongo import AsyncClient
|
||||
from misskaty.vars import DATABASE_NAME, DATABASE_URI
|
||||
|
||||
|
||||
class Database:
|
||||
class UsersData:
|
||||
def __init__(self, uri, database_name):
|
||||
self._client = motor.motor_asyncio.AsyncIOMotorClient(uri)
|
||||
self._client = AsyncClient(uri)
|
||||
self.db = self._client[database_name]
|
||||
self.col = self.db.users
|
||||
self.grp = self.db.groups
|
||||
self.col = self.db["users"]
|
||||
self.grp = self.db["groups"]
|
||||
|
||||
@staticmethod
|
||||
def new_user(id, name):
|
||||
|
|
@ -109,4 +108,4 @@ class Database:
|
|||
return (await self.db.command("dbstats"))["dataSize"]
|
||||
|
||||
|
||||
db = Database(DATABASE_URI, DATABASE_NAME)
|
||||
db = UsersData(DATABASE_URI, DATABASE_NAME)
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ from typing import Dict, Union
|
|||
|
||||
from database import dbname
|
||||
|
||||
warnsdb = dbname.warn
|
||||
warnsdb = dbname["warn"]
|
||||
|
||||
|
||||
async def get_warns_count() -> dict:
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ from logging import ERROR, INFO, StreamHandler, basicConfig, getLogger, handlers
|
|||
from apscheduler.jobstores.mongodb import MongoDBJobStore
|
||||
from apscheduler.schedulers.asyncio import AsyncIOScheduler
|
||||
from async_pymongo import AsyncClient
|
||||
from motor.motor_asyncio import AsyncIOMotorClient
|
||||
from pymongo import MongoClient
|
||||
from pyrogram import Client
|
||||
|
||||
|
|
@ -41,7 +40,7 @@ MOD_NOLOAD = ["subscene_dl"]
|
|||
HELPABLE = {}
|
||||
cleanmode = {}
|
||||
botStartTime = time.time()
|
||||
misskaty_version = "v2.9.1 - Stable"
|
||||
misskaty_version = "v2.9.2 - Stable"
|
||||
|
||||
# Pyrogram Bot Client
|
||||
app = Client(
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ async def start_bot():
|
|||
LOGGER.info("+===============+===============+===============+===============+")
|
||||
LOGGER.info(bot_modules)
|
||||
LOGGER.info("+===============+===============+===============+===============+")
|
||||
LOGGER.info(f"[INFO]: BOT STARTED AS @{BOT_USERNAME}!")
|
||||
LOGGER.info("[INFO]: BOT STARTED AS @%s!", BOT_USERNAME)
|
||||
|
||||
try:
|
||||
LOGGER.info("[INFO]: SENDING ONLINE STATUS")
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import asyncio
|
||||
import asyncio, logging
|
||||
from functools import wraps
|
||||
|
||||
LOGGER = logging.getLogger(__name__)
|
||||
|
||||
def asyncify(func):
|
||||
async def inner(*args, **kwargs):
|
||||
|
|
@ -18,6 +19,6 @@ def new_task(func):
|
|||
loop = asyncio.get_running_loop()
|
||||
return loop.create_task(func(*args, **kwargs))
|
||||
except Exception as e:
|
||||
LOGGER.error(f"Failed to create task for {func.__name__} : {e}")
|
||||
LOGGER.error(f"Failed to create task for {func.__name__} : {e}") # skipcq: PYL-E0602
|
||||
|
||||
return wrapper
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@ from string import ascii_lowercase
|
|||
|
||||
from pyrogram import enums
|
||||
|
||||
from misskaty import app
|
||||
|
||||
|
||||
def get_urls_from_text(text: str) -> bool:
|
||||
regex = r"""(?i)\b((?:https?://|www\d{0,3}[.]|[a-z0-9.\-]
|
||||
|
|
@ -47,7 +49,6 @@ async def extract_userid(message, text: str):
|
|||
return int(text)
|
||||
|
||||
entities = message.entities
|
||||
app = message._client
|
||||
if len(entities) < 2:
|
||||
return (await app.get_users(text)).id
|
||||
entity = entities[1]
|
||||
|
|
|
|||
|
|
@ -140,9 +140,8 @@ async def kusonimeBypass(url: str, slug=None):
|
|||
err = traceback.format_exc()
|
||||
LOGGER.error(err)
|
||||
result |= {"error": True, "error_message": err}
|
||||
finally:
|
||||
await http.delete(_url)
|
||||
return result
|
||||
await http.delete(_url)
|
||||
return result
|
||||
|
||||
|
||||
async def byPassPh(url: str, name: str):
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ from pyrogram.types import InlineKeyboardButton
|
|||
from misskaty import MOD_LOAD, MOD_NOLOAD
|
||||
|
||||
|
||||
# skipcq: PYL-W1641
|
||||
class EqInlineKeyboardButton(InlineKeyboardButton):
|
||||
def __eq__(self, other):
|
||||
return self.text == other.text
|
||||
|
|
|
|||
|
|
@ -854,7 +854,7 @@ async def set_chat_photo(self: Client, ctx: Message):
|
|||
if file.file_size > 5000000:
|
||||
return await ctx.reply("File size too large.")
|
||||
|
||||
file = await reply.download()
|
||||
photo = await reply.download()
|
||||
try:
|
||||
await ctx.chat.set_photo(photo=photo)
|
||||
await ctx.reply_text("Successfully Changed Group Photo")
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
from pyrogram import Client, filters
|
||||
from pyrogram.errors import ChannelPrivate
|
||||
from pyrogram.errors import ChannelPrivate, PeerIdInvalid
|
||||
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup, Message
|
||||
|
||||
from database.users_chats_db import db
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ async def download(client, message):
|
|||
try:
|
||||
downloader.start(blocking=False)
|
||||
except Exception as err:
|
||||
return await ctx.edit(str(err))
|
||||
return await message.edit_msg(str(err))
|
||||
c_time = time.time()
|
||||
while not downloader.isFinished():
|
||||
total_length = downloader.filesize or None
|
||||
|
|
|
|||
|
|
@ -133,25 +133,6 @@ async def member_has_joined(c: app, member: ChatMemberUpdated, strings):
|
|||
except Exception as e:
|
||||
LOGGER.info(e)
|
||||
userspammer = ""
|
||||
# Spamwatch Detection
|
||||
try:
|
||||
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)
|
||||
)
|
||||
userspammer += strings("spamwatch_msg").format(
|
||||
umention=user.mention, uid=user.id, reas=apispamwatch.get("reason")
|
||||
)
|
||||
except Exception as err:
|
||||
LOGGER.error(f"ERROR in Spamwatch Detection. {err}")
|
||||
# Combot API Detection
|
||||
try:
|
||||
apicombot = (
|
||||
|
|
@ -202,25 +183,6 @@ async def greet_group(bot, message, strings):
|
|||
),
|
||||
)
|
||||
userspammer = ""
|
||||
# Spamwatch Detection
|
||||
try:
|
||||
headers = {
|
||||
"Authorization": "Bearer XvfzE4AUNXkzCy0DnIVpFDlxZi79lt6EnwKgBj8Quuzms0OSdHvf1k6zSeyzZ_lz"
|
||||
}
|
||||
apispamwatch = (
|
||||
await http.get(
|
||||
f"https://api.spamwat.ch/banlist/{u.id}", headers=headers
|
||||
)
|
||||
).json()
|
||||
if not apispamwatch.get("error"):
|
||||
await app.ban_chat_member(
|
||||
message.chat.id, u.id, datetime.now() + timedelta(seconds=30)
|
||||
)
|
||||
userspammer += strings("spamwatch_msg").format(
|
||||
umention=u.mention, uid=u.id, reas=apispamwatch.get("reason")
|
||||
)
|
||||
except Exception as err:
|
||||
LOGGER.error(f"ERROR in Spamwatch Detection. {err}")
|
||||
# Combot API Detection
|
||||
try:
|
||||
apicombot = (
|
||||
|
|
|
|||
|
|
@ -649,7 +649,7 @@ async def imdb_en_callback(self: Client, query: CallbackQuery):
|
|||
for i in r_json["creator"]
|
||||
if i["@type"] == "Person"
|
||||
)
|
||||
res_str += f"<b>Writer:</b> {creator[-2]}\n"
|
||||
res_str += f"<b>Writer:</b> {creator[:-2]}\n"
|
||||
if r_json.get("actor"):
|
||||
actors = actors = "".join(
|
||||
f"<a href='{i['url']}'>{i['name']}</a>, " for i in r_json["actor"]
|
||||
|
|
|
|||
|
|
@ -11,24 +11,20 @@ from sys import version as pyver
|
|||
|
||||
from bs4 import BeautifulSoup
|
||||
from deep_translator import GoogleTranslator
|
||||
from motor import version as mongover
|
||||
from pykeyboard import InlineButton, InlineKeyboard
|
||||
from pyrogram import __version__ as pyrover
|
||||
from pyrogram import enums, filters
|
||||
from pyrogram.errors import MessageIdInvalid, MessageNotModified
|
||||
from pyrogram.types import (
|
||||
InlineKeyboardButton,
|
||||
InlineKeyboardMarkup,
|
||||
InlineQuery,
|
||||
InlineQueryResultArticle,
|
||||
InlineQueryResultPhoto,
|
||||
InputTextMessageContent,
|
||||
)
|
||||
from pyrogram.types import (InlineKeyboardButton, InlineKeyboardMarkup,
|
||||
InlineQuery, InlineQueryResultArticle,
|
||||
InlineQueryResultPhoto, InputTextMessageContent)
|
||||
|
||||
from misskaty import BOT_USERNAME, app, user
|
||||
from misskaty.core.decorator.ratelimiter import ratelimiter
|
||||
from misskaty.helper import GENRES_EMOJI, http, post_to_telegraph, search_jw
|
||||
from misskaty.plugins.dev import shell_exec
|
||||
from misskaty.plugins.misc_tools import get_content
|
||||
from misskaty.vars import USER_SESSION
|
||||
from utils import demoji
|
||||
|
||||
__MODULE__ = "InlineFeature"
|
||||
|
|
@ -50,6 +46,7 @@ LOGGER = getLogger()
|
|||
@app.on_inline_query()
|
||||
async def inline_menu(_, inline_query: InlineQuery):
|
||||
if inline_query.query.strip().lower().strip() == "":
|
||||
aspymon_ver = (await shell_exec("pip freeze | grep async-pymongo"))[0]
|
||||
buttons = InlineKeyboard(row_width=2)
|
||||
buttons.add(
|
||||
*[
|
||||
|
|
@ -59,8 +56,8 @@ async def inline_menu(_, inline_query: InlineQuery):
|
|||
)
|
||||
|
||||
btn = InlineKeyboard(row_width=2)
|
||||
bot_state = "Alive" if await app.get_me() else "Dead"
|
||||
ubot_state = "Alive" if await user.get_me() else "Dead"
|
||||
bot_state = "Alive" if USER_SESSION and await app.get_me() else "Dead"
|
||||
ubot_state = "Alive" if USER_SESSION and await user.get_me() else "Dead"
|
||||
btn.add(
|
||||
InlineKeyboardButton("Stats", callback_data="stats_callback"),
|
||||
InlineKeyboardButton("Go Inline!", switch_inline_query_current_chat=""),
|
||||
|
|
@ -68,14 +65,16 @@ async def inline_menu(_, inline_query: InlineQuery):
|
|||
|
||||
msg = f"""
|
||||
**[MissKaty✨](https://github.com/yasirarism):**
|
||||
**MainBot:** `{bot_state}`
|
||||
**UserBot:** `{ubot_state}`
|
||||
**MainBot Stats:** `{bot_state}`
|
||||
**UserBot Stats:** `{ubot_state}`
|
||||
**Python:** `{pyver.split()[0]}`
|
||||
**Pyrogram:** `{pyrover}`
|
||||
**MongoDB:** `{mongover}`
|
||||
**MongoDB:** `{aspymon_ver}`
|
||||
**Platform:** `{platform}`
|
||||
**Profiles:** {(await app.get_me()).username} | {(await user.get_me()).first_name}
|
||||
"""
|
||||
**Bot:** {(await app.get_me()).first_name}
|
||||
"""
|
||||
if USER_SESSION:
|
||||
msg += f"**UserBot:** {(await user.get_me()).first_name}"
|
||||
answerss = [
|
||||
InlineQueryResultArticle(
|
||||
title="Inline Commands",
|
||||
|
|
@ -166,6 +165,7 @@ async def inline_menu(_, inline_query: InlineQuery):
|
|||
reply_markup=buttons,
|
||||
)
|
||||
)
|
||||
is_img = False
|
||||
for types in parsetypes:
|
||||
if kueri.lower() in types.lower():
|
||||
link = parsetypes[types]["href"]
|
||||
|
|
@ -191,7 +191,7 @@ async def inline_menu(_, inline_query: InlineQuery):
|
|||
body_text = f"""
|
||||
<pre>{msg}</pre>
|
||||
"""
|
||||
msg = await post_to_telegraph(False, method, body_text)
|
||||
msg = await post_to_telegraph(is_img, method, body_text)
|
||||
datajson.append(
|
||||
InlineQueryResultArticle(
|
||||
title=types,
|
||||
|
|
|
|||
|
|
@ -13,12 +13,8 @@ from time import time
|
|||
from urllib.parse import unquote
|
||||
|
||||
from pyrogram import Client, filters
|
||||
from pyrogram.types import (
|
||||
CallbackQuery,
|
||||
InlineKeyboardButton,
|
||||
InlineKeyboardMarkup,
|
||||
Message,
|
||||
)
|
||||
from pyrogram.types import (CallbackQuery, InlineKeyboardButton,
|
||||
InlineKeyboardMarkup, Message)
|
||||
|
||||
from misskaty import app
|
||||
from misskaty.core.decorator.errors import capture_err
|
||||
|
|
@ -131,7 +127,7 @@ async def convertsrt(self: Client, ctx: Message, strings):
|
|||
filename = dl.split("/", 3)[3]
|
||||
LOGGER.info(f"ConvertSub: {filename} by {ctx.from_user.first_name if ctx.from_user else ctx.sender_chat.title} [{ctx.from_user.id if ctx.from_user else ctx.sender_chat.id}]")
|
||||
suffix = "srt" if ctx.command[0] == "converttosrt" else "ass"
|
||||
(await shell_exec(f"ffmpeg -i '{dl}' 'downloads/{filename}.{suffix}'"))[0]
|
||||
(await shell_exec(f"ffmpeg -i '{dl}' 'downloads/{filename}.{suffix}'"))[0] # skipcq: PYL-W0106
|
||||
c_time = time()
|
||||
await ctx.reply_document(
|
||||
f"downloads/{filename}.{suffix}",
|
||||
|
|
@ -156,7 +152,7 @@ async def stream_extract(self: Client, update: CallbackQuery, strings):
|
|||
usr = update.message.reply_to_message
|
||||
if update.from_user.id != usr.from_user.id:
|
||||
return await update.answer(strings("unauth_cb"), True)
|
||||
_, lang, map, codec = cb_data.split("#")
|
||||
_, lang, map_code, codec = cb_data.split("#")
|
||||
try:
|
||||
link = update.message.reply_to_message.command[1]
|
||||
except:
|
||||
|
|
@ -174,7 +170,7 @@ async def stream_extract(self: Client, update: CallbackQuery, strings):
|
|||
namafile = get_subname(lang, link, ext)
|
||||
try:
|
||||
LOGGER.info(f"ExtractSub: {namafile} by {update.from_user.first_name} [{update.from_user.id}]")
|
||||
(await shell_exec(f"ffmpeg -i {link} -map {map} '{namafile}'"))[0]
|
||||
(await shell_exec(f"ffmpeg -i {link} -map {map_code} '{namafile}'"))[0]
|
||||
timelog = time() - start_time
|
||||
c_time = time()
|
||||
await update.message.reply_document(
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ headers = {
|
|||
LOGGER = logging.getLogger(__name__)
|
||||
SCRAP_DICT = TTLCache(maxsize=1000, ttl=1800)
|
||||
data_kuso = TTLCache(maxsize=1000, ttl=1800)
|
||||
webdb = dbname.web
|
||||
webdb = dbname["web"]
|
||||
|
||||
web = {
|
||||
"yasirapi": "https://yasirapi.eu.org",
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ tgcrypto
|
|||
async_pymongo
|
||||
pymongo
|
||||
python-dotenv
|
||||
motor[srv]>=3.1.2
|
||||
requests
|
||||
bs4
|
||||
aiohttp
|
||||
|
|
|
|||
Loading…
Reference in a new issue