我的Discord机器人最近在提及[已解决]时没有回应

问题描述 投票:0回答:1

这是我第一次使用此网站,如果格式的子参数不正确,我深表歉意。

问题:@提及时,我的Discord机器人(javascript)最近已停止响应。无需更改代码即可导致此问题,不久前它就可以正常工作。同样,对机器人进行编程的朋友也有这个问题,所以我知道不仅是我。

该机器人基本上是一个聊天和回复的机器人;您@提及它的名称,并包含一个触发器,并且它有一个随机的机会以四个响应之一进行响应。但是,发生了某事,似乎没有注册它已被@提及,因此没有答复。

例如,如果我要输入“ @bot hi!”如果不一致,该漫游器会以以下答复之一进行答复:“为此为时过早。”,“早晨”,“我需要咖啡”。 “ [打哈欠,喃喃地打招呼]”。

我已经尝试用它的客户端标识符以及将在不和中使用的标识符(例如;“ @ name#0000”,“”)直接替换为client.user.toString(),但这些标识符也将被忽略。我在代码中此区域旁边添加了一个箭头。

我不确定是否有一些代码已过时的更新,但是我尝试搜索类似的问题没有成功。

我相对确定问题不在processChat(receivedMessage)函数之内,因为我可以使用其他触发器来代替上述问题部分,例如:

if (receivedMessage.content.startsWith("@all ")) {
        processChat(receivedMessage)
}

机器人将发送回复。当提到它时,它似乎根本不想回应。其余代码按预期工作。虽然这是我可以转换为的东西,但是我已经在服务器上安装了该机器人已有将近一年的时间,并且还有许多其他服务器成员需要适应这种变化。我宁愿让事情像以前那样运转,而不是让每个人都习惯于补偿。

是否有解决此问题的方法?

这是一个具有相同问题的小示例代码:

const Discord = require('discord.js');
const client = new Discord.Client();

client.on('ready', () => {
   console.log("Connected as " + client.user.tag);
})

//The color for all of the bot's messages
messageColor = 4611141;

client.on('message', receivedMessage => {
    // Prevent bot from responding to its own messages
    if (receivedMessage.author == client.user) {
        return;
    }    

    //process regular triggers (@ mentions)
    //This is where the issue seems to be           <--------------------------
    if ((receivedMessage.content.includes(client.user.toString()))) {
        processChat(receivedMessage);
    }    
});

//For usage with chat prompts and triggers
function processChat(receivedMessage) {

    if ((receivedMessage.content.toLowerCase().includes("hi"))){
      var random = randomInt(5, 1) ;
        if (random == 1) {
            receivedMessage.channel.send({embed: {
              color: messageColor,
              description: "It's too early for this."
            }});         
        } else if (random == 2) {
            receivedMessage.channel.send({embed: {
              color: messageColor,
              description: "Mornin'."
            }}); 
        } else if (random == 3) {
            receivedMessage.channel.send({embed: {
              color: messageColor,
              description: "I need coffee."
            }}); 
        } else if (random == 4) {
            receivedMessage.channel.send({embed: {
              color: messageColor,
              description: "*[yawn, mumbled greeting]*"
            }});    
        } else {
           return;
        }
    } 
}


//Random number generation
function randomInt(max, min) {
    min = Math.ceil(min);
    max = Math.floor(max);
    return Math.floor(Math.random() * (max - min)) + min;
}

client.on('error', console.error);

client.login(token)
triggers botframework discord discord.js mention
1个回答
0
投票

切换自

if ((receivedMessage.content.includes(client.user.toString()))) {
        processChat(receivedMessage);
    }    

to

if (recievedMessage.isMemberMentioned(client.user)) {
        processChat(recievedMessage)
    }

解决了问题。谢谢鲍克,感谢您提供的链接。

© www.soinside.com 2019 - 2024. All rights reserved.