2016-07-15 11 views
0

現在Discordieライブラリを使用してDiscordボットを作成するために、一般的にNode.js/JavaScriptを学習しています。連鎖2つのアクションを実行する約束

2つの別々のアクションがあります.1つはサーバーへの招待状を作成し、もう1つはユーザーが自分のメッセージにスラーを使用した場合にメッセージを送信します。

e.message.author.openDM().then(dm => dm.sendMessage(`You have been kicked from the **${e.message.guild.name}** server for using a slur. Please consider this a probation. When you feel that you are ready to not use that sort of language, feel free to rejoin us.`)); 
e.message.author.memberOf(e.message.guild).kick(); 

私がユーザーにメッセージを送り、次にそれらを蹴るために使用している方法です。私は招待生成する別のコマンド(!invite)を有し、受信したJSONから招待コードプル:送信するために、私は直接メッセージコードの内部に招待を生成できるようにしたい

var generateInvite = e.message.channel.createInvite({"temporary": false, "xkcdpass": false}); 
generateInvite.then(function(res) { e.message.channel.sendMessage("https://discord.gg/" +res.code); }); 

generateInvite.then(function(res) { return res.code }).then(e.message.author.openDM().then(function(dm){ dm.sendMessage(`You have been kicked from the **${e.message.guild.name}** server for using a slur. Please consider this a probation. When you feel that you are ready to not use that sort of language, feel free to rejoin us by following this link: https://discord.gg/` + res.code)})); 

はどこでこの約束チェーンで間違ったつもりだ:しかし、私はどのように適切に私の約束をチェーンに把握することはできません、彼らは再び言語のその種の使用を避けることができれば戻ってくることを招待するユーザーを蹴りましたか?

+0

_ "私はこの約束が間違っていますか?" 'openM'関数を参照するために'( '' openMD() 'で' 'を含めてはいけません。 .message.author.openDM() 'は匿名関数から返されなければなりませんが、現在は構文エラーが表示されていますか? – guest271314

+0

コードをインデントしてください、1行で読むのはかなり難しい – Tdy

答えて

1

それはないreturn res.codeどこにいます、とコールバックの代わりに約束(openDM().then(…))を通過しない

const author = e.message.author; 
generateInvite.then(function(res) { 
    author.openDM().then(function(dm){ 
     dm.sendMessage(`… link: https://discord.gg/${res.code}.`); 
     author.memberOf(e.message.guild).kick(); 
    }) 
}); 

でなければなりません。

また、メッセージを送信した後でしかユーザーを蹴ることはないので、2つのアクションが正しくシーケンスされていることを確認してください。

招待状を作成し、dmチャネルを並列に開くことを検討し、Promise.allを使用して2つの約束を待ち、その結果を単一のコールバックで使用することもできます。

+0

ありがとう! _before_ kicking。今私は将来の約束をどのように処理するかを知っています:) – Tadhg

関連する問題