想要一个检测自定义状态并赋予此人不和谐角色的代码
Posted
技术标签:
【中文标题】想要一个检测自定义状态并赋予此人不和谐角色的代码【英文标题】:Want a code that detects custom status and gives the person a role on discord 【发布时间】:2021-09-29 21:16:44 【问题描述】:我正在尝试编写一个代码来搜索短语“.gg/RoundTable”的自定义状态,然后将赋予此人在我的服务器中具有的特定角色。 这是我到目前为止的代码,代码运行没有错误,但不会分配角色。
const Discord = require("discord.js")
const client = new Discord.Client()
const mySecret = process.env['TOKEN']
client.login(mySecret)
const roleID = 865801753462702090
client.on('presenceUpdate', async (oldPresence, newPresence) =>
const role = newPresence.guild.roles.cache.find(role => role.name === 'Pic Perms (.gg/RoundTable)');
const status = ".gg/RoundTable"
const member = newPresence.member
console.log(member.user.presence.activities[0].state)
if(member.presence.activities[0].state.includes(status))
return newPresence.member.roles.add(roleID)
else
if(member.roles.cache.has(roleID))
newPresence.member.roles.remove(roleID)
)
【问题讨论】:
考虑在roleID
周围加上引号 "
。这是为了帮助防止 JS 中的整数溢出。
【参考方案1】:
试试这个:
const Discord = require("discord.js");
const client = new Discord.Client();
const roleID = "851563088314105867";
client.on("presenceUpdate", async (_, newPresence) =>
const role = newPresence.guild.roles.cache.get(roleID);
const status = ".gg/RoundTable";
const member = newPresence.member;
if (member.presence.activities[0].state?.includes(status))
return newPresence.member.roles.add(role);
else
if (member.roles.cache.has(role))
newPresence.member.roles.remove(role);
);
client.login("your-token");
我建议您使用get()
在RoleManager.cache
中找到您的role
,因为您已经拥有roleID
,然后实际分配该角色而不是roleID
。注意我添加了一个optional chaining operator,因为如果用户没有自定义状态,.state
将是null
。
【讨论】:
以上是关于想要一个检测自定义状态并赋予此人不和谐角色的代码的主要内容,如果未能解决你的问题,请参考以下文章
我正在尝试让不和谐的机器人根据某人加入服务器后的时间赋予角色