当有人在机器人 dms 中输入时,我如何在特定频道中输入我的 discord 机器人?

How do i make my discord bot type in a specific channel while someone is typing in the bots dms?

我希望我的 discord 机器人在用户输入机器人 dms 时输入特定频道,以使其看起来像是用户正在通过机器人输入。我已经成功做到了,只要有人在机器人 dms 中输入,我的机器人就会开始在频道中输入,但当用户停止输入时它不会停止

谢谢你的帮助

我现在希望机器人以相反的方式执行此操作,这就是我在代码中添加以下几行的原因。它还不起作用。错误信息如下: “(节点: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
})