Triggers 我的Discord机器人最近赢了';当被提及时,我不会回应 这是我第一次使用这个网站,所以如果格式化的子PAR.我道歉。

Triggers 我的Discord机器人最近赢了';当被提及时,我不会回应 这是我第一次使用这个网站,所以如果格式化的子PAR.我道歉。,triggers,botframework,discord,discord.js,mention,Triggers,Botframework,Discord,Discord.js,Mention,问题: 当提到@时,我的Discord机器人(javascript)最近停止了响应。没有对代码进行任何更改来导致这种情况,不久前它工作得非常好。一个朋友的机器人程序也有类似的问题,所以我知道不仅仅是我 该机器人基本上是一个聊天和回复机器人;你@提到它的名字并包括一个触发器,它有一个随机的机会用四个响应中的一个来响应。然而,有些事情发生了,它似乎没有记录到它被@提及,因此没有回复 例如,如果我在discord中键入“@bot hi!”,bot会用以下回复之一进行回复:“现在做这个还为时过早。”、“

问题: 当提到@时,我的Discord机器人(javascript)最近停止了响应。没有对代码进行任何更改来导致这种情况,不久前它工作得非常好。一个朋友的机器人程序也有类似的问题,所以我知道不仅仅是我

该机器人基本上是一个聊天和回复机器人;你@提到它的名字并包括一个触发器,它有一个随机的机会用四个响应中的一个来响应。然而,有些事情发生了,它似乎没有记录到它被@提及,因此没有回复

例如,如果我在discord中键入“@bot hi!”,bot会用以下回复之一进行回复:“现在做这个还为时过早。”、“Mornin.”、“我需要咖啡。”。“[打哈欠,咕哝着打招呼]”

我已经尝试直接用它的客户端标识符以及在discord中使用的标识符(例如“@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)
const Discord=require('Discord.js');
const client=new Discord.client();
client.on('ready',()=>{
log(“连接为”+client.user.tag);
})
//所有bot消息的颜色
messageColor=4611141;
client.on('message',receivedMessage=>{
//阻止bot响应其自己的消息
if(receivedMessage.author==client.user){
返回;
}    
//处理常规触发器(@提及次数)
//这就是问题的症结所在

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


解决了问题。谢谢你,Bauke,谢谢你的链接。

你给你的机器人起了一个昵称吗?在这种情况下,那么
user.toString()
将不正确。如果您想正确检查提及的内容,则有大量的on,以便回答该问题。该机器人没有昵称。我不久前就解决了这个问题,因此我没有处理它。不过,感谢您提供的链接。它很好地回答了我的问题;我想我没有使用正确的标记进行搜索。我已回滚您的编辑。此处不适合添加[已解决]添加到问题标题或将解决方案编辑到问题中。如果您在此处收到解决问题的答案,您可以将其标记为已接受,以表明已接受。如果您自己找到了解决方案并希望共享该解决方案,您可以通过在下面提供的空白处编写答案来完成此操作(有关更多信息,请参阅)。
if (recievedMessage.isMemberMentioned(client.user)) {
        processChat(recievedMessage)
    }