Не могу понять как правильно реализовать изображение-карту игрока
Хочу реализовать карту игрока чтобы бот сам рисовал её через pillow. Возникает ошибка.. Помогите исправить код чтобы он был рабочим
@client.command(pass_context = True)
async def card(ctx):
await ctx.channel.purge(limit = 1)
img = Image.new('RGBA', (400, 200), '#232529')
url = str(ctx.author.avatar_url)[:-10]
response = requests.get(url, stream = True)
response = Image.open(io.BytesIO(response.content))
response = response.convert('RGBA')
response = response((100, 100), Image.ANTIALIS)
img.paste(response, (15, 15, 115, 115))
idraw = ImageDraw.Draw(img)
name = ctx.author.name
tag = ctx.author.descriminator
headline = ImageFont.truetype('arial.ttf', size = 20)
undertext = ImageFont.truetype('arial.ttf', size = 12)
idraw.text((145, 15), f'{name}#{tag}', font = headline)
idraw.text((145, 50), f'ID: {ctx.author.id}', font = undertext)
img.save('user_card.png')
await ctx.send(file = discord.File(fp = 'user_card.png'))
Ошибка:
Command raised an exception: UnidentifiedImageError: cannot identify image file <_io.BytesIO object at 0x045CF7F8>
Ответы (1 шт):
Автор решения: denisnumb
→ Ссылка
Мне кажется проблема в том, что у вас в коде много опечаток :)
Вот что я нашел
- ANTIALIS → ANTIALIAS
- response((100, 100), Image.ANTIALIS) → response.resize()
- descriminator → discriminator
Может еще что упомянуть забыл, но есть еще пара замечаний:
url = str(ctx.author.avatar_url)[:-10]- не совсем понял, зачем вам тут[:-10], так как и без этого все хорошо работает@client.command(pass_context = True)- в новых версиях команд дискорда, нет необходимости указыватьpass_context. Достаточно просто скобок послеcommand
Немного переделал код, вроде работает:
import discord
from discord.ext import commands
from PIL import ImageDraw, ImageFont, Image
import requests
import io
TOKEN = 'TOKENTOKENTOKENTOKENTOKENTOKENTOKENTOKENTOKENTOKEN'
client = commands.Bot(command_prefix='!')
@client.command()
async def card(ctx):
img = Image.new('RGBA', (400, 200), '#232529')
url = str(ctx.author.avatar_url)
response = requests.get(url, stream = True)
response = Image.open(io.BytesIO(response.content))
response = response.convert('RGBA')
response = response.resize((100, 100), Image.ANTIALIAS)
img.paste(response, (15, 15, 115, 115))
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 = 12)
idraw.text((145, 15), f'{name}#{tag}', font = headline)
idraw.text((145, 50), f'ID: {ctx.author.id}', font = undertext)
img.save('user_card.png')
await ctx.send(file = discord.File(fp = 'user_card.png'))
client.run(TOKEN)
Результат:
