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

Discord JS临时角色功能求助:/warn指令添加30分钟RedRole

临时角色自动移除功能实现方案

首先修正原代码中的核心问题:你把interaction.member.id(成员ID字符串)赋值给了user变量,导致无法调用roles.add方法——这个方法需要的是GuildMember对象,不是ID。

接下来添加30分钟自动移除角色的逻辑,用setTimeout实现定时任务,同时做好错误处理避免异常。

修正后的完整代码:

run: async (client, interaction, config, db) => {
    // 获取目标成员对象(这里假设是触发指令的成员,若要指定其他成员需调整逻辑)
    const targetMember = interaction.member;
    // 获取RedRole角色对象
    const RedRole = interaction.guild.roles.cache.get("1082652160057163866"); // Server-banned role

    // 检查角色是否存在
    if (!RedRole) {
        return interaction.reply({
            content: "RedRole角色不存在,请检查角色ID是否正确。❌",
            ephemeral: true
        });
    }

    try {
        // 添加角色
        await targetMember.roles.add(RedRole);
        await interaction.reply({
            content: "已为成员添加RedRole,30分钟后将自动移除。✅",
            ephemeral: true
        });

        // 30分钟后自动移除角色(30*60*1000 = 1800000毫秒)
        setTimeout(async () => {
            try {
                // 检查成员是否还在服务器,且角色仍存在
                if (targetMember.guild.members.cache.has(targetMember.id) && targetMember.roles.cache.has(RedRole.id)) {
                    await targetMember.roles.remove(RedRole);
                    // 可选:给成员发送通知(如果需要)
                    // await targetMember.send("你的RedRole已到期,已被移除。");
                }
            } catch (error) {
                console.error("移除RedRole时出错:", error);
            }
        }, 30 * 60 * 1000);
    } catch (error) {
        console.error("添加RedRole时出错:", error);
        await interaction.reply({
            content: "添加角色失败,请检查机器人权限。❌",
            ephemeral: true
        });
    }
},

关键说明:

  • 成员对象修正:直接使用interaction.member获取触发指令的成员对象,确保能调用roles相关方法。
  • 定时任务:用setTimeout设置30分钟后的执行逻辑,注意在异步操作中包裹try/catch捕获错误。
  • 安全检查:移除角色前先确认成员仍在服务器、角色仍存在,避免因成员离开或角色被删除导致的报错。
  • 错误处理:添加/移除角色的操作都做了异常捕获,方便排查权限或其他问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:03:25