2017-02-08 2 views
0

Ich möchte meinem DiscordBot beibringen, wie mit einem Input umzugehen ist, nachdem der Befehl geschrieben wurde.C# Discord Bot - Benutzereingabe über einen Befehlsparameter

schaffe ich den Befehl so:

private void CreateCommand(string commandName, string parameterName, ParameterType parameterType , string commandValue) // Register this command by the name and the answer value 
     { 
      commands.CreateCommand(commandName).Parameter(parameterName, parameterType).Do(async (e) => 
      { 
       await e.Channel.SendMessage(commandValue); // Bots answer 
      }); 
     } 

Ich benutze diese Methode zu kurz meinen Code der nächsten Methode:

private void Add(string commandName, string commandValue, string commandDescription) // Add a simple command to the List 
     { 
      singleCommandList.Add(new Tuple<string, string, string>(commandName, commandValue, commandDescription)); 
     } 

     private void Add(string commandName, string parameterName, ParameterType parameterType, string commandValue, string commandDescription) // Add commands with Parameters to the List 
     { 
      parameterCommandList.Add(new Tuple<string, string, ParameterType, string, string>(commandName, parameterName, parameterType, commandValue, commandDescription)); 
     } 

Und das ist die Methode meiner CommandList Füllung

private void FillCommandList() // Add all the commands to the List 
     { 
      Add("test", "success", "test"); // simple Command 
      Add("search", "onlineSearch", ParameterType.Multiple, Search("text to look for"), "Google it"); 
     } 

Mein Problem ist, dass ich nicht weiß, wie man den Parameter der Methodefüllt. Was müsste ich dort passieren? Etwas mit e.User ..?

Antwort

0

Ich habe meine eigene Discord.Net bietet mit diesem inoffiziellen Discord C# Wrapper erstellt:

An unofficial .NET API Wrapper for the Discord client
Their Discord Server

Die in der Dokumentation angegebenen Beispiele sind nicht immer auf dem neuesten Stand, da sie ein riesigen gemacht und Code-Breaking Rewrite ihrer API, aber es ist wirklich gut gemacht mit den asynchronen Mustern.
Das sollte Ihnen mehr Beispiele und Ideen geben, wie Sie mit Ihrer Idee weitermachen können.

Stellen Sie sicher, dass Sie die Version 1.0 verwenden - den Dev-Zweig. (ab sofort)

Alles andere ist auf ihrem Github beschrieben. Wenn du noch Antworten brauchst, schließe dich ihrer Dissonanz an. Sie sind sehr hilfreich.

0

Verwenden Sie e.GetArg("parameterName"), um den Parameter "parameterName" zu erhalten. Dies funktioniert, wenn die ParameterTypeOptional oder Required ist.

Wenn Ihr ParameterTypeMultiple ist, versuchen:

string search = string.Join(" ", e.Args) 

die gesamte "onlineSearch" Parameter zu erhalten.

+0

Tatsächlich hat sich die gesamte API geändert. – TheOnlyMrCat

Verwandte Themen