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

技术问询:能否列出特定日期前后或当天加入服务器的成员?

如何列出特定日期范围内加入服务器的成员

当然可以实现这个功能,不同类型的服务器(比如Discord、Minecraft等)有不同的操作方案,以下是常见场景的具体实现方式:

Discord 服务器

自行开发机器人实现

通过Discord API获取成员的joined_at时间字段,与目标日期对比后筛选:

  • 先将目标日期转换为UTC时间戳(例如2024-05-20对应的起始时间戳)
  • 遍历服务器所有成员,提取每个成员的joined_at时间
  • 根据需求筛选:
    • 特定日期之前:joined_at早于目标日期的0点UTC时间
    • 特定日期之后:joined_at晚于目标日期的23:59:59 UTC时间
    • 当天加入:joined_at的日期部分与目标日期完全匹配

示例代码片段(基于discord.py库):

import discord
from datetime import datetime

@client.command()
async def filter_members(ctx, target_date: str, filter_type: str):
    # 解析目标日期为UTC时间
    parsed_date = datetime.strptime(target_date, "%Y-%m-%d").replace(tzinfo=datetime.timezone.utc)
    filtered = []
    for member in ctx.guild.members:
        if not member.joined_at:
            continue
        if filter_type == "before":
            if member.joined_at < parsed_date:
                filtered.append(member.display_name)
        elif filter_type == "after":
            # 取目标日期的23:59:59作为截止时间
            end_date = parsed_date.replace(hour=23, minute=59, second=59)
            if member.joined_at > end_date:
                filtered.append(member.display_name)
        elif filter_type == "on":
            if member.joined_at.date() == parsed_date.date():
                filtered.append(member.display_name)
    await ctx.send(f"符合条件的成员:\n{', '.join(filtered) if filtered else '无'}")

使用现有管理机器人

多数Discord管理机器人(如Carl-bot、MEE6)自带成员筛选功能:

  • 打开机器人的管理面板,找到「成员统计」或「筛选」模块
  • 输入目标日期,选择筛选条件(之前/之后/当天),即可生成对应成员列表

Minecraft 服务器

借助插件实现

使用Spigot/Bukkit生态的插件(如AdvancedBan或自定义开发的小型插件):

  • 登录服务器后台,打开插件控制台
  • 执行插件提供的筛选命令,例如自定义插件的/listjoined <date> <filter>,其中<filter>可选before/after/on

直接查询数据文件

服务器的usercache.json文件中存储了玩家的firstJoined时间戳,可通过脚本或手动提取对比:

  • 导出usercache.json文件
  • 编写简单脚本(如Python)解析时间戳,筛选符合日期条件的玩家名称

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:56:02