Discord Py Ошибка атрибута при попытке получить конец URL-адреса

#python #discord.py

#python #discord.py

Вопрос:

Ниже приведен мой код для сохранения пользовательского pfp, как бы мне ни надоело, что он сохраняется только в формате png, поэтому я решил добавить проверку, заканчивается ли URL-адрес аватара gif, однако он просто выдает ошибку «объект ‘Asset’ не имеет атрибута ‘endswith'» что я делаю не так?

 @bot.command()
@commands.check(Owner)
async def avs(ctx, member: discord.Member = None):
    member = ctx.author if not member else member
    if member.avatar_url.endswith('.gif'):
        await member.avatar_url_as(format="gif").save(fp=f"{member}.gif")
        await ctx.send(f"Saved pfp of {member}")
    else:
        await member.avatar_url_as(format="png").save(fp=f"{member}.png")
        await ctx.send(f"Saved pfp of {member}")
 

Ответ №1:

Member.avatar_url возвращает discord.Asset экземпляр, вы можете преобразовать его в строку, чтобы получить URL-адрес ресурса.

 if str(member.avatar_url).endswith('.gif'):
 

Ссылка:

Комментарии:

1. Это устраняет ошибку, но запуск cmd дает мне png, несмотря на то, что в настоящее время имеется pfp в формате gif. Спасибо вам за помощь! я посмотрю ссылки и посмотрю, смогу ли я что-нибудь найти

2. Попробуйте распечатать URL-адрес, возможно, он не заканчивается .gif . Не забудьте принять ответ, если это помогло

3. после печати URL-адреса кажется, что я неправильно просматривал ссылки, поскольку он заканчивается размером изображения, а не .gif или .png, который предшествует размеру изображения. Еще раз спасибо за вашу помощь, я принял ответ!

Ответ №2:

Я думаю, вам нужно сначала преобразовать URL-адрес в строку

 @bot.command()
@commands.check(Owner)
async def avs(ctx, member: discord.Member = None):
    member = ctx.author if not member else member
    if str(member.avatar_url).endswith('.gif'):    # Here card the url to str
        await member.avatar_url_as(format="gif").save(fp=f"{member}.gif")
        await ctx.send(f"Saved pfp of {member}")
    else:
        await member.avatar_url_as(format="png").save(fp=f"{member}.png")
        await ctx.send(f"Saved pfp of {member}")