Files
limoka/DziruModules/hikkamods/Among.py
2025-07-10 21:02:34 +03:00

91 lines
3.1 KiB
Python

#
#█▀▄ ▀█ █ █▀█ █░█  █▀▀ ▄▀█ █▄█
#█▄▀ █▄ █ █▀▄ █▄█  █▄█ █▀█ ░█░
# 🔒 Licensed under the GNU AGPLv3
# 🌐 https://www.gnu.org/licenses/agpl-3.0.html
# meta developer: @dziru
# meta pic: https://raw.githubusercontent.com/DziruModules/assets/master/DziruModules.jpg
# meta banner: https://raw.githubusercontent.com/DziruModules/assets/master/Among.png
# scope: hikka_min 1.5.0
# scope: hikka_only
# version: 1.0
from io import BytesIO
from random import randint
from secrets import choice
from textwrap import wrap
from .. import loader, utils
from PIL import Image, ImageDraw, ImageFont
from requests import get
class AmongMod(loader.Module):
"""Create AmongUs stickers"""
strings = {
"name": "Among",
}
async def amongcmd(self, message):
"""Type message or reply"""
clrs = {
"red": 1,
"lime": 2,
"green": 3,
"blue": 4,
"cyan": 5,
"brown": 6,
"purple": 7,
"pink": 8,
"orange": 9,
"yellow": 10,
"white": 11,
"black": 12,
}
clr = randint(1, 12)
text = utils.get_args_raw(message)
reply = await message.get_reply_message()
if text in clrs:
clr = clrs[text]
text = None
if not text:
if not reply:
await utils.answer(message, message.sender)
return
if not reply.text:
await utils.answer(message, reply.sender)
return
text = utils.get_args_raw(message)
if text.split(" ")[0] in clrs:
clr = clrs[text.split(" ")[0]]
text = " ".join(text.split(" ")[1:])
if text == "colors":
await message.edit(
("Cores disponíveis:\n" + "\n".join(f"• `{i}`" for i in list(clrs.keys())))
)
return
url = "https://raw.githubusercontent.com/KeyZenD/AmongUs/master/"
font = ImageFont.truetype(BytesIO(get(url + "bold.ttf").content), 60)
imposter = Image.open(BytesIO(get(f"{url}{clr}.png").content))
text_ = "\n".join("\n".join(wrap(part, 30)) for part in text.split("\n"))
w, h = ImageDraw.Draw(Image.new("RGB", (1, 1))).multiline_textsize(
text_, font, stroke_width=2
)
text = Image.new("RGBA", (w + 30, h + 30))
ImageDraw.Draw(text).multiline_text(
(15, 15), text_, "#FFF", font, stroke_width=2, stroke_fill="#000"
)
w = imposter.width + text.width + 10
h = max(imposter.height, text.height)
image = Image.new("RGBA", (w, h))
image.paste(imposter, (0, h - imposter.height), imposter)
image.paste(text, (w - text.width, 0), text)
image.thumbnail((512, 512))
output = BytesIO()
output.name = "dziru.webp"
image.save(output)
output.seek(0)
await message.delete()
await message.client.send_file(message.to_id, output, reply_to=reply)