2017-12-25 18 views
0

ボットの最後のメッセージのオブジェクトをどのように取得しますか?クライアントユーザーの最終メッセージを取得するにはどうすればよいですか?

if (message.content.split(' ')[0] === 'test') { message.channel.sendMessage('Test') console.log(client.user.lastMessage.content) }

私は条件をトリガする場合は、コンソールは私にエラーを与える:私のようなものをやってみましたclient.user.lastmessageの値は、あなただけのボットを開始しているためnullが等しいTypeError: Cannot read property 'content' of undefined

+0

。これは、lastMessageが存在しない可能性があることを意味します(nodeJSが非ブロックであるため、メッセージが技術的に送信される可能性があるため)lastMessage属性が正しくない – dGRAMOP

+0

したがって、node.jsはスレッドを待機しません次のコマンドに移動する前に終了しますか?もしそうなら、 'setTimeout()'を使ってコンソールにメッセージを記録する3秒待つようにしました。実行を継続する前にメッセージが実際に送信されたことを検出する方法はありますか? – Meh

+0

コールバック。 sendMessage(String)はコールバックパラメータをオーバーロードしますか? – dGRAMOP

答えて

0

理由と'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); 
     } 
    } 
} 
+0

ボットにメッセージを送信した後にコードスニペットを実行しましたが、コンソールに何も出力しません。 – Meh

+0

@Mehこれは私のために働く?正確なコードブロックの私の編集を見てください。私は – Monacraft

+0

でそれをテストしました。私はdiscord.jsライブラリを更新しました。どうやら、私が使っていたバージョンは2017年1月からだった。 – Meh

関連する問題