Hubot неправильно идентифицирует одного пользователя - PullRequest
0 голосов
/ 29 октября 2018

Я подключил Hubot к нашему серверу Rocket.Chat. У нас есть игровой скрипт для карт против человечества. Однажды я и другой игрок присоединились примерно в одно и то же время, и с тех пор Хабот считает, что я другой игрок.

Проверяя это с помощью приведенного ниже сценария, hubot отвечает именем и идентификатором другого пользователя, а не моим (также отвечает ему, а не мне):

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, или какой-либо способ «сбросить» его, чтобы эта проблема исчезла? Я не могу найти какую-либо документацию о том, как пользовательское хранилище перестало синхронизироваться или эта проблема произошла с кем-то еще.

EDIT : Я должен также упомянуть, что идентификатор пользователя и имя в журналах и в выводе консоли (при тестировании вручную) показывают правильное имя и идентификатор (мое). Это только неверно, поскольку оно «интерпретируется» и публикуется на канале. У меня нет кода, модифицирующего объект сообщения.

1 Ответ

0 голосов
/ 29 октября 2018

Разобрался с проблемой. Мы использовали адаптер MySQL Hubot Brain. По какой-то причине он переписал имя пользователя в данных мозга. Исправлено обновлением мозга.

Не уверен, как это произошло, учитывая, что я не вижу кода, который обновляет имена пользователей. Я предполагаю, что это не потокобезопасно, и два вызова слишком близко друг к другу вызвали проблемы.

...