#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}")