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

Discord bot比较joinedTimestamp判断入群满14天移除角色报错求解

错误原因

member.joinedTimestamp返回的是用户加入服务器时的Unix毫秒级时间戳(即距离1970年1月1日0点的总毫秒数),数值本身远大于14天对应的1209600000毫秒,你的逻辑没有计算加入时长的差值,判断条件完全错误,所以永远返回false。

修正后的代码
const guild = await client.guilds.fetch(ID);
const newbieRole = guild.roles.cache.find(r => r.name === "Newbies"); 
const TWO_WEEKS_MS = 1209600000;

// 遍历持有Newbies身份组的所有成员
newbieRole.members.forEach(async (member) => {
    // 计算用户已加入的总毫秒数
    const joinDurationMs = Date.now() - member.joinedTimestamp;
    if (joinDurationMs >= TWO_WEEKS_MS) {
        try {
            // 加入满14天,移除身份组
            await member.roles.remove(newbieRole);
            console.log(`已为用户${member.user.tag}移除Newbies身份组`);
        } catch (err) {
            console.error(`移除用户${member.user.tag}的身份组失败:`, err);
        }
    } else {
        console.log(`用户${member.user.tag}加入时长不足14天,暂不处理`);
    }
});
额外注意事项
  • 你需要在Discord开发者后台开启Bot的服务端成员意图(Server Members Intent),否则无法正常拉取身份组下的成员列表
  • 移除身份组的操作是异步请求,建议添加await和错误捕获逻辑,避免Bot权限不足、用户身份组已被移除等异常情况导致程序崩溃
  • 请确认你要匹配的身份组名称和代码中的Newbies完全一致,大小写、空格都不能有差异

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:06:00