From 6a31b7dde14b4431061a51265797978c42768f20 Mon Sep 17 00:00:00 2001 From: AAA <35992542+TNTcraftHIM@users.noreply.github.com> Date: Sun, 11 Oct 2020 21:35:57 +0800 Subject: [PATCH] =?UTF-8?q?stickertopic=20=E6=94=AF=E6=8C=81=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E5=8E=9F=E5=9B=BE=20(#62)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: TNTcraftHIM --- list.json | 4 ++-- stickertopic.py | 52 +++++++++++++++++++++---------------------------- 2 files changed, 24 insertions(+), 32 deletions(-) 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