我在我们的Rocket.Chat服务器上附加了一个Hubot。我们有反人类纸牌的游戏脚本。有一天,我和另一位球员在同一时间加入,从那以后,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 (我自己的)。这是不正确的,因为它是“解释”和张贴到频道。我没有修改消息对象的代码。
发布于 2018-10-29 17:53:08
解决了这个问题。我们用的是MySQL Hubot脑适配器。出于某种原因,它覆盖了大脑数据中的用户名。通过更新大脑来修复。
不确定它是如何做到的,因为我看不到任何更新用户名的代码。我猜这不是线程安全,两个电话太近导致了问题。
https://stackoverflow.com/questions/53048574
复制相似问题