Задача кода: При использовании команды бот берёт фотографию пользователя и накладывает на мою картинку и отправляет обратно
@bot.command()
async def wanted(ctx, user: discord.Member = None):
if user == None:
user = ctx.author
wanted = Image.open('mi_image.png')
avatar = user.avatar(size = 128)
avt = BytesIO(await avatar.read())
img = Image.open(avt)
img = img.resize((310, 310))
wanted.paste(img, (400, 260))
wanted.save("image.jpg")
await ctx.send(file = discord.File("image.jpg"))
выходит такая ошибка: Command raised an exception: TypeError: 'Asset' object is not callable
Ответы (1 шт):
Автор решения: eminsk
→ Ссылка
@bot.command()
async def wanted(ctx, user: discord.Member = None):
if user is None:
user = ctx.author
wanted = Image.open('mi_image.png')
avatar = user.display_avatar # или user.avatar, если ты уверен что он есть
avatar = avatar.with_size(128) # НЕ avatar(128)!
avt_bytes = BytesIO(await avatar.read())
img = Image.open(avt_bytes)
img = img.resize((310, 310))
wanted.paste(img, (400, 260))
wanted.save("image.jpg")
await ctx.send(file=discord.File("image.jpg"))
Ошибка говорит прямо на проблему: TypeError: 'Asset' object is not callable Это значит, что вот эта строка:
avatar = user.avatar(size = 128)
пытается вызвать объект Asset как функцию. В новых версиях discord.py user.avatar — это не функция, а свойство-объект (Asset), у которого есть методы, например .read(), .with_size(), но его нельзя писать как user.avatar(...).