私はbotordを作成するためにdiscord.jsを使用しています。主な機能はうまく動作していますが、私はオブジェクトを繰り返し処理するforループを持っています。私はそのオブジェクトからいくつかの情報を得て、それをチャンネルに送ります。それは、各反復のためにメッセージを送信し、それらをあまりにも速く送信することです。私はsetInterval()
を使用しようとしましたが、動作しません。より良い解決策は、送信前にその情報をどこかに保持したい場合です。これは私のコードです:送信前にループ情報を保持する
var stat = []
var statNames = ['Speed', 'Special Defense', 'Special Attack', 'Defense',
'Attack', 'HP']
for(x in response.stats) {
stat = {"base": response.stats[x].base_stat,
"effort": response.stats[x].effort}
msg.channel.sendMessage(statNames[x] + ": " + stat.base + " - EV: " + stat.effort)
}
私はループのmsg.channel.sendMessage
外に置く場合は、メッセージが正しく送信されず、スティルがメッセージを1つに送信します。私はちょうど1つのメッセージとしてそれらを送信したいです。それは6回実行されるので、あまりにも速く送信されている6つのメッセージがあり、これによってレートが制限されることがあります。
「送信前の情報を保持する」とはどういう意味ですか?あなたが望むなら、あなたの 'for'ループにオブジェクトの配列を簡単に作ることができますが、あなたの望む出力がここにあるのか分かりません。 – jfriend00
@ jfriend00私が言うことは、ループが実行されるたびにボットがあるチャネルにメッセージを送信するということです。私はちょうどループを実行し、それはすぐにメッセージを送信するため、レートを制限することを望んでいません。私は、 "ループが終わるまでメッセージを保持してから、1つのメッセージとして送信する"のように、6つの別々のメッセージではなく、 "情報を保持する"と言った。 – Dotdeb