【问题标题】:Discord.js how to know if user block the bot or notDiscord.js 如何知道用户是否阻止了机器人
【发布时间】:2019-12-07 07:33:35
【问题描述】:

我编写了让机器人向用户发送私人消息的代码,我需要知道用户是否阻止了机器人或未能向他发送消息。

这是我尝试过的。如果失败,我不希望机器人在下面发送消息:

消息已发送!

if(message.content.startsWith(prefix+'send')){
    if(!botOwner.includes(message.author.id)) return;
    let userID = 'ID'; //to send
    let channel = message.guild.channels.get(message.channel.id);
    let user = bot.users.get(userID);
    let myMessage = message.content.split(' ').slice(1).join(' ');
    if(!myMessage) return;


    user.send(myMessage)
    .then(channel.send('Message Sent!')) //The problem in this line <-
    .catch(err => {
        console.error(err)
        message.channel.send(`**${user.username}**, Failed to send him ❌`)
    });
}

【问题讨论】:

    标签: javascript discord.js


    【解决方案1】:

    将一个函数传递给then()

    // Keep in mind that 'user' is a GuildMember the way it's been defined, not a User.
    
    user.send(myMessage)
      .then(() => message.channel.send(':incoming_envelope: Message sent successfully!'))
      .catch(err => {
        console.error(`Error while sending message to ${user.displayName}...\n`, err);
    
        message.channel.send(':x: Message could not be sent.')
          .catch(err => console.error(`Error while sending error message...\n`, err));
      });
    

    【讨论】:

      【解决方案2】:

      我会这样做:

      var error = false;
      
      user.send(myMessage)
       .catch(err => {
      
        error = true;
      
        console.error(err)
        message.channel.send(`**${user.displayName}**, Failed to send message. ❌`)
      
       });
      
      if (!error) channel.send('Message Sent!')
      

      【讨论】:

      • if (!error) 有问题当我阻止机器人时,它会显示Message Sent 和错误消息。当我执行if (error) 时,不要显示Message Sent。你可以试试看。
      • 我无法正确测试它,但也许您将if (!error) 放入.then() 之后 .catch()
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-13
      • 2015-05-30
      • 2016-04-05
      • 2013-02-07
      • 2020-09-26
      • 1970-01-01
      相关资源
      最近更新 更多