discord.js - 删除离线成员的角色
问题描述
我需要一些帮助...我一直在尝试让我的机器人 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)
}
});
谢谢!
解决方案
不和谐 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
};
});
不和谐 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)});
};
});
推荐阅读
- python - 如何将自定义异常抛出到正在运行的任务中
- python - 如何根据列表中每个子项的长度制作布尔掩码?或者我如何过滤掉所有长于 x 的字符串?
- python-3.x - 使用两个 y 轴时如何避免图例重叠?
- android - Android 管理 API 是否支持自定义 DPC 应用程序?
- collections - 在 squeak(Smalltalk) 中的集合是唯一的或不同的
- java - 如何继承功能以减少枚举中的重复代码?
- cron - 在 presta cPanel 上使用 CRON 从服务器导入 XML
- java - 条码扫描仪使用 ML Kit 仅读取 QR 码
- c++ - 如何从 boost beast http_parser 获取 http 请求正文?
- php - WordPress 地址 (URL) 和站点地址 (URL) 灰显