我希望我的 Discord 机器人在用户在 bot dms 中输入时在特定 channel 中输入,以使用户看起来像是通过机器人输入。我已经成功做到了,这样每当有人在机器人 dms 中输入时我的机器人就会开始在 channel 中输入,但当用户停止输入时它不会停止
谢谢你的帮助
我现在希望机器人以相反的方式执行此操作,这就是为什么我在代码中添加了以下几行。它还不起作用。错误消息如下: “(节点:38868)UnhandledPromiseRejectionWarning:TypeError:dmToTypeIn.startTyping不是函数”
Client.on("typingStart", async function(channel, user){
if(user.bot){
return;
}
let channelToTypeIn = Client.channels.cache.get(openTicketsByUserID[user.id].ticketID)
if(channel.type === "dm"){
if(openTicketsByUserID[user.id]){
console.log("one")
channelToTypeIn.startTyping()
} else{
return;
}
}
})
新代码:
Client.on("typingStart", async function(channel, user) {
function Sleep(milliseconds) {
return new Promise(resolve => setTimeout(resolve, milliseconds));
}
if (channel.type === "dm") {
if (openTicketsByUserID[user.id]) {
let channelToTypeIn = Client.channels.cache.get(openTicketsByUserID[user.id].ticketID);
channelToTypeIn.startTyping();
}
let fulfilled = false;
while (!fulfilled) {
if (!user.typingIn(user.dmChannel)) {
let channelToTypeIn = Client.channels.cache.get(openTicketsByUserID[user.id].ticketID);
fulfilled = true;
channelToTypeIn.stopTyping(true);
}
}
}
↓↓↓ 尚未运行的部分 ↓↓↓
if(openTicketsByChannelID[channel.id]){
let dmToTypeIn = Client.users.fetch(openTicketsByChannelID[channel.id].userID)
dmToTypeIn.startTyping();
}
let fulfilled = false;
while(!fulfilled){
if(!user.typingIn(channel)){
let dmToTypeIn = Client.channels.get(openTicketsByChannelID[channel.id].userID)
fulfilled = true;
dmToTypeIn.stopTyping(true);
}
}
});
最佳答案
您必须检查用户是否输入 User.typingIn
方法
Client.on("typingStart", async function(channel, user) {
if (user.bot) {
return;
}
let channelToTypeIn = Client.channels.cache.get(openTicketsByUserID[user.id].ticketID);
if (channel.type === "dm") {
if (openTicketsByUserID[user.id]) {
channelToTypeIn.startTyping();
}
}
let fulfilled = false;
while (!fulfilled) {
if (!user.typingIn(user.dmChannel)) {
fulfilled = true;
channelToTypeIn.stopTyping(true);
}
}
});
您实际上可以使用它来制作您自己的自定义事件!
Client.on("typingStart", async (channel, user) => {
let fulfilled = false;
while (!fulfilled) {
if (!user.typingIn(channel)) {
fulfilled = true;
Client.emit("typingStop", channel, user)
}
}
})
并聆听
Client.on("typingStop", async (channel, user) => {
//code for when user stops typing
})
关于javascript - 当有人在机器人 DMS 中输入时,如何让我的不和谐机器人在特定 channel 中输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68693045/