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
我猜测问题可能出在图片下载的实现方式上,但具体原因和解决方法不太清楚。想请教各位:
- 为什么使用
urllib.request.urlretrieve下载Discord Banner图片会返回403错误? - 应该如何修改代码来解决这个问题?
- 我的代码还有哪些可以优化或修正的地方?
备注:内容来源于stack exchange,提问作者Karo
相关产品推荐
相关产品推荐

