Quiero que mi bot de Discord escriba en un canal específico mientras un usuario escribe en el dms de bots para que parezca que el usuario está escribiendo a través del bot. Me las arreglé para que mi bot comience a escribir en el canal cada vez que alguien está escribiendo en el dms de bots, pero no se detiene cuando el usuario deja de escribir todavía.
Gracias por tu ayuda
Ahora quiero que el bot lo haga al revés, por eso agregué las siguientes líneas al código. Aún no funciona. El mensaje de error es el siguiente: "(node:38868) UnhandledPromiseRejectionWarning: TypeError: dmToTypeIn.startTyping is not a function"
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; } } })El nuevo código:
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); } } }↓↓↓ La parte que aún no funciona ↓↓↓
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); } } });Debe verificar si el usuario está escribiendo con el método 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); } } });¡Puedes usar esto para hacer tu propio evento personalizado!
Client.on("typingStart", async (channel, user) => { let fulfilled = false; while (!fulfilled) { if (!user.typingIn(channel)) { fulfilled = true; Client.emit("typingStop", channel, user) } } })y escucha con
Client.on("typingStop", async (channel, user) => { //code for when user stops typing })