Wolf_Yout
@Wolf_Yout

Pillow не сохраняет изображение, что делать?

Код:
@commands.slash_command(name="profile",description="Проверить свой профиль")
    async def profile(self, ctx, member: disnake.Member = None):
        await ctx.response.defer()
        if not member:
            member = ctx.author
        scopes = 0
        try:
            scopes = Memory.read(f"scope/{member.id}balls.txt")
        except:
            scopes = 0
        t = member.status
        if t == disnake.Status.online:
            d = " В сети"

        t = member.status
        if t == disnake.Status.offline:
            d = "⚪ Не в сети"

        t = member.status
        if t == disnake.Status.idle:
            d = " Не активен"

        t = member.status
        if t == disnake.Status.dnd:
            d = " Не беспокоить"

        img = Image.new('RGBA', (300, 150), '#232529')
        url = str(member.avatar.url)
        r = requests.get(url, stream = True)
        r = Image.open(io.BytesIO(r.content))
        r = r.convert('RGBA')
        r = r.resize((100, 100))
        img.paste(r, (15, 15, 115, 115))
        idraw = ImageDraw.Draw(img)
        name = member.name
        headline = ImageFont.truetype('comfortaa.ttf', size = 20)
        undertext = ImageFont.truetype('comfortaa.ttf', size = 12)
        idraw.text((145, 15), f'{name}', font=headline)
        idraw.text((145, 50), f'#{member.discriminator}', font=undertext)
        idraw.text((145, 70), f'ID: {member.id}', font = undertext)
        idraw.text((145, 90), f'Статус: {d}', font = undertext)
        idraw.text((145, 110), f"Кол-во очков: {scopes}", font = undertext)
        idraw.text((220, 135), f'0XB1 Draw\'s', font=undertext)
        img.save('user_card.png')
        await ctx.send(file=disnake.File("user_card.png"))

При использований команды, бот выдаёт сообщение о том что думает:
image.png
Но в консоли выводиться следующая ошибка:
Command raised an exception: OSError: cannot open resource

Как я понял, она от Disnake, т.к. изображения в директории ни какого не появилось.
В чём моя ошибка?
  • Вопрос задан
  • 160 просмотров
Решения вопроса 1
fenrir1121
@fenrir1121
Начни с документации
Как я понял, она от Disnake
Нет она от системы, в ошибке большими буквами написано OSError.
Если пойти еще дальше и сделать невозможное (перевести ошибку), окажется что проблема при открытии, а не сохранении, вероятнее всего на шрифтах.

бот выдаёт сообщение о том что думает
Он его выдает только потому что так работает команда await ctx.response.defer()

В чём моя ошибка?
В теге discord, в обрезании лога чтобы гадать при ответе, в написании бота прежде чем отдельно напишите и протестируете код.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект
21 нояб. 2024, в 22:21
3000 руб./в час