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

为什么在Heroku托管discord.py机器人时avatar_url属性无法正常工作

修复方案

1. requirements.txt需补充的内容

  • 修正discord.py的安装声明,追加可选依赖后缀避免核心组件缺失,将你现有requirements里的discord.py GitHub链接修改为如下格式:
    git+<discord.py仓库地址>.git#egg=discord.py[voice]
    
    不需要语音功能也可以省略[voice]标记,完整依赖可大幅降低属性拉取类偶发异常的概率。
  • 补充aiohttp版本约束,避免异步请求库版本不兼容导致头像资源拉取卡住、进程无响应:
    aiohttp>=3.8.1,<3.9.0
    
  • 补充python-dotenv依赖,用于正确读取Heroku配置的环境变量(机器人Token、权限开关等),避免参数缺失导致的进程挂起:
    python-dotenv==1.0.0
    

2. 需同步排查的非依赖问题

若补充依赖后问题仍然存在,可检查以下配置:

  • member.avatar_url是discord.py v1.x的废弃属性,v2.x版本中已替换为member.avatar.url,无自定义头像的成员还需要回退到默认头像地址,示例代码:
    avatar_url = member.avatar.url if member.avatar else member.default_avatar.url
    
  • 确认Discord开发者后台已经开启Server Members Intent和Message Content Intent,缺少这两个特权权限会导致机器人无法正常获取成员属性、读取用户回复,进而卡在等待响应的环节。
  • 等待用户回复的wait_for逻辑需添加超时参数,避免无用户回复时进程永久挂起,示例代码:
    try:
        reply = await bot.wait_for('message', check=check_func, timeout=30)
    except asyncio.TimeoutError:
        await ctx.send("等待超时,已取消本次操作")
        return
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:15:04