Events Discord.js在用户键入时检测

Events Discord.js在用户键入时检测,events,discord.js,bots,typing,Events,Discord.js,Bots,Typing,我是否有可能检测到用户是否开始/停止键入? 我使用Discord.js网页包版本12,但似乎找不到任何解决方案?您可以使用该事件,该事件将在用户开始键入时触发 client.on('typingStart',(频道,用户)=>{ console.log(`${user.username}正在${channel.name}`中键入) }; 还有一种方法,它将检查用户是否在指定的频道中键入,并返回一个布尔值 if(.typingIn()) log(${.username}中键入的“${.user

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

您可以使用该事件,该事件将在用户开始键入时触发

client.on('typingStart',(频道,用户)=>{
console.log(`${user.username}正在${channel.name}`中键入)
};

还有一种方法,它将检查用户是否在指定的频道中键入,并返回一个
布尔值

if(.typingIn())
log(${.username}中键入的“${.username}”);
(也可以使用和方法)


最后,您可以查看
TextChannel
的属性,以检测是否有人在该频道中键入内容

if(.typing)
log(`someone正在键入${channel.name}`);

(您也可以使用该属性查看给定频道中有多少人在键入)

我遇到了同样的问题,我使用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
很好,但这取决于你。

哇,它起作用了,谢谢,但当用户停止键入时是否也会调用一个事件?不幸的是,没有。你可以访问文档页面来竞争w every
discord.js
事件,如果你好奇的话。设置一个超时,它总是会被重新创建为输入字段的onChange,并触发你的“停止键入”。这就是我们解决停止键入问题的方法哦,好的,我只是使用了一个onmessage事件作为“停止键入事件”。它可能并不总是正确的,但没问题