async.js - export.run = async (client, message, args) => 做什么 Discord.js
问题描述
在上一个问题中,我得到了一个很好的答案,但我不明白这意味着什么请记住这是 DISCORD.JS
exports.run = async (client, message, args) =>
整个代码是
const roles = {
':harrison:': '794924635778973716',
':banana': '794924670955814943',
}
exports.run = async (client, message, args) => {
await message.delete()
// because RoleManager.fetch is async
const rolesArray = await Promise.all(Object.entries(roles)
.map(async ([emoji, id]) => `${emoji} ${(await message.guild.roles.fetch(id)).toString()}`)
)
const embed = new MessageEmbed()
.setTitle('Roles')
.setDescription(`
Tip: *Double React to remove a role*
${rolesArray.join('\n')}
`)
.setColor(colors.purple)
.setFooter('Wilderbot')
message.channel.send(embed).then(async msg => {
const emojis = Object.keys(roles)
for (const emoji of emojis) await msg.react(emoji)
// only collect reactions that are the role emojis
const collector = msg.createReactionCollector(({emoji}) => emojis.includes(emoji.name))
collector.on('collect', ({emoji, message}, user) => {
message.guild.members.fetch(user).then(member => {
member.roles.add(roles[emoji.name])
})
})
collector.on('remove', ({emoji, message}, user) => {
message.guild.members.fetch(user).then(member => {
member.roles.remove(roles[emoji.name])
})
})
})
}
解决方案
这看起来像关系角色命令的代码。“exports.run = async (client, message, args) =>” 与命令处理程序结合使用。“async”部分告诉javascript这是一个异步函数,因此允许使用“await”和“.then”。
推荐阅读
- reactjs - 如何从基于 React 构建的 Web 应用程序访问/登录 Neo4j 浏览器
- javascript - 如何更改 react 内置引导程序的原色?
- python - UnboundLocalError:分配前引用的局部变量“区域”
- haskell - 使用折叠的字符串排序
- eclipse - 运行时 TestNG 出现错误“在:“启动测试文件”期间发生内部错误
- python - 如何在不更改这些条形宽度的情况下近似图表的条形?(Matplotlib)
- django - 从 sqlite 迁移到 postgree 后,Django value too long for type character varying(20) 错误
- ssh - 无法创建隧道并连接到 jupyter 接口
- r - 如何在 r 中获得逻辑回归中的所有因子系数?
- android - HTML 按钮在除 Android 应用程序之外的任何地方都可以使用