Discord.js 检测用户何时输入

Discord.js detect when user is typing

我是否有可能检测到用户 starts/stops 正在打字? 我使用 Discord.js Webpack Version 12,我似乎找不到任何解决方案?

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

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

还有User.typingIn()方法,会检查用户是否在指定频道输入,return一个boolean.

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

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


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

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

(您还可以使用 typingCount 属性 来查看 很多 人在给定频道中的输入情况)

我运行遇到了同样的麻烦,我使用JavaScript中内置的setTimeout()函数解决了它。这是我的代码片段:

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很好,不过要看你的了。