javascript - 通过响应获取角色,无需指定 ID,以便您可以在多个服务器上使用该命令
问题描述
到目前为止,这是我的代码。但是,这只适用于一台服务器。我希望它可以在多台服务器上工作。我希望通过必须具有特定名称的角色获得 ID,但不幸的是,我只知道如何通过 ID 添加/删除角色
bot.on('message', async message => {
let parts = message.content.split(" ");
if(parts[0].toLocaleLowerCase() == '!rules') {
if(!message.member.hasPermission('ADMINISTRATOR')) return message.channel.send('Du brauchst die Berechtigung um ein Regelwerk zu schreiben')
if(!parts[1]) return message.channel.send('Du musst mindestens eine Regel angeben')
var text = message.content.split(" ").slice(1).join(" ");
message.delete();
const sayembed = new Discord.MessageEmbed()
.setColor('800000')
.setThumbnail(`${message.guild.iconURL()}`)
.setTitle('Regeln')
.setDescription(text, true)
.setFooter('Erstellt von ' + message.author.tag)
.setTimestamp();
let sendEmbed = await message.channel.send(sayembed)
sendEmbed.react('✅')
sendEmbed.react('❌')
}
})
bot.on('messageReactionAdd', async(reaction, user, channel) => {
if(reaction.message.partial) await reaction.message.fetch();
if(reaction.partial) await reaction.fetch();
if(user.bot) return;
if(!reaction.message.guild) return;
if(reaction.message.channel.id === '859525260835291157') {
if(reaction.emoji.name === '✅') {
reaction.message.guild.members.cache.get(user.id).roles.add('854784657857970176')
}
}
})
解决方案
如果您知道角色的名称,则需要先找到该角色。guild.roles.cache
返回一个集合,因此您可以使用该find()
方法。find()
搜索给定函数返回真实值的单个项目(即role.name
您想要的那个在哪里)。
if (reaction.message.channel.id === '859525260835291157') {
if (reaction.emoji.name === '✅') {
let role = reaction.message.guild.roles.cache.find(role => role.name === 'Name of the role you are looking for')
reaction.message.guild.members.cache
.get(user.id)
.roles.add(role);
}
}
推荐阅读
- unity3d - 统一使用主菜单中的滑块停止所有场景的音频
- mysql - 如何从 varchar 类型值中选择最大数量
- java - 无法对数组类型(类)调用方法 getSize() MitarbeiterListe[]
- c# - 得到错误'IEnumerable
' 在 asp.net mvc 中创建空白列表框时 - amazon-web-services - 同时使用用户名和 Facebook 登录 AWS Cognito?
- javascript - 如何正确自动滚动到滚动条的末尾?
- powershell - 在编写 Powershell 脚本以将 AD 用户和计算机 >> OU >> 分发组中的扩展属性 1 值更改为“员工”时需要帮助?
- wpf - 如何在 WPF 中的 DataGrid 中添加一行?
- django - 在 Reactjs 中使用 Axios 从 Array 向 REST API django 发布多个请求
- python-3.x - 尝试使用 Youtube_dl 从 youtube 下载视频时,Kivy 屏幕冻结