diff --git a/list.json b/list.json index 0fc5cb9..61020ad 100644 --- a/list.json +++ b/list.json @@ -322,10 +322,10 @@ }, { "name": "stickertopic", - "version": "1.0", + "version": "1.1", "section": "chat", "maintainer": "TNTcraftHIM", - "size": "3.6 kb", + "size": "3.5 kb", "supported": true, "des-short": "贴纸转图片", "des": "把别人发的贴纸转换成图片(只支持静态)。命令:pic。" diff --git a/stickertopic.py b/stickertopic.py index 8715d15..b837ccd 100644 --- a/stickertopic.py +++ b/stickertopic.py @@ -11,22 +11,37 @@ from random import random @listener(outgoing=True, command="pic", - description="将你回复的静态贴纸转换为图片") + description="将你回复的静态贴纸转换为图片", parameters="(是否发送原图,默认为n)") async def stickertopic(context): + try: + if len(context.parameter) >= 1: + if context.parameter[0][0].lower()=="y": + as_file=True + elif context.parameter[0][0].lower()=="n": + as_file=False + elif not context.parameter[0]: + as_file=False + else: + raise IndexError + else: + as_file=False + except: + await context.edit("出错了呜呜呜 ~ 无效的参数。") + return user = await bot.get_me() if not user.username: user.username = user.first_name message = await context.get_reply_message() custom_emoji = False animated = False - await context.edit("开始转换...\n███30%") + await context.edit("开始转换...\n0%") if message and message.media: if isinstance(message.media, MessageMediaPhoto): photo = BytesIO() photo = await bot.download_media(message.photo, photo) elif "image" in message.media.document.mime_type.split('/'): photo = BytesIO() - await context.edit("正在转换...\n██████60%") + await context.edit("正在转换...\n████40%") await bot.download_file(message.media.document, photo) if (DocumentAttributeFilename(file_name='sticker.webp') in message.media.document.attributes): @@ -62,9 +77,9 @@ async def stickertopic(context): return if not animated: - await context.edit("正在转换...\n█████████90%") - image = await resize_image(photo) - filename = "sticker"+str(random())+".png" + await context.edit("正在转换...\n███████70%") + image = Image.open(photo) + filename = "sticker"+str(random())[2:]+".png" image.save(filename, "PNG") else: await context.edit("出错了呜呜呜 ~ 目标不是**静态**贴纸 。") @@ -72,7 +87,7 @@ async def stickertopic(context): await context.delete() return await context.edit("正在上传...\n██████████99%") - await bot.send_file(context.chat_id,filename) + await bot.send_file(context.chat_id,filename, force_document=as_file) try: await context.delete() except: @@ -85,26 +100,3 @@ async def stickertopic(context): remove("AnimatedSticker.tgs") except: pass - -async def resize_image(photo): - image = Image.open(photo) - maxsize = (512, 512) - if (image.width and image.height) < 512: - size1 = image.width - size2 = image.height - if image.width > image.height: - scale = 512 / size1 - size1new = 512 - size2new = size2 * scale - else: - scale = 512 / size2 - size1new = size1 * scale - size2new = 512 - size1new = floor(size1new) - size2new = floor(size2new) - size_new = (size1new, size2new) - image = image.resize(size_new) - else: - image.thumbnail(maxsize) - - return image