【问题标题】:Checking if a message is a DM. (Discord.js and discord.js-commando)检查消息是否为 DM。 (Discord.js 和 discord.js-commando)
【发布时间】:2018-07-21 14:15:17
【问题描述】:

如何在 Discord.js 中检查消息是否为 DM?我已经尝试了几种方法来对此进行测试,我已经尝试了这些方法:

if (msg.channel.isDM) ... Produced undefined
if (msg.isDM) ... Produced undefined
if (msg.channel.DMChannel.isDM) ... produced undefined
if (msg.DMChannel) ... produced undefined
if (msg.channel.DMChannel.dm) ... produced undefined
if (msg.channel.dm) ... produced undefined

在控制台中生成msg 后,我已经尝试了所有方法,并试图破译我到底在哪里做这件事。即使是文档也不是很清楚在哪里检查这个。我查看了多个“解决方案”,它们只是喷出<message>.channel.dm。嗯……这行不通。

编辑: 所以看起来确实是<message>.isDM。但是,在我的命令中这不起作用。我可以在数组中找到isDM,当我console.log(msg) 它产生true 这是预期的。但是,执行console.log(msg.isDM) 会打印出undefined。这看起来很奇怪,因为它显然是被定义的。

【问题讨论】:

    标签: node.js discord.js


    【解决方案1】:

    我找到了几种处理方法:

    <message>.channel.type === 'dm'不过这里只包括单个DM,但会允许组等。

    message.guild === null 将检查所有 DM(如果消息服务器为 null,则返回 true,如果消息不是通过服务器发送的,则必须是 dm。)

    【讨论】:

    • 一个小语法错误,dm应该加引号,应该是message.channel.type === 'dm'
    【解决方案2】:

    DMChannel 是一个类,所以message.channel instanceof DMChannel 应该可以工作。

    【讨论】:

    • 史诗和简单,并使用香草 JS。
    【解决方案3】:

    client.GetDMChannelAsync(msg.Channel.Id).Result != null

    这是您在最新版本中检查的方式

    【讨论】:

      【解决方案4】:
      client.on("message", msg =>  { 
          
         if(msg.guild==null &&msg.author.id!=='botDiscordId'){
          msg.reply('dosomethinghere')
         }
      });
      

      这使用公会类,并会回复用户消息,您可以记录 msg.reply 并将其更改为任何内容,我建议将 botDiscordId 放在字段中,这样机器人就不会识别它自己的消息。

      【讨论】:

        猜你喜欢
        • 2021-10-28
        • 2020-12-25
        • 2021-04-18
        • 2018-12-02
        • 2018-05-27
        • 2021-09-26
        • 1970-01-01
        • 2021-12-05
        • 2022-01-24
        相关资源
        最近更新 更多