首页 > 解决方案 > Hubot错误识别单个用户

问题描述

我有一个 Hubot 连接到我们的 Rocket.Chat 服务器。我们有一个 Cards Against Humanity 的游戏脚本。有一天,我和另一位玩家几乎同时加入,从那时起,Hubot 就认为我是另一位玩家。

使用下面的脚本对此进行测试,hubot 使用其他用户的名称和 ID 进行响应,而不是我自己的(也响应他而不是我):

return robot.respond(/who am i(\?)?/ig, function(msg) {
  return msg.reply("*Id: *" + msg.message.user.id + "\n*Name: *" + msg.message.user.name);
});

我已尝试停止 hubot 进程并重新部署,但这并不能解决问题。它似乎在所有 Hubot 脚本中都存在,因为从那时起制作的其他脚本将我视为另一个玩家。

有什么方法可以撤消 Hubot 制作的任何玩家映射,或者有什么方法可以“重置”它,这样这个问题就消失了吗?我找不到有关用户存储不同步或其他任何人发生此问题的任何文档。

编辑:我还应该提到日志和控制台输出中的用户 ID 和名称(手动测试时)显示正确的名称和 ID(我自己的)。它只是不正确的,因为它被“解释”并发布到频道。我没有修改消息对象的代码。

标签: hubotrocket.chat

解决方案


想通了这个问题。我们使用的是 MySQL Hubot Brain 适配器。由于某种原因,它覆盖了大脑数据中的用户名。通过更新大脑修复。

考虑到我看不到任何更新用户名的代码,不确定它是如何做到的。我猜它不是线程安全的,两个调用太靠近会导致问题。


推荐阅读