理由と'test'
コマンドを実行する前にメッセージを送信していません。
(それはない包み)、それがnullだ場合は、これを一周するには、私がチェックしたいし、それがであることをoffchanceで、messagecolleterを使用して、メッセージが送信されるのを待ちます。
if (client.user.lastMessage == null) {
// Set the collector for the same channel
// Ensure the id is the same
var myID = client.user.id;
// Create collector and wait for 5 seconds (overkill but you never know with bad internet/lots of traffic)
const collector = new Discord.MessageCollector(msg.channel, m => m.author.id === myID, { time: 5000 });
collector.on('collect', message => {
console.log(message.content);
collector.stop("Got my message");
});
} else {
console.log(client.user.lastMessage.content);
}
私がテストした正確なコードブロック:エラーは `client.user.lastMessage`が未定義であることを意味することに
client.on('message', msg => {
if (msg.content === '$ping') {
msg.reply("Pong!")
if (client.user.lastMessage == null) {
const collector = new Discord.MessageCollector(msg.channel, m => m.author.id === client.user.id, { time: 10000 });
collector.on('collect', message => {
console.log(message.content);
collector.stop("Got my message");
})
} else {
console.log(client.user.lastMessage.content);
}
}
}
。これは、lastMessageが存在しない可能性があることを意味します(nodeJSが非ブロックであるため、メッセージが技術的に送信される可能性があるため)lastMessage属性が正しくない – dGRAMOP
したがって、node.jsはスレッドを待機しません次のコマンドに移動する前に終了しますか?もしそうなら、 'setTimeout()'を使ってコンソールにメッセージを記録する3秒待つようにしました。実行を継続する前にメッセージが実際に送信されたことを検出する方法はありますか? – Meh
コールバック。 sendMessage(String)はコールバックパラメータをオーバーロードしますか? – dGRAMOP