我正在尝试使用 slack api https://api.slack.com/methods/channels.join创建一个新频道,但收到此响应
info: ** API CALL: https://slack.com/api/channels.join
Response : { ok: false, error: 'user_is_bot' }
Run Code Online (Sandbox Code Playgroud)
我试过这个
controller.hears('hello', ['direct_message', 'direct_mention', 'mention'], function (bot, message) {
bot.api.channels.join({'name':'nag'}, function (err, response) {
console.log("Response : ",response);
})
});
Run Code Online (Sandbox Code Playgroud)
如果我弄错了,请告诉我。我已经开始学习 slack api。
您得到的原因user_is_bot
是bot 用户无法使用channels.join。正如此方法的文档中所说:
user_is_bot
:机器人用户无法调用此方法。
要创建频道,您需要使用channels.create。但是,机器人用户也不能使用该方法。
常见的解决方案是使用完整的access_token
,而不是bot_access_token
您的 Slack 应用程序在使用 OAuth 安装后从 Slack 收到的 bot 用户无法使用的所有方法,例如创建新频道。
以下是OAuth 文档中关于来自 Slack 的带有两个令牌的响应的示例:
Run Code Online (Sandbox Code Playgroud){ "access_token": "xoxp-XXXXXXXX-XXXXXXXX-XXXXX", "scope": "incoming-webhook,commands,bot", "team_name": "Team Installing Your Hook", "team_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" } }