gpt4 book ai didi

javascript - Slack API : channels. 创建后跟 channels.invite/info 返回 channel_not_found 错误

转载 作者:行者123 更新时间:2023-11-30 11:25:04 26 4
gpt4 key购买 nike

我正在使用 botkit 和 nodejs slack 开发工具包构建一个 slack 机器人。我有一系列的 api 调用,第一个是找到用户 (globalMembers),第二个是基于 channel 数组创建一个 channel ,最后一个是将每个用户添加到每个新创建的 channel 中。

为此,我有几个 promise ,以便循环访问 channel 和成员。 channel 已成功创建,然后我将每个成员和 channel 的唯一数组 ([[member1, channel1], [member1, channel2]...]) 发送到将邀请成员的 promise 到相应的 channel 。

无论如何(我正在使用 channel ID),当我尝试获取 channel 信息或邀请成员加入该 channel 时,都会收到“channel_not_found”错误。我是 promises 的新手,可能在某个地方有错误,感谢任何帮助。

下面是我的代码:

var channels = ["gameplay", "gamelog", "map"];
var channelData = channels.map(channelCreate);

var channelResults = Promise.all(channelData);

return channelResults.then(created => {
var channelMembers = [];
_.each(created, function(channel) {
// globalMembers is the user list
_.each(globalMembers, function(member) {
var array = [channel, member];
// prints array of arrays [channel, member]
channelMembers.push(array);
});
});

var memberData = channelMembers.map(channelJoin);

var memberResults = Promise.all(memberData);

return memberResults.then(joined => {
console.log(joined, "is the joined data");
});

});


var channelCreate = function channelCreate(name) {

// Join the channels
return web.channels.create(name).then((res) => {
console.log("created labyrinth channel: " + JSON.stringify(res.channel));
return res.channel;

}).catch((err) => { console.log(err) }); // End channels.join call

}; // End channel create

var channelJoin = function channelJoin(params) {

var member = JSON.stringify(params[1]["id"]);
var channel = JSON.stringify(params[0]["id"]);
console.log(member, "is the member that will join " + channel);

web.channels.info(channel).then(channelData => {
console.log(channelData);
if (channelData) {
// Invite each user to the labyrinth chat channel
return web.channels.invite(channel, member)
.then(res => {
return res;
}).catch((err) => { console.log(err) });

}
}).catch(err => console.log(err));

}; // End channel Join

最佳答案

问题出在下面一行:

var channel = JSON.stringify(params[0]["id"]);

params[0]["id"] 将是 channel ID(例如“C123456”)。但是当您通过 JSON.stringify() 传递它时,您最终会在字符串中使用转义引号(例如“\"C123456\"")。将其传递给 web.channels.info() 后,将找不到该 channel 。

这将解决您看到的直接错误 (channel_not_found),但您还需要为 member 修复此问题,因为您调用了 web.channels。 invite() 稍后。

关于javascript - Slack API : channels. 创建后跟 channels.invite/info 返回 channel_not_found 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48328380/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com