【问题标题】:Discord.js detect when user is typingDiscord.js 检测用户何时输入
【发布时间】:2020-12-21 19:35:29
【问题描述】:

是否有可能我可以检测到用户是否开始/停止输入? 我使用 Discord.js Webpack 第 12 版,但似乎找不到任何解决方案?

【问题讨论】:

    标签: events discord.js bots typing


    【解决方案1】:

    我遇到了同样的问题,我使用 JavaScript 中内置的 setTimeout() 函数解决了它。这是我的代码 sn-p:

    client.on("typingStart", function(channel, user){
        //What you want to execute while someone is typing...
        console.log('User is typing!')
        setTimeout(() => {
            //What you want to execute when someone stops typing...
            console.log('User is no longer typing')
        }, 5000)
    })
    

    您可以随意更改值5000,它代表在有人停止输入后将编码等待的时间,以毫秒为单位。我认为5000 很好,但这取决于你。

    【讨论】:

      【解决方案2】:

      您可以使用typingStart() 事件,该事件将在用户开始输入时触发。

      client.on('typingStart', (channel, user) => {
        console.log(`${user.username} is typing in ${channel.name}`)
      };
      

      还有User.typingIn()方法,它会检查用户是否在指定频道输入,并返回boolean

      if (<user>.typingIn(<channel>)) 
        console.log(`${<user>.username} in typing in ${<channel>.name}`);
      

      (您也可以使用typingDurationIn()typingSinceIn() 方法)


      最后,您可以查看TextChannelTextChannel.typing 属性来检测是否有人 在该频道中输入。

      if (<channel>.typing)
        console.log(`Somebody is typing in ${channel.name}`);
      

      (您也可以使用typingCount 属性来查看有多少人在给定频道中打字)

      【讨论】:

      • 哇,它成功了,谢谢你,但是当用户停止输入时是否还会调用一个事件?
      • 不幸的是,没有。如果您有兴趣,可以访问 this 文档页面查看每个 discord.js 事件。
      • 设置一个超时,该超时总是重新创建到输入字段的 onChange 并触发您的“停止输入”。这就是我们解决停止输入问题的方法
      • 哦,好吧,我只是将 onmessage 事件用作“stopTyping 事件”。它可能并不总是正确的,但没关系
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-04
      • 1970-01-01
      • 1970-01-01
      • 2021-02-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多