Don't re-define functions in a loop

This commit is contained in:
blank X 2020-11-29 11:12:38 +07:00
parent 0508585194
commit af06deebc1
2 changed files with 34 additions and 32 deletions

View File

@ -8,6 +8,27 @@ from .. import config, help_dict, log_errors, session, slave, public_log_errors
help_text = '' help_text = ''
def _generate(i):
@Client.on_message(~filters.sticker & ~filters.via_bot & ~filters.edited & filters.me & filters.command(i, prefixes=config['config']['prefixes']))
@log_errors
@public_log_errors
async def func(client, message):
bot = await slave.get_me()
results = await client.get_inline_bot_results(bot.username or bot.id, i)
result = results.results[0]
to_reply = message
if not getattr(message.reply_to_message, 'empty', True):
to_reply = message.reply_to_message
if result.type == 'photo':
file = Photo._parse(client, result.photo)
else:
file = Animation._parse(client, result.document, result.document.attributes, 'hello.mp4')
try:
await to_reply.reply_cached_media(file.file_id, file.file_ref, caption=result.send_message.message, parse_mode=None)
except Forbidden:
await to_reply.reply_text(result.send_message.message, parse_mode=None)
return func
try: try:
resp = requests.get('https://nekos.life/api/v2/endpoints') resp = requests.get('https://nekos.life/api/v2/endpoints')
json = resp.json() json = resp.json()
@ -22,26 +43,6 @@ else:
i = i[1:-1] i = i[1:-1]
if 'v3' in i: if 'v3' in i:
continue continue
def _generate(i):
@Client.on_message(~filters.sticker & ~filters.via_bot & ~filters.edited & filters.me & filters.command(i, prefixes=config['config']['prefixes']))
@log_errors
@public_log_errors
async def func(client, message):
bot = await slave.get_me()
results = await client.get_inline_bot_results(bot.username or bot.id, i)
result = results.results[0]
to_reply = message
if not getattr(message.reply_to_message, 'empty', True):
to_reply = message.reply_to_message
if result.type == 'photo':
file = Photo._parse(client, result.photo)
else:
file = Animation._parse(client, result.document, result.document.attributes, 'hello.mp4')
try:
await to_reply.reply_cached_media(file.file_id, file.file_ref, caption=result.send_message.message, parse_mode=None)
except Forbidden:
await to_reply.reply_text(result.send_message.message, parse_mode=None)
return func
func = _generate(i) func = _generate(i)
globals()[i] = func globals()[i] = func
locals()[i] = func locals()[i] = func

View File

@ -5,6 +5,19 @@ from pyrogram import Client, filters
from pyrogram.types import InputTextMessageContent, InlineQueryResultArticle, InlineQueryResultPhoto, InlineQueryResultAnimation from pyrogram.types import InputTextMessageContent, InlineQueryResultArticle, InlineQueryResultPhoto, InlineQueryResultAnimation
from .. import log_errors, session, app_user_ids from .. import log_errors, session, app_user_ids
def _generate(i):
@Client.on_inline_query(filters.regex(f'^{i}$'))
@log_errors
async def func(client, inline_query):
if inline_query.from_user.id not in app_user_ids:
await inline_query.answer([InlineQueryResultArticle('...no', InputTextMessageContent('...no'))], cache_time=3600, is_personal=True)
return
async with session.get(f'https://nekos.life/api/v2/img/{i}') as resp:
url = (await resp.json())['url']
call = InlineQueryResultAnimation if '.gif' == os.path.splitext(url)[1] else InlineQueryResultPhoto
await inline_query.answer([call(url, caption=url, parse_mode=None)], cache_time=0)
return func
try: try:
resp = requests.get('https://nekos.life/api/v2/endpoints') resp = requests.get('https://nekos.life/api/v2/endpoints')
json = resp.json() json = resp.json()
@ -19,18 +32,6 @@ else:
i = i[1:-1] i = i[1:-1]
if 'v3' in i: if 'v3' in i:
continue continue
def _generate(i):
@Client.on_inline_query(filters.regex(f'^{i}$'))
@log_errors
async def func(client, inline_query):
if inline_query.from_user.id not in app_user_ids:
await inline_query.answer([InlineQueryResultArticle('...no', InputTextMessageContent('...no'))], cache_time=3600, is_personal=True)
return
async with session.get(f'https://nekos.life/api/v2/img/{i}') as resp:
url = (await resp.json())['url']
call = InlineQueryResultAnimation if '.gif' == os.path.splitext(url)[1] else InlineQueryResultPhoto
await inline_query.answer([call(url, caption=url, parse_mode=None)], cache_time=0)
return func
func = _generate(i) func = _generate(i)
globals()[i] = func globals()[i] = func
locals()[i] = func locals()[i] = func