2017-05-29 4 views
-4

Ich möchte einen Zwiespalt Bot machen, bestimmte Wörter zu blacklist und dafür habe ich versucht, zuerst eine Nachricht zu lesen, die von gesendet wurde ein Benutzer und überprüfen, ob ein Wort in dieser Nachricht ist auf der schwarzen Liste und dann entfernen Sie die Nachricht, aber ich weiß nicht, wie der bot die Nachrichten lesenIch möchte eine Zwietracht Blacklist Bot machen, die Nachrichten liest, aber ich kann ihn nicht die Nachrichten lesen

+0

Fragen, die fragen "wo fange ich an" sind in der Regel zu weit gefasst und passen nicht gut zu dieser Website. Die Leute haben ihre eigene Methode, um das Problem anzugehen, und deshalb kann es keine richtige Antwort geben. Werfen Sie einen guten Blick auf [** wo zu starten **] (https://softwareengineering.meta.stackexchange.com/questions/6366/where-to-start/6367#6367), dann adressieren Sie Ihren Beitrag. – rene

Antwort

0

Um Nachrichten zu lesen, müssen Sie eine Callback-Funktion zu dem MessageReceiven-Ereignis zuweisen, dass Discord.net bietet Ihnen.

public class Program { 

    public static DiscordClient client; 

    static void Main(string[] args) { 

     // Create a discord client 
     client = new DiscordClient(x => { 

       x.AppName = "Your App Name"; 

       x.AppUrl = ""; 

       x.MessageCacheSize = 0; 

       x.UsePermissionsCache = true; 

       x.EnablePreUpdateEvents = true; 

       x.LogLevel = LogSeverity.Debug; 

       x.LogHandler = OnLogMessage; 

       }); 

     // Assign a callback to the MessageRecieved event on client 
     client.MessageReceived += OnMessageRecieved; 

    } 

    // Our MessageRecieved callback 
    public static void OnMessageRecieved(object sender, MessageEventArgs args) { 
     // Your code to handle messages here, the message string can be accessed by args.Message.Text 
    } 

} 
+0

danke, dass irgendwie geholfen, aber ich kann nicht herausfinden, wie man überprüft, ob die Nachricht auf der schwarzen Liste ist und löschen, wenn es ist.Ich bekomme, dass ich schreiben muss, was ich mit der Nachricht in diesen Klammern tun will, aber ich kann Benutze nicht die gleichen Zeilen wie in einem Befehl, der von einer Person geschrieben wurde, also wenn du mir noch einmal helfen könntest, wäre ich super dankbar. – ComxT

0

Ok, so habe ich etwas und jetzt habe ich die

public static async void OnMessageReceived(object sender, MessageEventArgs e) 
    { 
     if (e.Message.Text.Contains(toBlacklist.ToString())) 
     { 
      Message[] blacklistedMessagesToDelete; 
      blacklistedMessagesToDelete = await e.Channel.DownloadMessages(1); 

      await e.Channel.DeleteMessages(blacklistedMessagesToDelete); 
     } 
    } 

aber der toBlacklist ist ein Array mit mehreren Worten in ihm, und wenn ich nicht passiere in einem String in Anführungszeichen statt es, wird es die Nachricht

0

Einige sehr einfach und schlampig Code nicht zu löschen, aber es sollte arbeiten

public static async void OnMessageReceived(object sender, MessageEventArgs e) 
{ 
    bool found = false; //temporary bool, most likely unneeded 
    foreach (var word in toBlacklist) 
    { 
     if (e.Message.RawText.ToLower().Contains(word.ToLower())) 
     { 
      found = true; 
     } 
    } 
    if (found) 
    { 
     await e.Message.Delete(); 
    } 
} 
Verwandte Themen