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

Python Discord机器人报错discord.errors.HTTPException:429及长HTML代码问题咨询

Discord机器人429错误及附带HTML代码问题解决

错误说明

  • discord.errors.HTTPException: 429 Too Many Requests是Discord API的限流触发了——你的机器人短时间内发送的请求数量超过了Discord允许的频率上限。
  • 那堆HTML代码是Discord返回的限流提示网页源码,里面的div、script、meta都是网页的基础结构标签,用来展示“请求过于频繁,请稍后再试”这类提示内容,本质是Discord服务器返回的错误页面,和你的机器人代码本身无关。

解决办法

  • 升级到最新版discord.py:这个库自带完善的限流重试机制,旧版本可能处理不彻底,更新后能自动应对大部分限流场景。
  • 手动控制请求频率:如果是你自己编写的批量操作(比如批量发消息、批量获取频道数据),要在请求之间加延迟,比如用asyncio.sleep(1)让机器人每发一次请求歇1秒,避免短时间内请求扎堆。
  • 严格遵守Discord限流规则:不同类型的API请求有不同的限制,比如普通消息发送是每5秒最多5条,批量操作要卡着这个节奏执行。
  • 捕获异常做针对性处理:不需要解析那堆HTML,直接捕获429异常即可,示例代码:
import discord
from discord.ext import commands
import asyncio

bot = commands.Bot(command_prefix='!', intents=discord.Intents.all())

@bot.command()
async def batch_send(ctx):
    try:
        # 模拟可能触发限流的批量操作
        for _ in range(15):
            await ctx.send("批量测试消息")
    except discord.errors.HTTPException as e:
        if e.status == 429:
            wait_time = e.response.headers.get('Retry-After')
            await ctx.send(f"请求太频繁了,请等{wait_time}秒再试")
            await asyncio.sleep(int(wait_time))
            # 可在此处重新执行批量操作

bot.run('你的机器人令牌')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 13:55:17