1

botkit と nodejs slack 開発者キットを使用して slack bot を構築しています。最初にユーザー (globalMembers) を検索し、2 番目にチャネルの配列に基づいてチャネルを作成し、最後に各ユーザーを新しく作成された各チャネルに追加します。

これを行うために、チャネルとメンバーをループするためにいくつかの約束があります。チャネルが正常に作成されたら、各メンバーとチャネル ( [[member1, channel1], [member1, channel2]....]) を含む一意の配列を、メンバーをそれぞれのチャネルに招待する promise に送信します。

何があっても (チャンネル ID を使用しています)、チャンネル情報を取得しようとしたり、そのチャンネルにメンバーを招待しようとすると、「channel_not_found」エラーが表示されます。私は約束に不慣れで、どこかにエラーがある可能性があり、助けていただければ幸いです。

以下は私のコードです:

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
4

1 に答える 1