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

如何获取所有处于Timeout状态成员的列表及其剩余时长?

获取Discord超时(Timeout)成员列表及剩余时长的实现思路

思路一:基于Discord官方SDK开发自定义脚本/机器人

这是最直接精准的方案,适合有基础开发能力的用户:

  • 遍历目标服务器所有成员:通过SDK提供的成员获取接口(比如discord.py的guild.members、discord.js的guild.members.fetch())拉取全量成员,注意必须开启机器人的「服务器成员意图」权限。
  • 筛选超时状态成员:检查每个成员的communication_disabled_until属性——如果该属性存在且对应的UTC时间晚于当前时间,说明成员正处于Timeout状态。
  • 计算剩余时长:用communication_disabled_until的时间减去当前UTC时间,得到的差值就是剩余超时时长,注意时区转换避免误差。

附一段discord.py的极简示例代码:

import discord
from datetime import datetime

# 配置机器人权限
intents = discord.Intents.default()
intents.members = True
client = discord.Client(intents=intents)

@client.event
async def on_ready():
    # 替换为你的服务器ID和机器人令牌
    target_guild = client.get_guild(1234567890)
    timeout_list = []
    
    for member in target_guild.members:
        if member.communication_disabled_until and member.communication_disabled_until > datetime.utcnow():
            remaining_time = member.communication_disabled_until - datetime.utcnow()
            timeout_list.append(f"{member.name}(ID:{member.id})剩余时长:{str(remaining_time)}")
    
    print("当前处于Timeout状态的成员:\n" + "\n".join(timeout_list))
    await client.close()

client.run("YOUR_BOT_TOKEN_HERE")

思路二:直接调用Discord REST API

如果不想用SDK,也可以直接通过HTTP请求实现:

  • 拉取服务器成员:调用GET /guilds/{guild_id}/members接口,通过limit和after参数分页获取全量成员(单页最多拉取1000个)。
  • 筛选并计算:对每个返回的成员对象,检查communication_disabled_until字段,若该字段存在且大于当前UTC时间,计算时间差得到剩余时长。
  • 注意:请求头必须携带Authorization: Bot 你的机器人令牌,且机器人需要拥有「服务器成员意图」权限。

思路三:利用服务器审核日志(手动/半自动化)

如果没有开发能力,适合小规模服务器临时使用:

  • 打开服务器设置的「审核日志」,筛选「更新成员」事件,找到包含「设置超时」操作的记录。
  • 对应记录里的成员就是被Timeout的用户,但审核日志不会显示剩余时长,需要手动进入成员资料页查看当前超时状态的剩余时间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 18:58:05