Хотел сделать обводку изображение(аватарки). Цвет должен меняться соответственно статусу пользователя. Онлайн - зеленый, офлайн - серый и т. д. Я сделал такую проверку:
if user.status == "online":
color = str("#43b581")
elif user.status == "offline" or "invisible":
color = str("#747f8d")
elif user.status == "idle":
color = str("#faa51b")
elif user.status == "dnd" or "do_not_disturb":
color = str("#f04848")
print(color)
background.ellipse((42, 42), width=206, height=206, outline=f"{color}", stroke_width=10)
но почему-то не работает, но я себе в консоль вывожу переменную, где храню цвет, то все отлично. Если кто-то видет здесь буду рад услышать от вас замечание. Библиотека
Easy-Pilow
Польный ко команды:
@commands.command()
async def rank(self,ctx, user: discord.Member = None):
with open('users.json','r')as f:
users = json.load(f)
if user is None:
if not str(ctx.author.id) in users:
users[str(ctx.author.id)] = {}
users[str(ctx.author.id)]['experience'] = 0
users[str(ctx.author.id)]['level'] = 1
users[str(ctx.author.id)]['LastMessage'] = await self.to_integer(datetime.now())
user = ctx.author
lvl = int(users[str(ctx.author.id)]['level'])
procent = int((users[str(user.id)]['experience']/int(5 * (lvl ** 2) + (50 * lvl) + 100))*100)
print(procent)
user_data = { # Most likely coming from database or calculation
"name": f"{user.name}", # The user's name
"xp": f"{int(users[str(user.id)]['experience'])}",
"next_level_xp": f"{int(5 * (lvl ** 2) + (50 * lvl) + 100)}",
"level": f"{lvl}",
"percentage": procent,
"rank": 10,
}
background = easy_pil.Editor(easy_pil.Canvas((932, 282), "#23272a"))
profile_image = easy_pil.utils.load_image(str(ctx.author.avatar_url))
profile = easy_pil.Editor(profile_image).resize((190, 190)).circle_image()
poppins = easy_pil.Font.montserrat(size=30)
background.rectangle((20, 20), 894, 242, "#2a2e35")
background.paste(profile, (50, 50))
if user.status == "online":
color = str("#43b581")
elif user.status == "offline" or "invisible":
color = str("#747f8d")
elif user.status == "idle":
color = str("#faa51b")
elif user.status == "dnd" or "do_not_disturb":
color = str("#f04848")
print(color)
background.ellipse((42, 42), width=206, height=206, outline=f"{color}", stroke_width=10)
background.rectangle((260, 180), width=630, height=40, fill="#484b4e", radius=20)
print(user.status)
background.bar(
(260, 180),
max_width=630,
height=40,
percentage = user_data["percentage"],
fill="#00fa81",
radius=20,
)
background.text((270, 120), f"{user.name}#{user.discriminator}", font=poppins, color="#00fa81")
background.text(
(870, 125),
f"{user_data['xp']} / {user_data['next_level_xp']}",
font=poppins,
color="#00fa81",
align="right",
)
rank_level_texts = [
easy_pil.Text("Ранг ", color="#00fa81", font=poppins),
easy_pil.Text(f"{user_data['rank']}", color="#1EAAFF", font=poppins),
easy_pil.Text(" Рівень ", color="#00fa81", font=poppins),
easy_pil.Text(f"{user_data['level']}", color="#1EAAFF", font=poppins),
]
background.multicolor_text((850, 30), texts=rank_level_texts, align="right")
background.save("card.png")
await ctx.send(file = discord.File(fp = "card.png"))