You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

启动Discord Bot报错'str' object has no attribute 'url' 如何解决

报错原因

触发AttributeError: 'str' object has no attribute 'url'的核心原因是member.avatar属性的使用不符合discord.py的规则:

  • 在discord.py 1.x版本中,member.avatar返回值是用户头像的hash字符串,本身不是带url属性的Asset对象,直接访问.url就会抛出该错误
  • 就算升级到discord.py 2.x版本,member.avatar仅在用户设置了自定义头像时才是Asset对象,用户使用默认头像时该值为None,依然会触发属性报错

除此之外原代码还存在3处会导致运行异常的问题:

  • 初始化文件对象时命名冲突:file = file(fp=...)写法会覆盖类名,触发运行时错误
  • 欢迎消息的粗体Markdown未闭合,会导致格式渲染异常
  • 未判断系统频道是否存在,部分未设置系统频道的服务器会触发NoneType调用错误
修复方案

按以下规则修改代码即可:

  1. 替换头像属性为member.display_avatar,discord.py 2.0+版本中该属性永远返回有效的头像Asset对象,自动适配用户自定义头像、服务器专属头像、默认头像,不会出现空值或字符串返回值
  2. 修正File类的初始化写法,使用discord.File类创建文件对象,避免变量名冲突
  3. 补全Markdown粗体的闭合标记
  4. 增加系统频道的非空判断

修复后的完整可运行代码:

import discord
# 请提前导入你用到的Editor、Font、load_image_async依赖

async def on_member_join(member):
    channel = member.guild.system_channel
    # 无系统频道直接终止逻辑
    if not channel:
        return

    background = Editor("sfondo.jpg")
    # 替换为display_avatar访问稳定的头像地址
    profile_image = await load_image_async(str(member.display_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 TO {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初始化逻辑
    file = discord.File(fp=background.image_bytes, filename="welcome.jpg")
    # 补全粗体闭合标记
    await channel.send(f"Hello {member.mention}! Welcome to **{member.guild.name}**")
    await channel.send(file=file)

注意:请确保你已经在Discord开发者后台开启了Server Members Intent权限,同时在机器人初始化代码中配置了对应intents,否则on_member_join事件不会正常触发。

内容的提问来源于stack exchange,提问作者NeM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 12:57:16