2016-12-14 8 views
0

私は現在、C#とDiscord.NET APIを使用して自分の不調のボットを作っていますが、ドキュメンテーションが限られているため、限定された期間C#私は問題に遭遇しました。特定のユーザーをターゲットにする方法

私はDiscordチャットの中からボットをシャットダウンするように指示しました。私の問題は、誰もが実際にこのコマンドを使用してシャットダウンすることができるということです。他の誰かがコマンドを使用したときには実行されません。

マイコード:事前に

private void RegisterShutdownCommand() 
{ 
    commands.CreateCommand("exit") 
     .Do((e) => 
      { 
       Environment.Exit(0); 
      }); 

} 

おかげで、私はそれが修正のために役に立つかもしれない逃したすべての情報がある場合は、私に尋ねます。 :)

あなたが許可された人の不和のID(4数字)を使用してOKであれば
+0

コマンドを実行する前にユーザーIDを確認したり、[権限](http://rtd.discord.foxbot.me/)を統合してチャットにメッセージを送信することもできます。 en/legacy/features/permissions.html) – Jim

答えて

0

は、あなたが使用することができます。 e.User.Id.ToString().Equals("####")

0

あなたはあなたのコマンドを使用できるようにしたかったあなたのユーザーを指定しませんでしたので、私はそれをあなた(ボットの所有者)だけがコマンドを使うことができるようにします。

まず、あなたのユーザーIDをdiscordにコピーしてください。あなたが不和で右クリックし、あなたの名によってそうと「コピーID」をクリックすることができます:[あなたが開発者モードは、そうするためにオンになっていることを確認してください] http://prnt.sc/dw9zcw

その後、あなたはこれを試すことができます。

private void RegisterShutdownCommand() 
{ 
    commands.CreateCommand("exit") 
     .Do((e) => 
      { 
       if (e.User.Id != <Your_User_ID>) 
       { 
        /*Code to execute when its not the owner.*/ 
       } 
       else 
       { 
        Environment.Exit(0); 
       } 
      }); 

} 

基本的にはちょうど不和で、ユーザーのIDが所有者であるかどうかを確認するためのif-else文を使用しています。 また、どのような@chessburgurも提案if状態で動作します。

これはあなたの質問にお答えします。あなたが変更することができ

commands.CreateCommand("exit") 
    .AddCheck((command, user, channel) => user.Id == <Your_User_ID>) 
    .Do((e) => 
     { 
      Environment.Exit(0); 
     }); 

それは、などの権限をチェックするためにも使用することができます:

+0

ありがとうございました!これはまさに私が必要としたものでした。 – HallowedFlux

0

HallowedFluxによって答えは良いですが、あなたがこの(クリーンコード+再利用しやすい)のようなものに周りにそれを変更する必要があります

commands.CreateCommand("exit") 
    .AddCheck((command, user, channel) => user.Id == <Your_User_ID>, "Only the owner can use this command!") 
    .Do((e) => 
     { 
      Environment.Exit(0); 
     }); 
関連する問題