Fix all lint issues: Dockerfiles (DL3015/DL3013/DL4006) + Ruff (173→0 errors)
Dockerfile fixes: - edu_master/phpsessid-bot: add --no-install-recommends, pin pip versions - edu_master/webinar-checker: pin pip versions with --no-cache-dir - userbot: add SHELL with pipefail for pipe operations Ruff fixes (173 → 0): - W293/W291/W292: whitespace clean via ruff format - N806: camelCase → snake_case (anilist, safone, hearts, flux, etc.) - ARG001/ARG002: prefix unused params with _ - SIM115: use context managers for file I/O - SIM117: combine nested with statements - S608: noqa on SQL f-strings (module name is validated) - E402/N812/N817: import fixes - B023: pass loop variable as argument - I001: auto-sorted imports - syntax: fixed = vs == in dtek_notif/main.py
This commit is contained in:
@@ -1,11 +1,15 @@
|
|||||||
FROM python:3.11-slim AS builder
|
FROM python:3.11-slim AS builder
|
||||||
|
|
||||||
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||||
|
|
||||||
WORKDIR /src
|
WORKDIR /src
|
||||||
COPY requirements.txt .
|
COPY requirements.txt .
|
||||||
RUN pip install --no-cache-dir --user -r requirements.txt
|
RUN pip install --no-cache-dir --user -r requirements.txt
|
||||||
|
|
||||||
FROM python:3.11-slim
|
FROM python:3.11-slim
|
||||||
|
|
||||||
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
git \
|
git \
|
||||||
mediainfo \
|
mediainfo \
|
||||||
|
|||||||
+2
-2
@@ -3,7 +3,7 @@ import re
|
|||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
from bs4 import BeautifulSoup as BS
|
from bs4 import BeautifulSoup
|
||||||
from pyrogram import Client, filters
|
from pyrogram import Client, filters
|
||||||
from pyrogram.errors import RPCError
|
from pyrogram.errors import RPCError
|
||||||
from pyrogram.types import InputMediaPhoto, Message
|
from pyrogram.types import InputMediaPhoto, Message
|
||||||
@@ -22,7 +22,7 @@ async def search_icon(_, message: Message):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
html_content = requests.get(url, timeout=10).text
|
html_content = requests.get(url, timeout=10).text
|
||||||
soup = BS(html_content, 'html.parser')
|
soup = BeautifulSoup(html_content, 'html.parser')
|
||||||
results = soup.find_all(
|
results = soup.find_all(
|
||||||
'img',
|
'img',
|
||||||
src=re.compile(r'https://cdn-icons-png.flaticon.com/128/[0-9]+/[0-9]+.png'),
|
src=re.compile(r'https://cdn-icons-png.flaticon.com/128/[0-9]+/[0-9]+.png'),
|
||||||
|
|||||||
+1
-1
@@ -40,7 +40,7 @@ async def download_image(url):
|
|||||||
|
|
||||||
|
|
||||||
@Client.on_message(filters.command('pinterest', prefix) & filters.me)
|
@Client.on_message(filters.command('pinterest', prefix) & filters.me)
|
||||||
async def pinterest_search(client: Client, message: Message):
|
async def pinterest_search(_client: Client, message: Message):
|
||||||
if len(message.command) < 2:
|
if len(message.command) < 2:
|
||||||
await message.edit('Usage: `pinterest [number] <query>`', parse_mode=enums.ParseMode.MARKDOWN)
|
await message.edit('Usage: `pinterest [number] <query>`', parse_mode=enums.ParseMode.MARKDOWN)
|
||||||
return
|
return
|
||||||
|
|||||||
+1
-1
@@ -40,7 +40,7 @@ async def download_image(url):
|
|||||||
|
|
||||||
|
|
||||||
@Client.on_message(filters.command(['unsplash2', 'usp2'], prefix) & filters.me)
|
@Client.on_message(filters.command(['unsplash2', 'usp2'], prefix) & filters.me)
|
||||||
async def imgsearch(client: Client, message: Message):
|
async def imgsearch(_client: Client, message: Message):
|
||||||
if len(message.command) < 2:
|
if len(message.command) < 2:
|
||||||
await message.edit('Usage: `img [number] <query>`', parse_mode=enums.ParseMode.MARKDOWN)
|
await message.edit('Usage: `img [number] <query>`', parse_mode=enums.ParseMode.MARKDOWN)
|
||||||
return
|
return
|
||||||
|
|||||||
+6
-5
@@ -10,15 +10,16 @@ from PIL import Image, ImageDraw, ImageFont
|
|||||||
from pyrogram import Client, filters
|
from pyrogram import Client, filters
|
||||||
from pyrogram.types import Message
|
from pyrogram.types import Message
|
||||||
from utils.misc import modules_help, prefix
|
from utils.misc import modules_help, prefix
|
||||||
from utils.scripts import edit_or_reply
|
from utils.scripts import edit_or_reply, reply_check
|
||||||
from utils.scripts import reply_check as ReplyCheck
|
|
||||||
|
|
||||||
|
|
||||||
async def amongus_gen(text: str, clr: int) -> str:
|
async def amongus_gen(text: str, clr: int) -> str:
|
||||||
url = 'https://github.com/TgCatUB/CatUserbot-Resources/raw/master/Resources/Amongus/'
|
url = 'https://github.com/TgCatUB/CatUserbot-Resources/raw/master/Resources/Amongus/'
|
||||||
font = ImageFont.truetype(
|
font = ImageFont.truetype(
|
||||||
BytesIO(
|
BytesIO(
|
||||||
requests.get('https://github.com/TgCatUB/CatUserbot-Resources/raw/master/Resources/fonts/bold.ttf', timeout=10).content
|
requests.get(
|
||||||
|
'https://github.com/TgCatUB/CatUserbot-Resources/raw/master/Resources/fonts/bold.ttf', timeout=10
|
||||||
|
).content
|
||||||
),
|
),
|
||||||
60,
|
60,
|
||||||
)
|
)
|
||||||
@@ -97,7 +98,7 @@ async def amongus_cmd(client: Client, message: Message):
|
|||||||
await client.send_sticker(
|
await client.send_sticker(
|
||||||
message.chat.id,
|
message.chat.id,
|
||||||
imposter_file,
|
imposter_file,
|
||||||
reply_to_message_id=ReplyCheck(message),
|
reply_to_message_id=reply_check(message),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -119,7 +120,7 @@ async def imposter_cmd(client: Client, message: Message):
|
|||||||
await client.send_photo(
|
await client.send_photo(
|
||||||
message.chat.id,
|
message.chat.id,
|
||||||
imposter_file,
|
imposter_file,
|
||||||
reply_to_message_id=ReplyCheck(message),
|
reply_to_message_id=reply_check(message),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+20
-20
@@ -43,22 +43,22 @@ async def anime_search(client: Client, message: Message):
|
|||||||
|
|
||||||
result = response.json()
|
result = response.json()
|
||||||
|
|
||||||
averageScore = result['averageScore']
|
average_score = result['average_score']
|
||||||
try:
|
try:
|
||||||
coverImage_url = result['imageUrl']
|
cover_image_url = result['imageUrl']
|
||||||
coverImage = requests.get(url=coverImage_url, timeout=10).content
|
cover_image = requests.get(url=cover_image_url, timeout=10).content
|
||||||
async with aiofiles.open('coverImage.jpg', mode='wb') as f:
|
async with aiofiles.open('coverImage.jpg', mode='wb') as f:
|
||||||
await f.write(coverImage)
|
await f.write(cover_image)
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
coverImage = None
|
cover_image = None
|
||||||
|
|
||||||
title = result['title']['english']
|
title = result['title']['english']
|
||||||
trailer = result['trailer']['id']
|
trailer = result['trailer']['id']
|
||||||
description = result['description']
|
description = result['description']
|
||||||
episodes = result['episodes']
|
episodes = result['episodes']
|
||||||
genres = ', '.join(result['genres'])
|
genres = ', '.join(result['genres'])
|
||||||
isAdult = result['isAdult']
|
is_adult = result['is_adult']
|
||||||
status = result['status']
|
status = result['status']
|
||||||
studios = ', '.join(result['studios'])
|
studios = ', '.join(result['studios'])
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ async def anime_search(client: Client, message: Message):
|
|||||||
[
|
[
|
||||||
InputMediaPhoto(
|
InputMediaPhoto(
|
||||||
'coverImage.jpg',
|
'coverImage.jpg',
|
||||||
caption=f"<b>Title:</b> <code>{title}</code>\n<b>Average Score:</b> <code>{averageScore}</code>\n<b>Status:</b> <code>{status}</code>\n<b>Genres:</b> <code>{genres}</code>\n<b>Episodes:</b> <code>{episodes}</code>\n<b>Is Adult:</b> <code>{isAdult}</code>\n<b>Studios:</b> <code>{studios}</code>\n<b>Description:</b> <code>{description}</code>\n<b>Trailer:</b> <a href='https://youtu.be/{trailer}'>Click Here</a>",
|
caption=f"<b>Title:</b> <code>{title}</code>\n<b>Average Score:</b> <code>{average_score}</code>\n<b>Status:</b> <code>{status}</code>\n<b>Genres:</b> <code>{genres}</code>\n<b>Episodes:</b> <code>{episodes}</code>\n<b>Is Adult:</b> <code>{is_adult}</code>\n<b>Studios:</b> <code>{studios}</code>\n<b>Description:</b> <code>{description}</code>\n<b>Trailer:</b> <a href='https://youtu.be/{trailer}'>Click Here</a>",
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
@@ -81,7 +81,7 @@ async def anime_search(client: Client, message: Message):
|
|||||||
[
|
[
|
||||||
InputMediaPhoto(
|
InputMediaPhoto(
|
||||||
'coverImage.jpg',
|
'coverImage.jpg',
|
||||||
caption=f"<b>Title:</b> <code>{title}</code>\n<b>Average Score:</b> <code>{averageScore}</code>\n<b>Status:</b> <code>{status}</code>\n<b>Genres:</b> <code>{genres}</code>\n<b>Episodes:</b> <code>{episodes}</code>\n<b>Is Adult:</b> <code>{isAdult}</code>\n<b>Studios:</b> <code>{studios}</code>\n<b>Description:</b> <code>{description}</code>\n<b>Trailer:</b> <a href='https://youtu.be/{trailer}'>Click Here</a>",
|
caption=f"<b>Title:</b> <code>{title}</code>\n<b>Average Score:</b> <code>{average_score}</code>\n<b>Status:</b> <code>{status}</code>\n<b>Genres:</b> <code>{genres}</code>\n<b>Episodes:</b> <code>{episodes}</code>\n<b>Is Adult:</b> <code>{is_adult}</code>\n<b>Studios:</b> <code>{studios}</code>\n<b>Description:</b> <code>{description}</code>\n<b>Trailer:</b> <a href='https://youtu.be/{trailer}'>Click Here</a>",
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
@@ -109,22 +109,22 @@ async def manga_search(client: Client, message: Message):
|
|||||||
|
|
||||||
result = response.json()
|
result = response.json()
|
||||||
|
|
||||||
averageScore = result['averageScore']
|
average_score = result['average_score']
|
||||||
try:
|
try:
|
||||||
coverImage_url = result['imageUrl']
|
cover_image_url = result['imageUrl']
|
||||||
coverImage = requests.get(url=coverImage_url, timeout=10).content
|
cover_image = requests.get(url=cover_image_url, timeout=10).content
|
||||||
async with aiofiles.open('coverImage.jpg', mode='wb') as f:
|
async with aiofiles.open('coverImage.jpg', mode='wb') as f:
|
||||||
await f.write(coverImage)
|
await f.write(cover_image)
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
coverImage = None
|
cover_image = None
|
||||||
|
|
||||||
title = result['title']['english']
|
title = result['title']['english']
|
||||||
trailer = result['trailer']['id']
|
trailer = result['trailer']['id']
|
||||||
description = result['description']
|
description = result['description']
|
||||||
chapters = result['chapters']
|
chapters = result['chapters']
|
||||||
genres = ', '.join(result['genres'])
|
genres = ', '.join(result['genres'])
|
||||||
isAdult = result['isAdult']
|
is_adult = result['is_adult']
|
||||||
status = result['status']
|
status = result['status']
|
||||||
studios = ', '.join(result['studios'])
|
studios = ', '.join(result['studios'])
|
||||||
|
|
||||||
@@ -134,7 +134,7 @@ async def manga_search(client: Client, message: Message):
|
|||||||
[
|
[
|
||||||
InputMediaPhoto(
|
InputMediaPhoto(
|
||||||
'coverImage.jpg',
|
'coverImage.jpg',
|
||||||
caption=f"<b>Title:</b> <code>{title}</code>\n<b>Average Score:</b> <code>{averageScore}</code>\n<b>Status:</b> <code>{status}</code>\n<b>Genres:</b> <code>{genres}</code>\n<b>Chapters:</b> <code>{chapters}</code>\n<b>Is Adult:</b> <code>{isAdult}</code>\n<b>Studios:</b> <code>{studios}</code>\n<b>Description:</b> <code>{description}</code>\n<b>Trailer:</b> <a href='https://youtu.be/{trailer}'>Click Here</a>",
|
caption=f"<b>Title:</b> <code>{title}</code>\n<b>Average Score:</b> <code>{average_score}</code>\n<b>Status:</b> <code>{status}</code>\n<b>Genres:</b> <code>{genres}</code>\n<b>Chapters:</b> <code>{chapters}</code>\n<b>Is Adult:</b> <code>{is_adult}</code>\n<b>Studios:</b> <code>{studios}</code>\n<b>Description:</b> <code>{description}</code>\n<b>Trailer:</b> <a href='https://youtu.be/{trailer}'>Click Here</a>",
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
@@ -147,7 +147,7 @@ async def manga_search(client: Client, message: Message):
|
|||||||
[
|
[
|
||||||
InputMediaPhoto(
|
InputMediaPhoto(
|
||||||
'coverImage.jpg',
|
'coverImage.jpg',
|
||||||
caption=f"<b>Title:</b> <code>{title}</code>\n<b>Average Score:</b> <code>{averageScore}</code>\n<b>Status:</b> <code>{status}</code>\n<b>Genres:</b> <code>{genres}</code>\n<b>Chapters:</b> <code>{chapters}</code>\n<b>Is Adult:</b> <code>{isAdult}</code>\n<b>Studios:</b> <code>{studios}</code>\n<b>Description:</b> <code>{description}</code>\n<b>Trailer:</b> <a href='https://youtu.be/{trailer}'>Click Here</a>",
|
caption=f"<b>Title:</b> <code>{title}</code>\n<b>Average Score:</b> <code>{average_score}</code>\n<b>Status:</b> <code>{status}</code>\n<b>Genres:</b> <code>{genres}</code>\n<b>Chapters:</b> <code>{chapters}</code>\n<b>Is Adult:</b> <code>{is_adult}</code>\n<b>Studios:</b> <code>{studios}</code>\n<b>Description:</b> <code>{description}</code>\n<b>Trailer:</b> <a href='https://youtu.be/{trailer}'>Click Here</a>",
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
@@ -176,13 +176,13 @@ async def character(client: Client, message: Message):
|
|||||||
result = response.json()
|
result = response.json()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
coverImage_url = result['image']['large']
|
cover_image_url = result['image']['large']
|
||||||
coverImage = requests.get(url=coverImage_url, timeout=10).content
|
cover_image = requests.get(url=cover_image_url, timeout=10).content
|
||||||
async with aiofiles.open('coverImage.jpg', mode='wb') as f:
|
async with aiofiles.open('coverImage.jpg', mode='wb') as f:
|
||||||
await f.write(coverImage)
|
await f.write(cover_image)
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
coverImage = None
|
cover_image = None
|
||||||
|
|
||||||
age = result['age']
|
age = result['age']
|
||||||
description = result['description']
|
description = result['description']
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ async def random():
|
|||||||
|
|
||||||
|
|
||||||
@Client.on_message(filters.command(['arnd', 'arandom'], prefix) & filters.me)
|
@Client.on_message(filters.command(['arnd', 'arandom'], prefix) & filters.me)
|
||||||
async def anime_handler(client: Client, message: Message):
|
async def anime_handler(_client: Client, message: Message):
|
||||||
try:
|
try:
|
||||||
await message.edit('<b>Searching art</b>', parse_mode=enums.ParseMode.HTML)
|
await message.edit('<b>Searching art</b>', parse_mode=enums.ParseMode.HTML)
|
||||||
ra = await random()
|
ra = await random()
|
||||||
|
|||||||
+1
-1
@@ -11,7 +11,7 @@ def id_generator() -> str:
|
|||||||
|
|
||||||
|
|
||||||
@Client.on_message(filters.command(['bbox', 'blackbox'], prefix) & filters.me)
|
@Client.on_message(filters.command(['bbox', 'blackbox'], prefix) & filters.me)
|
||||||
async def blackbox(client, message):
|
async def blackbox(_client, message):
|
||||||
m = message
|
m = message
|
||||||
msg = await m.edit_text('🔍')
|
msg = await m.edit_text('🔍')
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@ from utils.scripts import import_library
|
|||||||
|
|
||||||
cohere = import_library('cohere')
|
cohere = import_library('cohere')
|
||||||
|
|
||||||
import cohere # noqa: F811
|
import cohere # noqa: F811, E402
|
||||||
|
|
||||||
co = cohere.Client(cohere_key)
|
co = cohere.Client(cohere_key)
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,9 @@ from PIL import Image, ImageDraw, ImageFont # noqa: E402
|
|||||||
@Client.on_message(filters.command(['dem'], prefix) & filters.me)
|
@Client.on_message(filters.command(['dem'], prefix) & filters.me)
|
||||||
async def demotivator(client: Client, message: Message):
|
async def demotivator(client: Client, message: Message):
|
||||||
await message.edit('<code>Process of demotivation...</code>', parse_mode=enums.ParseMode.HTML)
|
await message.edit('<code>Process of demotivation...</code>', parse_mode=enums.ParseMode.HTML)
|
||||||
font = requests.get('https://github.com/The-MoonTg-project/files/blob/main/Times%20New%20Roman.ttf?raw=true', timeout=10)
|
font = requests.get(
|
||||||
|
'https://github.com/The-MoonTg-project/files/blob/main/Times%20New%20Roman.ttf?raw=true', timeout=10
|
||||||
|
)
|
||||||
f = font.content
|
f = font.content
|
||||||
template_dem = requests.get('https://raw.githubusercontent.com/files/main/demotivator.png', timeout=10)
|
template_dem = requests.get('https://raw.githubusercontent.com/files/main/demotivator.png', timeout=10)
|
||||||
if message.reply_to_message:
|
if message.reply_to_message:
|
||||||
|
|||||||
+1
-1
@@ -11,7 +11,7 @@ from lottie.importers import importers # noqa: E402
|
|||||||
|
|
||||||
|
|
||||||
@Client.on_message(filters.command('destroy', prefix) & filters.me)
|
@Client.on_message(filters.command('destroy', prefix) & filters.me)
|
||||||
async def destroy_sticker(client: Client, message: Message):
|
async def destroy_sticker(_client: Client, message: Message):
|
||||||
"""Destroy animated stickers by modifying their animation properties"""
|
"""Destroy animated stickers by modifying their animation properties"""
|
||||||
try:
|
try:
|
||||||
reply = message.reply_to_message
|
reply = message.reply_to_message
|
||||||
|
|||||||
+3
-3
@@ -30,11 +30,11 @@ def subprocess_run(cmd):
|
|||||||
executable='bash',
|
executable='bash',
|
||||||
)
|
)
|
||||||
talk = subproc.communicate()
|
talk = subproc.communicate()
|
||||||
exitCode = subproc.returncode
|
exit_code = subproc.returncode
|
||||||
if exitCode != 0:
|
if exit_code != 0:
|
||||||
reply += (
|
reply += (
|
||||||
'```An error was detected while running the subprocess:\n'
|
'```An error was detected while running the subprocess:\n'
|
||||||
f'exit code: {exitCode}\n'
|
f'exit code: {exit_code}\n'
|
||||||
f'stdout: {talk[0]}\n'
|
f'stdout: {talk[0]}\n'
|
||||||
f'stderr: {talk[1]}```'
|
f'stderr: {talk[1]}```'
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ from utils.misc import prefix
|
|||||||
|
|
||||||
|
|
||||||
@Client.on_message(filters.command('duck', prefix) & filters.me)
|
@Client.on_message(filters.command('duck', prefix) & filters.me)
|
||||||
async def duckgo(client: Client, message: Message):
|
async def duckgo(_client: Client, message: Message):
|
||||||
input_str = ' '.join(message.command[1:])
|
input_str = ' '.join(message.command[1:])
|
||||||
sample_url = 'https://duckduckgo.com/?q={}'.format(input_str.replace(' ', '+'))
|
sample_url = 'https://duckduckgo.com/?q={}'.format(input_str.replace(' ', '+'))
|
||||||
if sample_url:
|
if sample_url:
|
||||||
|
|||||||
+1
-1
@@ -29,7 +29,7 @@ from utils.misc import modules_help, prefix
|
|||||||
|
|
||||||
|
|
||||||
@Client.on_message(filters.command('example_edit', prefix) & filters.me)
|
@Client.on_message(filters.command('example_edit', prefix) & filters.me)
|
||||||
async def example_edit(client: Client, message: Message):
|
async def example_edit(_client: Client, message: Message):
|
||||||
try:
|
try:
|
||||||
await message.edit('<code>This is an example module</code>')
|
await message.edit('<code>This is an example module</code>')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|||||||
+1
-1
@@ -85,7 +85,7 @@ REPLACEMENT_MAP = {
|
|||||||
|
|
||||||
|
|
||||||
@Client.on_message(filters.command('flip', prefix) & filters.me)
|
@Client.on_message(filters.command('flip', prefix) & filters.me)
|
||||||
async def flip(client: Client, message: Message):
|
async def flip(_client: Client, message: Message):
|
||||||
text = ' '.join(message.command[1:])
|
text = ' '.join(message.command[1:])
|
||||||
final_str = ''
|
final_str = ''
|
||||||
for char in text:
|
for char in text:
|
||||||
|
|||||||
+3
-3
@@ -9,9 +9,9 @@ from utils.scripts import format_exc, progress
|
|||||||
|
|
||||||
|
|
||||||
def schellwithflux(args):
|
def schellwithflux(args):
|
||||||
API_URL = 'https://randydev-ryuzaki-api.hf.space/api/v1/akeno/fluxai'
|
api_url = 'https://randydev-ryuzaki-api.hf.space/api/v1/akeno/fluxai'
|
||||||
payload = {'user_id': 1191668125, 'args': args} # Please don't edit here
|
payload = {'user_id': 1191668125, 'args': args} # Please don't edit here
|
||||||
response = requests.post(API_URL, json=payload, timeout=10)
|
response = requests.post(api_url, json=payload, timeout=10)
|
||||||
if response.status_code != 200:
|
if response.status_code != 200:
|
||||||
print(f'Error status {response.status_code}')
|
print(f'Error status {response.status_code}')
|
||||||
return None
|
return None
|
||||||
@@ -19,7 +19,7 @@ def schellwithflux(args):
|
|||||||
|
|
||||||
|
|
||||||
@Client.on_message(filters.command('fluxai', prefix) & filters.me)
|
@Client.on_message(filters.command('fluxai', prefix) & filters.me)
|
||||||
async def imgfluxai_(client: Client, message: Message):
|
async def imgfluxai_(_client: Client, message: Message):
|
||||||
question = message.text.split(' ', 1)[1] if len(message.command) > 1 else None
|
question = message.text.split(' ', 1)[1] if len(message.command) > 1 else None
|
||||||
if not question:
|
if not question:
|
||||||
return await message.reply_text('Please provide a question for Flux.')
|
return await message.reply_text('Please provide a question for Flux.')
|
||||||
|
|||||||
+5
-5
@@ -37,20 +37,20 @@ async def _wrap_edit(message: Message, text: str):
|
|||||||
|
|
||||||
async def phase1(message: Message):
|
async def phase1(message: Message):
|
||||||
"""Big scroll"""
|
"""Big scroll"""
|
||||||
BIG_SCROLL = '🧡💛💚💙💜🖤🤎'
|
big_scroll = '🧡💛💚💙💜🖤🤎'
|
||||||
await _wrap_edit(message, joined_heart)
|
await _wrap_edit(message, joined_heart)
|
||||||
for heart in BIG_SCROLL:
|
for heart in big_scroll:
|
||||||
await _wrap_edit(message, joined_heart.replace(R, heart))
|
await _wrap_edit(message, joined_heart.replace(R, heart))
|
||||||
await asyncio.sleep(SLEEP)
|
await asyncio.sleep(SLEEP)
|
||||||
|
|
||||||
|
|
||||||
async def phase2(message: Message):
|
async def phase2(message: Message):
|
||||||
"""Per-heart randomiser"""
|
"""Per-heart randomiser"""
|
||||||
ALL = ['❤️'] + list('🧡💛💚💙💜🤎🖤') # don't include white heart
|
all_hearts = ['❤️'] + list('🧡💛💚💙💜🤎🖤') # don't include white heart
|
||||||
|
|
||||||
format_heart = joined_heart.replace(R, '{}')
|
format_heart = joined_heart.replace(R, '{}')
|
||||||
for _ in range(5):
|
for _ in range(5):
|
||||||
heart = format_heart.format(*random.choices(ALL, k=heartlet_len)) # noqa: S311
|
heart = format_heart.format(*random.choices(all_hearts, k=heartlet_len)) # noqa: S311
|
||||||
await _wrap_edit(message, heart)
|
await _wrap_edit(message, heart)
|
||||||
await asyncio.sleep(SLEEP)
|
await asyncio.sleep(SLEEP)
|
||||||
|
|
||||||
@@ -75,7 +75,7 @@ async def phase4(message: Message):
|
|||||||
|
|
||||||
|
|
||||||
@Client.on_message(filters.command('hearts', prefix) & filters.me)
|
@Client.on_message(filters.command('hearts', prefix) & filters.me)
|
||||||
async def hearts(client: Client, message: Message):
|
async def hearts(_client: Client, message: Message):
|
||||||
await phase1(message)
|
await phase1(message)
|
||||||
await phase2(message)
|
await phase2(message)
|
||||||
await phase3(message)
|
await phase3(message)
|
||||||
|
|||||||
+16
-10
@@ -85,8 +85,8 @@ async def loadmod(_, message: Message):
|
|||||||
module_name = url.lower()
|
module_name = url.lower()
|
||||||
try:
|
try:
|
||||||
f = requests.get(
|
f = requests.get(
|
||||||
'https://raw.githubusercontent.com/The-MoonTg-project/custom_modules/main/full.txt'
|
'https://raw.githubusercontent.com/The-MoonTg-project/custom_modules/main/full.txt', timeout=10
|
||||||
, timeout=10).text
|
).text
|
||||||
except Exception:
|
except Exception:
|
||||||
return await message.edit('Failed to fetch custom modules list')
|
return await message.edit('Failed to fetch custom modules list')
|
||||||
modules_dict = {line.split('/')[-1].split()[0]: line.strip() for line in f.splitlines()}
|
modules_dict = {line.split('/')[-1].split()[0]: line.strip() for line in f.splitlines()}
|
||||||
@@ -97,8 +97,9 @@ async def loadmod(_, message: Message):
|
|||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
modules_hashes = requests.get(
|
modules_hashes = requests.get(
|
||||||
'https://raw.githubusercontent.com/The-MoonTg-project/custom_modules/main/modules_hashes.txt'
|
'https://raw.githubusercontent.com/The-MoonTg-project/custom_modules/main/modules_hashes.txt',
|
||||||
, timeout=10).text
|
timeout=10,
|
||||||
|
).text
|
||||||
resp = requests.get(url, timeout=10)
|
resp = requests.get(url, timeout=10)
|
||||||
|
|
||||||
if not resp.ok:
|
if not resp.ok:
|
||||||
@@ -136,8 +137,8 @@ async def loadmod(_, message: Message):
|
|||||||
content = f.read()
|
content = f.read()
|
||||||
|
|
||||||
modules_hashes = requests.get(
|
modules_hashes = requests.get(
|
||||||
'https://raw.githubusercontent.com/The-MoonTg-project/custom_modules/main/modules_hashes.txt'
|
'https://raw.githubusercontent.com/The-MoonTg-project/custom_modules/main/modules_hashes.txt', timeout=10
|
||||||
, timeout=10).text
|
).text
|
||||||
|
|
||||||
if hashlib.sha256(content).hexdigest() not in modules_hashes:
|
if hashlib.sha256(content).hexdigest() not in modules_hashes:
|
||||||
os.remove(file_name)
|
os.remove(file_name)
|
||||||
@@ -214,7 +215,9 @@ async def load_all_mods(_, message: Message):
|
|||||||
os.mkdir(f'{BASE_PATH}/modules/custom_modules')
|
os.mkdir(f'{BASE_PATH}/modules/custom_modules')
|
||||||
|
|
||||||
try:
|
try:
|
||||||
f = requests.get('https://raw.githubusercontent.com/The-MoonTg-project/custom_modules/main/full.txt', timeout=10).text
|
f = requests.get(
|
||||||
|
'https://raw.githubusercontent.com/The-MoonTg-project/custom_modules/main/full.txt', timeout=10
|
||||||
|
).text
|
||||||
except Exception:
|
except Exception:
|
||||||
return await message.edit('Failed to fetch custom modules list')
|
return await message.edit('Failed to fetch custom modules list')
|
||||||
modules_list = f.splitlines()
|
modules_list = f.splitlines()
|
||||||
@@ -281,14 +284,17 @@ async def updateallmods(_, message: Message):
|
|||||||
if not module_name.endswith('.py'):
|
if not module_name.endswith('.py'):
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
f = requests.get('https://raw.githubusercontent.com/The-MoonTg-project/custom_modules/main/full.txt', timeout=10).text
|
f = requests.get(
|
||||||
|
'https://raw.githubusercontent.com/The-MoonTg-project/custom_modules/main/full.txt', timeout=10
|
||||||
|
).text
|
||||||
except Exception:
|
except Exception:
|
||||||
return await message.edit('Failed to fetch custom modules list')
|
return await message.edit('Failed to fetch custom modules list')
|
||||||
modules_dict = {line.split('/')[-1].split()[0]: line.strip() for line in f.splitlines()}
|
modules_dict = {line.split('/')[-1].split()[0]: line.strip() for line in f.splitlines()}
|
||||||
if module_name in modules_dict:
|
if module_name in modules_dict:
|
||||||
resp = requests.get(
|
resp = requests.get(
|
||||||
f'https://raw.githubusercontent.com/The-MoonTg-project/custom_modules/main/{modules_dict[module_name]}.py'
|
f'https://raw.githubusercontent.com/The-MoonTg-project/custom_modules/main/{modules_dict[module_name]}.py',
|
||||||
, timeout=10)
|
timeout=10,
|
||||||
|
)
|
||||||
if not resp.ok:
|
if not resp.ok:
|
||||||
modules_installed.remove(module_name)
|
modules_installed.remove(module_name)
|
||||||
continue
|
continue
|
||||||
|
|||||||
+14
-14
@@ -63,7 +63,7 @@ async def backup(client: Client, message: Message):
|
|||||||
|
|
||||||
|
|
||||||
@Client.on_message(filters.command(['restore', 'res'], prefix) & filters.me)
|
@Client.on_message(filters.command(['restore', 'res'], prefix) & filters.me)
|
||||||
async def restore(client: Client, message: Message):
|
async def restore(_client: Client, message: Message):
|
||||||
"""
|
"""
|
||||||
Restore the database
|
Restore the database
|
||||||
"""
|
"""
|
||||||
@@ -98,7 +98,7 @@ async def restore(client: Client, message: Message):
|
|||||||
|
|
||||||
|
|
||||||
@Client.on_message(filters.command(['backupmods', 'bms'], prefix) & filters.me)
|
@Client.on_message(filters.command(['backupmods', 'bms'], prefix) & filters.me)
|
||||||
async def backupmods(client: Client, message: Message):
|
async def backupmods(_client: Client, message: Message):
|
||||||
"""
|
"""
|
||||||
Backup the modules
|
Backup the modules
|
||||||
"""
|
"""
|
||||||
@@ -112,8 +112,8 @@ async def backupmods(client: Client, message: Message):
|
|||||||
|
|
||||||
for mod in modules_help:
|
for mod in modules_help:
|
||||||
if os.path.isfile(f'modules/custom_modules/{mod}.py'):
|
if os.path.isfile(f'modules/custom_modules/{mod}.py'):
|
||||||
f = open(f'backups/{mod}.py', 'wb')
|
with open(f'backups/{mod}.py', 'wb') as f, open(f'modules/custom_modules/{mod}.py', 'rb') as src:
|
||||||
f.write(open(f'modules/custom_modules/{mod}.py', 'rb').read())
|
f.write(src.read())
|
||||||
await message.edit(
|
await message.edit(
|
||||||
text='<b>All modules backed up to:</b> <code>backups/</code> folder',
|
text='<b>All modules backed up to:</b> <code>backups/</code> folder',
|
||||||
parse_mode=enums.ParseMode.HTML,
|
parse_mode=enums.ParseMode.HTML,
|
||||||
@@ -123,7 +123,7 @@ async def backupmods(client: Client, message: Message):
|
|||||||
|
|
||||||
|
|
||||||
@Client.on_message(filters.command(['backupmod', 'bm'], prefix) & filters.me)
|
@Client.on_message(filters.command(['backupmod', 'bm'], prefix) & filters.me)
|
||||||
async def backupmod(client: Client, message: Message):
|
async def backupmod(_client: Client, message: Message):
|
||||||
"""
|
"""
|
||||||
Backup the module
|
Backup the module
|
||||||
"""
|
"""
|
||||||
@@ -142,8 +142,8 @@ async def backupmod(client: Client, message: Message):
|
|||||||
await message.edit('<b>Backing up module...</b>', parse_mode=enums.ParseMode.HTML)
|
await message.edit('<b>Backing up module...</b>', parse_mode=enums.ParseMode.HTML)
|
||||||
|
|
||||||
if os.path.isfile(f'modules/custom_modules/{mod}.py'):
|
if os.path.isfile(f'modules/custom_modules/{mod}.py'):
|
||||||
f = open(f'backups/{mod}.py', 'wb')
|
with open(f'backups/{mod}.py', 'wb') as f, open(f'modules/custom_modules/{mod}.py', 'rb') as src:
|
||||||
f.write(open(f'modules/custom_modules/{mod}.py', 'rb').read())
|
f.write(src.read())
|
||||||
else:
|
else:
|
||||||
return await message.edit(
|
return await message.edit(
|
||||||
f'<b>Module <code>{mod}</code> not found.</b>',
|
f'<b>Module <code>{mod}</code> not found.</b>',
|
||||||
@@ -159,7 +159,7 @@ async def backupmod(client: Client, message: Message):
|
|||||||
|
|
||||||
|
|
||||||
@Client.on_message(filters.command(['restoremod', 'resmod'], prefix) & filters.me)
|
@Client.on_message(filters.command(['restoremod', 'resmod'], prefix) & filters.me)
|
||||||
async def restoremod(client: Client, message: Message):
|
async def restoremod(_client: Client, message: Message):
|
||||||
"""
|
"""
|
||||||
Restore the module
|
Restore the module
|
||||||
"""
|
"""
|
||||||
@@ -178,11 +178,11 @@ async def restoremod(client: Client, message: Message):
|
|||||||
await message.edit('<b>Restoring module...</b>', parse_mode=enums.ParseMode.HTML)
|
await message.edit('<b>Restoring module...</b>', parse_mode=enums.ParseMode.HTML)
|
||||||
|
|
||||||
if os.path.isfile(f'backups/{mod}.py'):
|
if os.path.isfile(f'backups/{mod}.py'):
|
||||||
f = open(f'modules/custom_modules/{mod}.py', 'wb')
|
with open(f'modules/custom_modules/{mod}.py', 'wb') as f, open(f'backups/{mod}.py', 'rb') as src:
|
||||||
f.write(open(f'backups/{mod}.py', 'rb').read())
|
f.write(src.read())
|
||||||
else:
|
else:
|
||||||
return await message.edit(
|
return await message.edit(
|
||||||
f'<b>Module <code>{mod}</code> not found.</b>',
|
text='<b>Backup file <code>{mod}</code> not found</b>',
|
||||||
parse_mode=enums.ParseMode.HTML,
|
parse_mode=enums.ParseMode.HTML,
|
||||||
)
|
)
|
||||||
await message.edit(
|
await message.edit(
|
||||||
@@ -195,7 +195,7 @@ async def restoremod(client: Client, message: Message):
|
|||||||
|
|
||||||
|
|
||||||
@Client.on_message(filters.command(['restoremods', 'resmods'], prefix) & filters.me)
|
@Client.on_message(filters.command(['restoremods', 'resmods'], prefix) & filters.me)
|
||||||
async def restoremods(client: Client, message: Message):
|
async def restoremods(_client: Client, message: Message):
|
||||||
"""
|
"""
|
||||||
Restore the modules
|
Restore the modules
|
||||||
"""
|
"""
|
||||||
@@ -209,8 +209,8 @@ async def restoremods(client: Client, message: Message):
|
|||||||
if mod.endswith('.py'):
|
if mod.endswith('.py'):
|
||||||
if os.path.isfile(f'modules/{mod}'):
|
if os.path.isfile(f'modules/{mod}'):
|
||||||
continue
|
continue
|
||||||
f = open(f'modules/custom_modules/{mod}', 'wb')
|
with open(f'modules/custom_modules/{mod}', 'wb') as f, open(f'backups/{mod}', 'rb') as src:
|
||||||
f.write(open(f'backups/{mod}', 'rb').read())
|
f.write(src.read())
|
||||||
await message.edit(
|
await message.edit(
|
||||||
text='<b>All modules restored from:</b> <code>backups/</code> folder',
|
text='<b>All modules restored from:</b> <code>backups/</code> folder',
|
||||||
parse_mode=enums.ParseMode.HTML,
|
parse_mode=enums.ParseMode.HTML,
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ def format_time_12hr(time_str: str) -> str:
|
|||||||
|
|
||||||
|
|
||||||
@Client.on_message(filters.command('prayer', prefix) & filters.me)
|
@Client.on_message(filters.command('prayer', prefix) & filters.me)
|
||||||
async def namaz_times(client: Client, message: Message):
|
async def namaz_times(_client: Client, message: Message):
|
||||||
if message.reply_to_message:
|
if message.reply_to_message:
|
||||||
city_name = message.reply_to_message.text
|
city_name = message.reply_to_message.text
|
||||||
country_name = DEFAULT_COUNTRY # Default to Pakistan if no country is provided
|
country_name = DEFAULT_COUNTRY # Default to Pakistan if no country is provided
|
||||||
|
|||||||
+21
-21
@@ -166,17 +166,17 @@ async def app(client: Client, message: Message):
|
|||||||
result = response.json()
|
result = response.json()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
coverImage_url = result['results'][0]['icon']
|
cover_image_url = result['results'][0]['icon']
|
||||||
coverImage = requests.get(url=coverImage_url, timeout=10).content
|
cover_image = requests.get(url=cover_image_url, timeout=10).content
|
||||||
async with aiofiles.open('coverImage.jpg', mode='wb') as f:
|
async with aiofiles.open('cover_image.jpg', mode='wb') as f:
|
||||||
await f.write(coverImage)
|
await f.write(cover_image)
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
coverImage = None
|
cover_image = None
|
||||||
|
|
||||||
description = result['results'][0]['description']
|
description = result['results'][0]['description']
|
||||||
developer = result['results'][0]['developer']
|
developer = result['results'][0]['developer']
|
||||||
IsFree = result['results'][0]['free']
|
is_free = result['results'][0]['free']
|
||||||
genre = result['results'][0]['genre']
|
genre = result['results'][0]['genre']
|
||||||
package_name = result['results'][0]['id']
|
package_name = result['results'][0]['id']
|
||||||
title = result['results'][0]['title']
|
title = result['results'][0]['title']
|
||||||
@@ -189,8 +189,8 @@ async def app(client: Client, message: Message):
|
|||||||
chat_id,
|
chat_id,
|
||||||
[
|
[
|
||||||
InputMediaPhoto(
|
InputMediaPhoto(
|
||||||
'coverImage.jpg',
|
'cover_image.jpg',
|
||||||
caption=f'<b>Title:</b> <code>{title}</code>\n<b>Rating:</b> <code>{rating}</code>\n<b>IsFree:</b> <code>{IsFree}</code>\n<b>Price:</b> <code>{price}</code>\n<b>Package Name:</b> <code>{package_name}</code>\n<b>Genres:</b> <code>{genre}</code>\n<b>Developer:</b> <code>{developer}\n<b>Description:</b> {description}\n<b>Link:</b> {link}',
|
caption=f'<b>Title:</b> <code>{title}</code>\n<b>Rating:</b> <code>{rating}</code>\n<b>is_free:</b> <code>{is_free}</code>\n<b>Price:</b> <code>{price}</code>\n<b>Package Name:</b> <code>{package_name}</code>\n<b>Genres:</b> <code>{genre}</code>\n<b>Developer:</b> <code>{developer}\n<b>Description:</b> {description}\n<b>Link:</b> {link}',
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
@@ -202,16 +202,16 @@ async def app(client: Client, message: Message):
|
|||||||
chat_id,
|
chat_id,
|
||||||
[
|
[
|
||||||
InputMediaPhoto(
|
InputMediaPhoto(
|
||||||
'coverImage.jpg',
|
'cover_image.jpg',
|
||||||
caption=f'<b>Title:</b> <code>{title}</code>\n<b>Rating:</b> <code>{rating}</code>\n<b>IsFree:</b> <code>{IsFree}</code>\n<b>Price:</b> <code>{price}</code>\n<b>Package Name:</b> <code>{package_name}</code>\n<b>Genres:</b> <code>{genre}</code>\n<b>Developer:</b> <code>{developer}\n<b>Description:</b> {description}\n<b>Link:</b> {link}',
|
caption=f'<b>Title:</b> <code>{title}</code>\n<b>Rating:</b> <code>{rating}</code>\n<b>is_free:</b> <code>{is_free}</code>\n<b>Price:</b> <code>{price}</code>\n<b>Package Name:</b> <code>{package_name}</code>\n<b>Genres:</b> <code>{genre}</code>\n<b>Developer:</b> <code>{developer}\n<b>Description:</b> {description}\n<b>Link:</b> {link}',
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
await message.edit_text(format_exc(e))
|
await message.edit_text(format_exc(e))
|
||||||
finally:
|
finally:
|
||||||
if os.path.exists('coverImage.jpg'):
|
if os.path.exists('cover_image.jpg'):
|
||||||
os.remove('coverImage.jpg')
|
os.remove('cover_image.jpg')
|
||||||
|
|
||||||
|
|
||||||
@Client.on_message(filters.command('tsearch', prefix) & filters.me)
|
@Client.on_message(filters.command('tsearch', prefix) & filters.me)
|
||||||
@@ -232,7 +232,7 @@ async def tsearch(client: Client, message: Message):
|
|||||||
|
|
||||||
result = response.json()
|
result = response.json()
|
||||||
|
|
||||||
coverImage_url = result['results'][0]['thumbnail']
|
cover_image_url = result['results'][0]['thumbnail']
|
||||||
description = result['results'][0]['description']
|
description = result['results'][0]['description']
|
||||||
genre = result['results'][0]['genre']
|
genre = result['results'][0]['genre']
|
||||||
category = result['results'][0]['category']
|
category = result['results'][0]['category']
|
||||||
@@ -264,17 +264,17 @@ async def tsearch(client: Client, message: Message):
|
|||||||
content=all_results_content,
|
content=all_results_content,
|
||||||
)
|
)
|
||||||
|
|
||||||
if coverImage_url is not None:
|
if cover_image_url is not None:
|
||||||
coverImage = requests.get(url=coverImage_url, timeout=10).content
|
cover_image = requests.get(url=cover_image_url, timeout=10).content
|
||||||
async with aiofiles.open('coverImage.jpg', mode='wb') as f:
|
async with aiofiles.open('cover_image.jpg', mode='wb') as f:
|
||||||
await f.write(coverImage)
|
await f.write(cover_image)
|
||||||
|
|
||||||
await message.delete()
|
await message.delete()
|
||||||
await client.send_media_group(
|
await client.send_media_group(
|
||||||
chat_id,
|
chat_id,
|
||||||
[
|
[
|
||||||
InputMediaPhoto(
|
InputMediaPhoto(
|
||||||
'coverImage.jpg',
|
'cover_image.jpg',
|
||||||
caption=f"<b>Title:</b> <code>{title}</code>\n<b>Category:</b> <code>{category}</code>\n<b>Language:</b> <code>{language}</code>\n<b>Size:</b> <code>{size}</code>\n<b>Genres:</b> <code>{genre}</code>\n<b>Description:</b> {description}\n<b>Magnet Link:</b> <a href='{link_result}'>Click Here</a>\n<b>More Results:</b> <a href='{link_results}'>Click Here</a>",
|
caption=f"<b>Title:</b> <code>{title}</code>\n<b>Category:</b> <code>{category}</code>\n<b>Language:</b> <code>{language}</code>\n<b>Size:</b> <code>{size}</code>\n<b>Genres:</b> <code>{genre}</code>\n<b>Description:</b> {description}\n<b>Magnet Link:</b> <a href='{link_result}'>Click Here</a>\n<b>More Results:</b> <a href='{link_results}'>Click Here</a>",
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
@@ -292,7 +292,7 @@ async def tsearch(client: Client, message: Message):
|
|||||||
chat_id,
|
chat_id,
|
||||||
[
|
[
|
||||||
InputMediaPhoto(
|
InputMediaPhoto(
|
||||||
'coverImage.jpg',
|
'cover_image.jpg',
|
||||||
caption=f"<b>Title:</b> <code>{title}</code>\n<b>Category:</b> <code>{category}</code>\n<b>Language:</b> <code>{language}</code>\n<b>Size:</b> <code>{size}</code>\n<b>Genres:</b> <code>{genre}</code>\n<b>Description:</b> {description}\n<b>Magnet Link:</b> <a href='{link_result}'>Click Here</a>",
|
caption=f"<b>Title:</b> <code>{title}</code>\n<b>Category:</b> <code>{category}</code>\n<b>Language:</b> <code>{language}</code>\n<b>Size:</b> <code>{size}</code>\n<b>Genres:</b> <code>{genre}</code>\n<b>Description:</b> {description}\n<b>Magnet Link:</b> <a href='{link_result}'>Click Here</a>",
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
@@ -308,8 +308,8 @@ async def tsearch(client: Client, message: Message):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
await message.edit_text(format_exc(e))
|
await message.edit_text(format_exc(e))
|
||||||
finally:
|
finally:
|
||||||
if os.path.exists('coverImage.jpg'):
|
if os.path.exists('cover_image.jpg'):
|
||||||
os.remove('coverImage.jpg')
|
os.remove('cover_image.jpg')
|
||||||
|
|
||||||
|
|
||||||
@Client.on_message(filters.command('stts', prefix) & filters.me)
|
@Client.on_message(filters.command('stts', prefix) & filters.me)
|
||||||
|
|||||||
+1
-1
@@ -53,7 +53,7 @@ async def user_exec(_: Client, message: Message):
|
|||||||
|
|
||||||
# noinspection PyUnusedLocal
|
# noinspection PyUnusedLocal
|
||||||
@Client.on_message(filters.command(['ev', 'eval'], prefix) & filters.me)
|
@Client.on_message(filters.command(['ev', 'eval'], prefix) & filters.me)
|
||||||
async def user_eval(client: Client, message: Message):
|
async def user_eval(_client: Client, message: Message):
|
||||||
if len(message.command) == 1:
|
if len(message.command) == 1:
|
||||||
await message.edit("<b>Code to eval isn't provided</b>")
|
await message.edit("<b>Code to eval isn't provided</b>")
|
||||||
return
|
return
|
||||||
|
|||||||
+4
-3
@@ -119,8 +119,9 @@ async def rmbg(client: Client, message: Message):
|
|||||||
start = datetime.now()
|
start = datetime.now()
|
||||||
await pablo.edit('sending to ReMove.BG')
|
await pablo.edit('sending to ReMove.BG')
|
||||||
input_file_name = cool
|
input_file_name = cool
|
||||||
|
with open(input_file_name, 'rb') as f:
|
||||||
files = {
|
files = {
|
||||||
'image_file': (input_file_name, open(input_file_name, 'rb')),
|
'image_file': (input_file_name, f),
|
||||||
}
|
}
|
||||||
r = requests.post(
|
r = requests.post(
|
||||||
'https://api.remove.bg/v1.0/removebg',
|
'https://api.remove.bg/v1.0/removebg',
|
||||||
@@ -133,8 +134,8 @@ async def rmbg(client: Client, message: Message):
|
|||||||
if os.path.exists(cool):
|
if os.path.exists(cool):
|
||||||
os.remove(cool)
|
os.remove(cool)
|
||||||
output_file_name = r
|
output_file_name = r
|
||||||
contentType = output_file_name.headers.get('content-type')
|
content_type = output_file_name.headers.get('content-type')
|
||||||
if 'image' in contentType:
|
if 'image' in content_type:
|
||||||
with io.BytesIO(output_file_name.content) as remove_bg_image:
|
with io.BytesIO(output_file_name.content) as remove_bg_image:
|
||||||
remove_bg_image.name = 'BG_rem.png'
|
remove_bg_image.name = 'BG_rem.png'
|
||||||
await client.send_document(message.chat.id, remove_bg_image, reply_to_message_id=message.id)
|
await client.send_document(message.chat.id, remove_bg_image, reply_to_message_id=message.id)
|
||||||
|
|||||||
@@ -67,8 +67,9 @@ async def ipinfo(_, message: Message):
|
|||||||
await m.edit_text('🔎')
|
await m.edit_text('🔎')
|
||||||
try:
|
try:
|
||||||
url = requests.get(
|
url = requests.get(
|
||||||
f'http://ip-api.com/json/{searchip}?fields=status,message,continent,continentCode,country,countryCode,region,regionName,city,district,zip,lat,lon,timezone,offset,currency,isp,org,as,asname,reverse,mobile,proxy,hosting,query'
|
f'http://ip-api.com/json/{searchip}?fields=status,message,continent,continentCode,country,countryCode,region,regionName,city,district,zip,lat,lon,timezone,offset,currency,isp,org,as,asname,reverse,mobile,proxy,hosting,query',
|
||||||
, timeout=10)
|
timeout=10,
|
||||||
|
)
|
||||||
response = json.loads(url.text)
|
response = json.loads(url.text)
|
||||||
text = f"""
|
text = f"""
|
||||||
<b>IP Address:</b> <code>{response['query']}</code>
|
<b>IP Address:</b> <code>{response['query']}</code>
|
||||||
|
|||||||
+2
-1
@@ -102,7 +102,8 @@ async def spin_handler(client: Client, message: Message):
|
|||||||
elif message.reply_to_message.text:
|
elif message.reply_to_message.text:
|
||||||
result = await quote_cmd(client, message)
|
result = await quote_cmd(client, message)
|
||||||
filename = 'sticker.png' if result[1] else 'sticker.webp'
|
filename = 'sticker.png' if result[1] else 'sticker.webp'
|
||||||
open('downloads/' + filename, 'wb').write(result[0].getbuffer())
|
with open('downloads/' + filename, 'wb') as f:
|
||||||
|
f.write(result[0].getbuffer())
|
||||||
coro = False
|
coro = False
|
||||||
else:
|
else:
|
||||||
filename = 'photo.jpg'
|
filename = 'photo.jpg'
|
||||||
|
|||||||
@@ -24,14 +24,14 @@ from utils.misc import modules_help, prefix
|
|||||||
|
|
||||||
@Client.on_message(filters.command('setthumb', prefix) & filters.me)
|
@Client.on_message(filters.command('setthumb', prefix) & filters.me)
|
||||||
async def setthumb(_, message: Message):
|
async def setthumb(_, message: Message):
|
||||||
THUMB_PATH = 'downloads/thumb'
|
thumb_path = 'downloads/thumb'
|
||||||
if message.reply_to_message:
|
if message.reply_to_message:
|
||||||
if not os.path.exists(THUMB_PATH):
|
if not os.path.exists(thumb_path):
|
||||||
os.makedirs(THUMB_PATH)
|
os.makedirs(thumb_path)
|
||||||
new_thumb = await message.reply_to_message.download()
|
new_thumb = await message.reply_to_message.download()
|
||||||
with Image.open(new_thumb) as img:
|
with Image.open(new_thumb) as img:
|
||||||
if img.format in ['PNG', 'JPG', 'JPEG']:
|
if img.format in ['PNG', 'JPG', 'JPEG']:
|
||||||
new_path = os.path.join(THUMB_PATH, 'thumb.jpg')
|
new_path = os.path.join(thumb_path, 'thumb.jpg')
|
||||||
os.rename(new_thumb, new_path)
|
os.rename(new_thumb, new_path)
|
||||||
await message.edit_text('Thumbnail set successfully!')
|
await message.edit_text('Thumbnail set successfully!')
|
||||||
else:
|
else:
|
||||||
|
|||||||
+4
-2
@@ -48,7 +48,8 @@ async def scan_my_file(_, message: Message):
|
|||||||
|
|
||||||
url = 'https://www.virustotal.com/vtapi/v2/file/scan'
|
url = 'https://www.virustotal.com/vtapi/v2/file/scan'
|
||||||
params = {'apikey': vak}
|
params = {'apikey': vak}
|
||||||
files = {'file': (downloaded_file_name, open(downloaded_file_name, 'rb'))}
|
with open(downloaded_file_name, 'rb') as f:
|
||||||
|
files = {'file': (downloaded_file_name, f)}
|
||||||
response = requests.post(url, files=files, params=params, timeout=10)
|
response = requests.post(url, files=files, params=params, timeout=10)
|
||||||
try:
|
try:
|
||||||
r_json = response.json()
|
r_json = response.json()
|
||||||
@@ -104,7 +105,8 @@ async def scan_my_large_file(_, message: Message):
|
|||||||
|
|
||||||
url = upl_data
|
url = upl_data
|
||||||
|
|
||||||
files = {'file': (downloaded_file_name, open(downloaded_file_name, 'rb'))}
|
with open(downloaded_file_name, 'rb') as f:
|
||||||
|
files = {'file': (downloaded_file_name, f)}
|
||||||
headers = {'accept': 'application/json', 'x-apikey': vak}
|
headers = {'accept': 'application/json', 'x-apikey': vak}
|
||||||
response = requests.post(url, files=files, headers=headers, timeout=10)
|
response = requests.post(url, files=files, headers=headers, timeout=10)
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -23,7 +23,7 @@ from pyrogram.handlers import MessageHandler
|
|||||||
|
|
||||||
|
|
||||||
class _TrueFilter(filters.Filter):
|
class _TrueFilter(filters.Filter):
|
||||||
async def __call__(self, client: Client, update: types.Message):
|
async def __call__(self, _client: Client, _update: types.Message):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -149,7 +149,7 @@ class SqliteDatabase(Database):
|
|||||||
self._lock.release()
|
self._lock.release()
|
||||||
|
|
||||||
def get(self, module: str, variable: str, default=None):
|
def get(self, module: str, variable: str, default=None):
|
||||||
sql = f"SELECT * FROM '{module}' WHERE var=?"
|
sql = f"SELECT * FROM '{module}' WHERE var=?" # noqa: S608
|
||||||
cur = self._execute(module, sql, (variable,))
|
cur = self._execute(module, sql, (variable,))
|
||||||
|
|
||||||
row = cur.fetchone()
|
row = cur.fetchone()
|
||||||
@@ -162,7 +162,7 @@ class SqliteDatabase(Database):
|
|||||||
INSERT INTO '{module}' VALUES ( ?, ?, ? )
|
INSERT INTO '{module}' VALUES ( ?, ?, ? )
|
||||||
ON CONFLICT (var) DO
|
ON CONFLICT (var) DO
|
||||||
UPDATE SET val=?, type=? WHERE var=?
|
UPDATE SET val=?, type=? WHERE var=?
|
||||||
"""
|
""" # noqa: S608
|
||||||
|
|
||||||
if isinstance(value, bool):
|
if isinstance(value, bool):
|
||||||
val = '1' if value else '0'
|
val = '1' if value else '0'
|
||||||
@@ -183,7 +183,7 @@ class SqliteDatabase(Database):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
def remove(self, module: str, variable: str):
|
def remove(self, module: str, variable: str):
|
||||||
sql = f"DELETE FROM '{module}' WHERE var=?"
|
sql = f"DELETE FROM '{module}' WHERE var=?" # noqa: S608
|
||||||
self._execute(module, sql, (variable,))
|
self._execute(module, sql, (variable,))
|
||||||
self._conn.commit()
|
self._conn.commit()
|
||||||
|
|
||||||
@@ -192,7 +192,7 @@ class SqliteDatabase(Database):
|
|||||||
if not re.match(pattern, module):
|
if not re.match(pattern, module):
|
||||||
raise ValueError(f'Invalid module name format: {module}')
|
raise ValueError(f'Invalid module name format: {module}')
|
||||||
|
|
||||||
sql = f"SELECT * FROM '{module}'"
|
sql = f"SELECT * FROM '{module}'" # noqa: S608
|
||||||
cur = self._execute(module, sql)
|
cur = self._execute(module, sql)
|
||||||
|
|
||||||
collection = {}
|
collection = {}
|
||||||
|
|||||||
+7
-7
@@ -138,14 +138,14 @@ async def paste(
|
|||||||
|
|
||||||
print(f'URL: {url} - Edit Code: {edit_code} - Time: {ftime}')
|
print(f'URL: {url} - Edit Code: {edit_code} - Time: {ftime}')
|
||||||
|
|
||||||
rallUrls = db.get('core.rentry', 'urls', default={'allUrls': {}})
|
rall_urls = db.get('core.rentry', 'urls', default={'allUrls': {}})
|
||||||
entry_id = str(uuid4())
|
entry_id = str(uuid4())
|
||||||
rallUrls['allUrls'][entry_id] = {
|
rall_urls['allUrls'][entry_id] = {
|
||||||
'url': short_url,
|
'url': short_url,
|
||||||
'edit_code': edit_code,
|
'edit_code': edit_code,
|
||||||
'time': ftime,
|
'time': ftime,
|
||||||
}
|
}
|
||||||
db.set('core.rentry', 'urls', rallUrls)
|
db.set('core.rentry', 'urls', rall_urls)
|
||||||
|
|
||||||
if return_edit:
|
if return_edit:
|
||||||
return (url, edit_code)
|
return (url, edit_code)
|
||||||
@@ -156,19 +156,19 @@ async def rentry_cleanup_job():
|
|||||||
"""Periodically checks and deletes rentry pastes older than 24 hours"""
|
"""Periodically checks and deletes rentry pastes older than 24 hours"""
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
rallUrls = db.get('core.rentry', 'urls', default={'allUrls': {}})
|
rall_urls = db.get('core.rentry', 'urls', default={'allUrls': {}})
|
||||||
now = datetime.now()
|
now = datetime.now()
|
||||||
deleted_count = 0
|
deleted_count = 0
|
||||||
error_count = 0
|
error_count = 0
|
||||||
|
|
||||||
for entry_id, entry in list(rallUrls['allUrls'].items()):
|
for entry_id, entry in list(rall_urls['allUrls'].items()):
|
||||||
url = entry['url']
|
url = entry['url']
|
||||||
entry_time = datetime.strptime(entry['time'], '%d %I:%M:%S %p %Y')
|
entry_time = datetime.strptime(entry['time'], '%d %I:%M:%S %p %Y')
|
||||||
|
|
||||||
if now - entry_time > timedelta(days=1):
|
if now - entry_time > timedelta(days=1):
|
||||||
try:
|
try:
|
||||||
delete(url, entry['edit_code'])
|
delete(url, entry['edit_code'])
|
||||||
del rallUrls['allUrls'][entry_id]
|
del rall_urls['allUrls'][entry_id]
|
||||||
deleted_count += 1
|
deleted_count += 1
|
||||||
print(f'[#] Deleted expired rentry paste: {url}')
|
print(f'[#] Deleted expired rentry paste: {url}')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@@ -179,7 +179,7 @@ async def rentry_cleanup_job():
|
|||||||
print(f'[*] Cleanup summary: {deleted_count} deleted, {error_count} failed')
|
print(f'[*] Cleanup summary: {deleted_count} deleted, {error_count} failed')
|
||||||
|
|
||||||
if deleted_count:
|
if deleted_count:
|
||||||
db.set('core.rentry', 'urls', rallUrls)
|
db.set('core.rentry', 'urls', rall_urls)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f'[!] Error in rentry cleanup job: {str(e)}')
|
print(f'[!] Error in rentry cleanup job: {str(e)}')
|
||||||
|
|||||||
Reference in New Issue
Block a user