0

我正在尝试捕捉// this line,但我似乎无法找到在哪里放置捕捉以正确捕捉它。

      mutedList.forEach((i) => {
      if (i.mutedEnd*1000 < new Date()){
        console.log(i)
        db.collection('muted').doc(i.userID).get().then((q) => {
        db.collection('muted').doc(i.userID).update({
          stillMuted: false
        }).then(
          bot.guilds.get(i.guildID).members.get(i.userID).removeRole(i.mutedRole) // this line | here
        ).catch((err) => {
          bot.createMessage('717822384198910042',{ embed: {
            title: 'ERROR',
            description: '```js\n'+err.stack+'\n```',
            color: hex
          }});
      })}
    )}
  })

我已经尝试过它目前在哪里,我在哪里放了一个HERE

4

1 回答 1

0

你不能.catch();那条线,因为它不是一个承诺。

试试这段代码,你可能会遇到错误,因为你试图对可能返回的东西使用方法,undefined所以这会在对其执行任何方法之前检查公会和成员是否存在。

then(() => {
    const guild = bot.guilds.get(i.guildID);
    if (guild) const member = guild.members.get(i.userID);
    if (member) member.removeRole(i.mutedRole);
})

您当前拥有的.catch();仅用于处理原始承诺的拒绝db.collection('muted').doc(i.userID).update

我还注意到您正在使用 Discord.js v11,我建议更新到 v12,因为 v11 将在 10 月底被废弃。

于 2020-09-26T23:29:01.947 回答