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

Pycord机器人通过urllib下载Discord用户Banner时出现403 Forbidden错误的排查与解决求助

Pycord机器人通过urllib下载Discord用户Banner时出现403 Forbidden错误的排查与解决求助

大家好,我最近在用Pycord开发Discord机器人时遇到了一个棘手的问题,想请各位帮忙分析解决。

我的机器人连接着MySQL数据库,其中有个/profile命令的功能是根据用户ID从数据库中取出对应的Banner URL,然后把图片下载到本地存储。但每次执行到下载步骤时,都会触发urllib.error.HTTPError或urllib.error.URLError,错误码是403 Forbidden。

我已经做过的排查:

  • 确认MySQL数据库连接正常,能成功查询并获取到正确的Banner URL;
  • 机器人的其他命令和功能都能正常运行,没有异常;
  • 手动验证过从数据库拿到的URL,直接在浏览器中打开可以正常显示Banner图片。

相关代码片段:

@commands.slash_command(name="profile", description="Fetch user data")
async def profile(self, interaction: discord.Interaction, user: discord.User):
    cursor.execute("SELECT banner_url FROM user_ui WHERE user_id = %s", (user.id,))
    result = cursor.fetchone()
    now = datetime.datetime.now()  # 该变量暂未使用,仅保留原代码内容
    
    if result:
        print(result)
        url = result[0]
        full_path = "assets/banner.jpg"
        urllib.request.urlretrieve(url, full_path)
        banner = "assets/banner.jpg"

报错信息:

0.09 13:49:59 [Bot] discord.errors.ApplicationCommandInvokeError: Application Command raised an exception: HTTPError: HTTP Error 403: Forbidden

我猜测问题可能出在图片下载的实现方式上,但具体原因和解决方法不太清楚。想请教各位:

  1. 为什么使用urllib.request.urlretrieve下载Discord Banner图片会返回403错误?
  2. 应该如何修改代码来解决这个问题?
  3. 我的代码还有哪些可以优化或修正的地方?

备注:内容来源于stack exchange,提问作者Karo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 13:25:32