【问题标题】:Remove role for offline members删除离线成员的角色
【发布时间】:2020-06-23 18:36:14
【问题描述】:

我需要一些帮助... 我一直在尝试让我的机器人 24/7 全天候搜索已离线且角色仍在他们身上的离线成员并将其删除 (机器人在 Heroku 服务器上运行)

我有这段代码用于使用游戏活动添加和删除某个角色。 我尝试使用 forEach() 函数,但我卡住了

client.on('presenceUpdate', (oldMember, newMember) => {
  const guild = newMember.guild;
  const playingRole = guild.roles.find(role => role.id === '671631357725638656');

  if (newMember.user.bot || oldMember.presence.status !== newMember.presence.status) return;

  const oldGame = oldMember.presence.game && [0, 1].includes(oldMember.presence.game.type) ? true : false;
  const newGame = newMember.presence.game && [0, 1].includes(newMember.presence.game.type) ? true : false;
   
   if (!oldGame && newGame) {         
    newMember.addRole(playingRole)
  } else if (oldGame && !newGame) {  
    newMember.removeRole(playingRole)
  } 
});

谢谢!

【问题讨论】:

    标签: discord.js


    【解决方案1】:

    Discord JS V12:

    Client.on("presenceUpdate", (oldPresence, newPresence) => { // We don't really need to use oldPresence here.
        if (newPresence.guild.id !== "GuildID") {return false}; // Did this because it will listen to presenceUpdate events from all guilds. You may remove this line if you'd like.
        const Role = newPresence.guild.roles.cache.get("RoleID"); // Finding the required role.
        if (!Role) {return console.error("No role found.")}; // If the role doesn't exist we return an error.
    
        if (newPresence.status == "offline") { // online - user is online; idle - user is AFK; offline - user is offline or invisible; dnd - user is in Do Not Disturb;
            newPresence.member.roles.remove(Role).catch(e => {console.error(e)}); // Removing the role since the user is offline.
        } else {
            newPresence.member.roles.add(Role).catch(e => {console.error(e)}); // Adding the role since the user is Online/Idle/Do Not Disturb
        };
    });
    

    Discord JS V11:

    Client.on("presenceUpdate", (oldGuildMember, newGuildMember) => {
        if (newGuildMember.guild.id !== "GuildID") {return false};
        const Role = newGuildMember.guild.roles.get("RoleID");
        if (!Role) {return console.error("No role found.")};
    
        if (newGuildMember.presence.status == "offline") {
            newGuildMember.removeRole(Role).catch(e => {console.error(e)});
        } else {
            newGuildMember.addRole(Role).catch(e => {console.error(e)});
        };
    });
    

    【讨论】:

    • 我已经编辑了括号,它就像一个魅力!非常感谢!
    猜你喜欢
    • 2021-11-03
    • 2021-10-08
    • 2021-06-16
    • 2020-11-03
    • 2019-04-22
    • 2021-10-01
    • 2012-02-19
    • 2018-07-27
    • 2016-08-01
    相关资源
    最近更新 更多