因此,我试图制造一个不和谐的机器人,它用定制的图像向进入服务器的用户发送欢迎信息。我试着在网上搜索,但没有找到任何答案。如果你知道解决这个问题的方法,请写。
这是我得到的错误:
Message='str' object has no attribute 'url'
Source="(filepath)"
StackTrace:
File "(filepath)", line 32, in on_member_join (Current frame)
profile_image = await load_image_async(str(member.avatar.url))
File "(filepath)", line 93, in <module>
bot.run('(bot_token)')这是我的代码:
import discord
from discord.ext import commands
from easy_pil import Editor, load_image_async, Font
bot = commands.Bot(command_prefix='!', intents = discord.Intents.all())
@bot.event
async def on_ready():
print('logged in problemless as {0.user}'.format(bot))
@bot.event
async def on_member_join(member):
channel = member.guild.system_channel
background = Editor("background.jpg")
profile_image = await load_image_async(str(member.avatar.url))
profile = Editor(profile_image).resize((150,150)).circle_image()
poppins = Font.poppins(size=50, variant="bold")
poppins_small = Font.poppins(size=20, variant ="light")
background.paste(profile, (325,90))
background.ellipse((325, 90), 150, 150, outline="white",stroke_width=5)
background.text((400, 260), f"Welcome {member.guild.name}", color="white", font=poppins, align="center")
background.text((400,325), f"{member.name}#{member.discriminator}", color="white", font=poppins_small,align="center")
file = discord.File(fp=background.image_bytes, filename="background.jpg")
await channel.send(f"Hello {member.mention}! Welcome To **{member.guild.name}**")
await channel.send(file=file)
bot.run('(token)')发布于 2022-09-26 21:15:53
代码中的member.avatar.url部分没有什么问题,只是缺少了一个if the user does not have an avatar, do:的条件,这就是错误报告的内容。
您可以通过包含如下条件的if条件来解决这个问题:
default_avatar = 'https://cdn.discordapp.com/embed/avatars/1.png'
profile_image = await load_image_async(member.avatar.url) if member.avatar else await load_image_async(default_avatar)或
default_avatar = 'https://cdn.discordapp.com/embed/avatars/1.png'
if member.avatar:
profile_image = await load_image_async(member.avatar.url)
else:
profile_image = await load_image_async(default_avatar)至于代码的图像编辑部分,我无法验证。
https://stackoverflow.com/questions/73815783
复制相似问题