@bot.command(aliases = ['карта', 'левел', 'уровень'])
async def stats(ctx):
await ctx.channel.purge(limit=1)
img = Image.new('RGBA', (400, 220), '#232529')
url = str(ctx.author.avatar_url)[:-10]
response = requests.get(url, stream = True)
try:
response = Image.open(io.BytesIO(response.content))
response = response.convert('RGBA')
response = response.resize((90, 90), Image.ANTIALIAS)
img.paste(response, (17, 17, 107, 107))
except:
response = requests.get('https://discord-server.com/images/discord-avatar-3.png', stream=True)
response = Image.open(io.BytesIO(response.content))
response = response.convert('RGBA')
response = response.resize((90, 90), Image.ANTIALIAS)
img.paste(response, (17, 17, 107, 107))
idraw = ImageDraw.Draw(img)
name = ctx.author.name
tag = ctx.author.discriminator
headline = ImageFont.truetype('arial.ttf', size=20)
undertext = ImageFont.truetype('arial.ttf', size=14)
sundertext = ImageFont.truetype('arial.ttf', size=10)
bigtext = ImageFont.truetype('arial.ttf', size=30)
mediumtext = ImageFont.truetype('arial.ttf', size=22)
name = ctx.author.name
for i in sql.execute(f"SELECT word FROM users WHERE id = '{name}'"):
level = i[0]
for i in sql.execute(f"SELECT word FROM users WHERE id = '{ctx.author.name}'"):
progress = i[0]
len_name = len(ctx.author.name)
number = (len(ctx.author.name)*15)+115
rank = RankEdit(ctx.author.name)
for i in sql.execute(f"SELECT rank FROM users WHERE id = '{name}'"):
exp = i[0]
idraw.text((135, 146), f'{rank[0]}', font=undertext)#, fill= (63, 68, 71)
idraw.text((345, 155), f'/{config.Exp(exp)}', font=undertext, fill= (63, 68, 71))
idraw.text((exp_print(ctx.author.name), 150), f'{progress}', font=headline, fill=(63, 68, 71))
response = requests.get(f'{rank[1]}', stream = True)
response = Image.open(io.BytesIO(response.content))
response = response.convert('RGBA')
response = response.resize((100, 40), Image.ANTIALIAS)
img.paste(response, (25, 125, 125, 165))
#C:\py\Discord\bot\info\Ranks
for i in sql.execute(f"SELECT rank FROM users WHERE id = '{name}'"):
lvl = i[0]
idraw.text((115, 54), f'{name}', font=headline)
idraw.text((number, 64), f'#{tag}', font=sundertext, fill= (63, 68, 71))
#idraw.text((140, 50), f'ID: {ctx.author.id}', font=undertext)
#progress bar
idraw.line(((10, 175), (390, 175)), fill=(17, 17, 17), width=5)
idraw.line(((10, 175), (config.progressbar(progress, lvl), 175)), fill=(53, 68, 127), width=5)
img.save(r'C:\py\Discord bot\info\level.png')
await ctx.send(file = discord.File(fp = r'C:\py\Discord bot\info\level.png'))
Нам нужно из всего кода только это:
idraw.text((115, 54), f'{name}', font=headline) #Первое слово
idraw.text((number, 64), f'#{tag}', font=sundertext, fill= (63, 68, 71)) #Второе слово
Проблема в том что я не могу рассчитать точное расстояние где кончается первое слово. Мне нужно чтобы после первого слова было через 2 пикселя второе. Но я не могу совершенно понять как это сделать.
Первое слово бывает разным по длине. Может быть от 2 букв до 10.