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

Discord Webhook消息编辑请求返回400 (Bad Request) 问题问询

问题触发原因
  • 接口请求格式不匹配:Discord webhook消息编辑接口要求请求体为application/json格式,你当前使用urlencode编码的application/x-www-form-urlencoded格式提交,首次编辑时如果内容无特殊字符可能被兼容解析,后续内容出现换行、特殊符号时就会触发参数校验失败返回400。
  • 编码规则错误:你当前使用ascii编码请求内容,只要readme.txt中出现中文、emoji、特殊符号等非ASCII字符,就会出现编码异常或提交内容不符合要求,触发400错误。
  • 缺少速率限制逻辑:你的循环没有设置等待间隔,文件一旦出现变动会立即高频发起请求,很容易触发Discord webhook的速率限制规则,导致请求被拦截。

注:Discord官方不存在单条webhook消息仅允许编辑一次的规则,该猜测不成立。

解决方案

修改请求格式、编码逻辑,增加间隔等待和异常捕获即可解决问题,修改后的参考代码如下:

from urllib import request
import json
import time

# 初始化读取文件内容
text = open('readme.txt', encoding='utf-8').read()
msg_url = '你的实际消息URL'

while True:
    # 每次循环等待2秒,避免占用过高资源同时防止触发速率限制,可根据需求调整间隔时长
    time.sleep(2)
    current_text = open('readme.txt', encoding='utf-8').read()
    if text != current_text:
        text = current_text
        try:
            # 构造JSON格式请求体
            data = json.dumps({'content': text}).encode('utf-8')
            # 构造请求,指定正确的Content-Type请求头
            req = request.Request(
                msg_url,
                data=data,
                headers={
                    'User-Agent': 'Python-Discord Interface',
                    'Content-Type': 'application/json'
                },
                method='PATCH'
            )
            request.urlopen(req)
        except Exception as e:
            # 调试阶段可打开下方注释打印错误信息排查问题
            # print(f"请求出错:{e}")
            pass

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:24:02