I wrote the level command for the bot in discord using the libraries: disnake and pillow. And I faced a problem.
@commands.slash_command(name="level", description="Посмотреть свой уровень.")
async def level(self, interaction, member: disnake.Member = None):
if member is None:
member = interaction.author
await interaction.response.defer(ephemeral=False)
self.c.execute("SELECT exp FROM exp WHERE user_id =?", (member.id,))
result = self.c.fetchone()
exp = result[0]
self.c.execute("SELECT cash FROM exp WHERE user_id =?", (member.id,))
result = self.c.fetchone()
cash = result[0]
img = Image.open(r'img/profile1.png')
idraw = ImageDraw.Draw(img)
member_name = self.truncate(member.display_name)
idraw.text((133, 267), member_name, font=ImageFont.truetype(r'OpenSans.ttf', size=32))
idraw.text((516, 309), str(exp // 200), font=ImageFont.truetype(r'OpenSans.ttf', size=65))
idraw.text((516, 100), str(cash), font=ImageFont.truetype(r'OpenSans.ttf', size=65))
experience_needed = int(200 - exp // 200)
progress = exp / experience_needed
progress_width = int(295.5 * progress)
progress_height = 20
progress_color = (55, 99, 255)
progress_position = (404, 419)
border_radius = 20
if progress_position[0] + progress_width >= 695:
progress_position = (404, 419)
idraw.rounded_rectangle([(progress_position[0], progress_position[1]), (progress_position[0] + progress_width, progress_position[1] + progress_height)], fill=progress_color, radius=border_radius)
# idraw.text((690, 114), "XP: " + str(self.database.execute("experience","users","id",member.id)) + " / " + str(experience_needed), font = ImageFont.truetype(r'Comfortaa.ttf', size = 26))
# idraw.text((690, 309), "Баланс: " + str(self.database.execute("balance", "users", "id", member.id)), font=ImageFont.truetype(r'Comfortaa.ttf', size=28))
url = str(member.avatar.url)[:-10]
avatar = requests.get(url, stream=True)
avatar = Image.open(io.BytesIO(avatar.content))
mask = Image.new('L', avatar.size, 0)
mask_draw = ImageDraw.Draw(mask)
mask_draw.ellipse((0, 0, avatar.size[0], avatar.size[1]), fill=255)
avatar = ImageOps.fit(avatar, mask.size, centering=(0.5, 0.5))
avatar.putalpha(mask)
avatar = avatar.convert('RGBA')
avatar = avatar.resize((150, 150))
img.paste(avatar, (111, 99), avatar)
img.save(r'img/profilek.png')
await interaction.edit_original_response(file=disnake.File(f"img/profilek.png"))
I've tried a lot of things, starting with replacing coordinates and ending with lines
if progress_position[0] + progress_width >= 695:
progress_position = (404, 419)
I will be very grateful if you help me.Thanks in advance!