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

如何使用Python增加Discord频道可检索的消息数量

Discord频道消息拉取数量调整方案

Discord 官方API对 GET /channels/{channel_id}/messages 接口的默认返回条数限制为50条,单次请求可通过 limit 参数最多调整为100条,若需要拉取超过100条的历史消息,需要通过 before 参数分页拉取。

调整方法

  • 单次拉取最多100条:直接在请求URL后加?limit=100参数即可
  • 拉取200条及以上:每次拉取后记录返回结果中最早一条消息的id,作为下一次请求的before参数值,循环拉取直到拿到目标数量的消息

修正后完整代码

import requests
import json

def retrieve_messages(channel_id, auth_token, target_count=200):
    headers = {'authorization': auth_token}
    all_messages = []
    last_message_id = None
    # 单次请求最多允许拉取100条
    limit_per_req = 100

    while len(all_messages) < target_count:
        url = f'https://discord.com/api/v9/channels/{channel_id}/messages?limit={limit_per_req}'
        # 非首次请求时追加before参数,拉取更早的历史消息
        if last_message_id:
            url += f'&before={last_message_id}'
        r = requests.get(url, headers=headers)
        batch = json.loads(r.text)
        # 已无更多历史消息时终止循环
        if not batch:
            break
        all_messages.extend(batch)
        # 更新最后一条消息ID,用于下一次分页定位
        last_message_id = batch[-1]['id']
    
    # 只返回目标数量的消息,避免拉取结果超出预期数量
    return all_messages[:target_count]

调用示例

# 替换为实际的频道ID、authorization值即可拉取200条消息
messages = retrieve_messages("你的频道ID", "你的authorization值", 200)

注意事项

  • 不要短时间频繁发起请求,避免触发Discord速率限制导致账号被限制访问
  • 原代码的函数参数存在笔误,已在上述代码中修正为规范参数名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:36:03