Как слабый бот может узнать свой собственный идентификатор? - PullRequest
0 голосов
/ 31 января 2019

Я пишу слабого бота, который слушает все сообщения на канале.Его ответ должен варьироваться в зависимости от того, упоминается ли в нем сообщение или нет.Проблема в том, что я не могу понять, как «правильно» узнать идентификатор бота.Бот подписан на событие message.channels, и когда кто-то публикует сообщение с упоминанием о боте, я получаю следующее:

{"client_msg_id":"b94dcc57-d640-4815-9eeb-23c048564bf0",
 "type":"message",
 "text":"<@UFT98YYYY> how are you?",
 "user":"UD45QXXXX",
 "ts":"1548958008.003400",
 "channel":"CFK3AZZZZ",
 "event_ts":"1548958008.003400",
 "channel_type":"channel"}

Как правильно узнать, что UFT98YYYY - это идентификатор бота?Конечно, есть способы обойти это (посмотреть в логах, установить идентификатор бота в конфиге), но они кажутся уродливыми, хрупкими и требуют некоторых дополнительных шагов при установке бота.Есть ли вызов Slack API, который бот может использовать, чтобы узнать его идентификатор?

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

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Понял.Используемый метод API - auth.test, он возвращает идентификатор пользователя (плюс некоторые дополнительные поля).

0 голосов
/ 01 февраля 2019

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

Вот пример ответа от Slack с бот-токеном и ботомID пользователя:

{
    "access_token": "xoxp-XXXXXXXX-XXXXXXXX-XXXXX",
    "scope": "incoming-webhook,commands,bot",
    "team_name": "Team Installing Your Hook",
    "team_id": "XXXXXXXXXX",
    "user_id": "XXXXXXXXXX",
    "incoming_webhook": {
        "url": "https://hooks.slack.com/TXXXXX/BXXXXX/XXXXXXXXXX",
        "channel": "#channel-it-will-post-to",
        "configuration_url": "https://teamname.slack.com/services/BXXXXX"
    },
    "bot":{
        "bot_user_id":"UTTTTTTTTTTR",
        "bot_access_token":"xoxb-XXXXXXXXXXXX-TTTTTTTTTTTTTT"
    }
}

Обратите внимание, что в ответ будет также включен идентификатор пользователя, который установил ваше приложение (хотя это не показано в официальной документации).Обязательно используйте bot_user_id, а не user_id.

См. здесь для официальной документации по токенам ботов.

...