首页 > 解决方案 > 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])
      })
    })
  })
}

标签: async.js

解决方案


这看起来像关系角色命令的代码。“exports.run = async (client, message, args) =>” 与命令处理程序结合使用。“async”部分告诉javascript这是一个异步函数,因此允许使用“await”和“.then”。


推荐阅读