Javascript 当有人在玩游戏时,如何自动赋予角色?V12不和谐js
我最近决定将我的discord js库升级到v12。 我想当有人开始打高尔夫(和你的朋友一起打高尔夫)时,他会得到一个角色。但我不能在discord js v12中编程。你能帮助我吗? 以下是我在v11中的代码:Javascript 当有人在玩游戏时,如何自动赋予角色?V12不和谐js,javascript,node.js,discord,discord.js,Javascript,Node.js,Discord,Discord.js,我最近决定将我的discord js库升级到v12。 我想当有人开始打高尔夫(和你的朋友一起打高尔夫)时,他会得到一个角色。但我不能在discord js v12中编程。你能帮助我吗? 以下是我在v11中的代码: bot.on("presenceUpdate", (oldMember, newMember) => { let guild = newMember.guild; let playRole = guild.roles.get("633
bot.on("presenceUpdate", (oldMember, newMember) => {
let guild = newMember.guild;
let playRole = guild.roles.get("633589794357641235");
if (!playRole) return;
if (newMember.user.presence.game && newMember.user.presence.game.name === "Golf With Your Friends") {
newMember.addRole(playRole);
}
});
以下是discordjs.guide中关于从v11更新到v12的指南: 您也可以在此处查看官方文件: 首先,他们将参数更新为
oldPresence
和newPresence
因此:
client.on(“presenceUpdate”(旧状态、新状态)=>{
//....
}
其次,他们将集合从guild.roles
更改为guild.roles.cache
:
constplayrole=guild.roles.cache.get(“633589794357641235”);
第三,if语句使用了newMember.user.presence
,现在它只是newPresence
,游戏已经被修改为活动
类,并且不再有.game
,因此您必须循环。活动
数组:
if(newPresence.find(e=>e.name==“与朋友一起打高尔夫”)){
//...
}
最后,他们将.addRole
移动到.roles.add
:
newPresence.member.roles.add(扮演角色);
完整代码:
bot.on(“presenceUpdate”(旧状态、新状态)=>{
让guild=oldPresence.guild;
//guild.roles=>guild.roles.cache
让playRole=guild.roles.cache.get(“633589794357641235”);
如果(!playRole)返回;
if(newPresence.find(e=>e.name==“与朋友一起打高尔夫”)){
newPresence.member.roles.add(playRole);
}
});
错误是if(newPresence.find(e=>e.name==“Testing”)){
^
TypeError:newPresence.find不是函数
const Discord = require('discord.js')
const client = new Discord.Client()
client.on('ready', () => {
console.log('bot sucessfully logged')
})
client.on("presenceUpdate", (oldPresence, newPresence) => {
let guild = oldPresence.guild;
//guild.roles => guild.roles.cache
let playRole = guild.roles.cache.get("837208147302154252");
if (!playRole) return;
if (newPresence.find(e => e.name === "Testing")) {
newPresence.member.roles.add(playRole);
}
});
client.login("token")