2016-12-14 12 views
0

Ich bin gerade dabei, mit C# und der Discord.NET-API meinen eigenen Diskord-Bot zu erstellen, aber da die Dokumentation begrenzt ist und ich nur für eine begrenzte Zeit in C# programmiert habe, Ich habe ein Problem festgestellt.Wie ziele ich auf einen bestimmten Benutzer?

Ich habe einen Befehl zum Herunterfahren des Bot aus dem Diskord-Chat gemacht, mein Problem ist, dass jeder diesen Befehl verwenden kann, um es herunterzufahren, und ich habe keine Ahnung, wie Sie einen bestimmten Benutzer so zielen wird nicht ausgeführt, wenn jemand anderes den Befehl verwendet.

Mein Code:

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

} 

Vielen Dank im Voraus, wenn es irgendwelche Informationen habe ich verpasst, dass für eine Korrektur nützlich sein könnten, fragen Sie mich. :)

+0

Sie können die Benutzer-ID Äther überprüfen, bevor Sie den Befehl oder integrieren [Berechtigungen] Ausführung (http://rtd.discord.foxbot.me/ en/legacy/features/permissions.html) – Jim

Antwort

0

Wenn Sie die erlaubten Person Zwietracht ID mit der Verwendung (die 4 Zahlen) in Ordnung sind, dann können Sie verwenden: e.User.Id.ToString().Equals("####")

0

Da Sie nicht angeben, Ihr, wem Sie Ihre Befehle in der Lage sein wollte, verwenden nur, ich werde es so nehmen, dass nur du (der Bot-Besitzer) in der Lage sein wird, den Befehl zu verwenden.

Erstens, kopieren Sie Ihre Benutzer-ID in Dissonanz. Sie können dies tun, indem Rechtsklick auf Ihren Namen in Zwietracht und klicken Sie auf ‚Kopie ID‘: http://prnt.sc/dw9zcw [Stellen Sie sicher, dass Entwicklermodus haben, um eingeschaltet zu tun]

Dann können Sie diese versuchen:

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); 
       } 
      }); 

} 

Verwenden Sie im Grunde nur If-Else-Anweisungen, um zu überprüfen, ob die ID des Benutzers in Zwietracht der Besitzer ist. Alternativ funktioniert das, was @chessburgur vorgeschlagen hat auch im if Zustand.

Hoffe das beantwortet Ihre Frage.

+0

Vielen Dank! Das war genau das, was ich brauchte. – HallowedFlux

0

Während die Antwort von HallowedFlux gut ist, sollten Sie es um so (sauberen Code + leicht wieder zu verwenden), um etwas zu ändern:

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

Es kann auch für die Überprüfung von Berechtigungen verwendet werden, usw. können Sie ändern es eine Nachricht an den Chat-aswell wie bei Bedarf auszusenden so:

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