2017-01-22 9 views
2
Service.CreateCommand("delete") 
     .Do(async (e) => { 
      var MessageToDelete = await e.Channel.DownloadMessages(150); 
      await e.Channel.DeleteMessages(MessageToDelete); 
}); 

コマンドを実行すると、私のbotが150個のメッセージを削除しようとしています。しかし、私がコマンドをテストするとき、それは動作しませんし、ボットは何もしません。 try-catch文を使ってみましたが、常にcatchブロックに移動します。とにかくこれを修正するには?メッセージは削除されませんか?

また、メッセージを削除できるユーザーだけがこのコマンドを使用できるようにするにはどうすればよいですか。

+3

例外は何ですか? –

+0

ちょうど例外がスローされました。私はちょうど2つの異なる行にキャッチブロックを配置しようとし、それはたいてい 'var MessageToDelete = await e.Channel.DownloadMessages(150);にキャッチしました。 – Jack

答えて

0

まず、この絵を見てみましょう:

enter image description here

あなたがダウンロードできるメッセージの上限は、あなたがよりダウンロードしようとした場合、それはエラーになりますことを100意味です。 150個のメッセージを削除する場合は、2行のコードを再度ループしたり、手動でコピーして貼り付けたりすることで、タスクを2回実行させることができます。 [タイマーなしで何度も繰り返しループさせないでください。]

また、メッセージを削除できるユーザーだけがこのコマンドを使用できるようにするにはどうすればよいですか?

if..elseステートメントを使用して

if (e.User.ServerPermissions.ManageMessages == true) ...

あなたはまたなど、禁止やもののような休息のためにこれを行うことができ、その単にe.User.ServerPermissions.<PERMISSIONS>

私はあなたの不和の詳細を読んで推薦.netライブラリからgithub here

関連する問題