2017-02-20 3 views
0

Also habe ich versucht, eine Liste verbotener Wörter für einen Bot zu erstellen, den ich für Discord erstelle, ich habe Probleme damit bekommen, nicht zu arbeiten alle.Jede Zeile aus einer Textdatei für eine Liste mit verbotenen Wörtern lesen

Hier ist der Code, den ich ausprobiert habe.

public static string fileName1 = "banned_words.txt"; 
if (e.Message.RawText.Contains(File.ReadLines(fileName1).ToString())) 
    { 
    e.Message.Delete(); 
    Console.WriteLine(e.User.Name + " said " + e.Message.RawText.Clone()); 
    e.Channel.SendMessage(e.User.Mention + " Please do not use that language!"); 
    } 
+0

Wie funktioniert es * nicht *? Wird eine Ausnahme ausgelöst oder wird die Nachricht nicht gedruckt? –

+0

Wie der Inhalt der Datei ausgerichtet ist? Ist diese Single mit Leerzeichen getrennt? –

Antwort

0

Sie fragen, ob die Nachricht die gesamte banned_words Liste enthält als IEnumerable von Strings in einen String umgewandelt kommen, die wahrscheinlich die wörtliche Wert „IEnumerable``String“ oder ähnliche Darstellung ist.

Sie sollten stattdessen jede Zeichenfolge in der banned_words.txt Datei einer nach dem anderen durchsehen und prüfen, ob die Nachricht sie einer nach dem anderen enthält:

foreach (string badWord in File.ReadLines(fileName1)) { 
    if (e.Message.RawText.Contains(badWord)) { 
     //Do stuff 
    } 
} 
+0

Ok, ich hätte das tun sollen, gibt es eine Möglichkeit, Groß- und Kleinschreibung zu ignorieren? –

+0

Ja, Sie können einen anderen Zeichenfolgenvergleich angeben: 'if (e.Message.RawText.Contains (badWord, StringComparison.InvariantCultureIgnoreCase)) {' – Tim

0

auf Hinzufügen, was Tim sagte, können Sie Machen Sie Groß-/Kleinschreibung unempfindlich, indem Sie einfach zwei Großbuchstaben vergleichen, z

foreach (string badWord in File.ReadLines(fileName1)) { 
if (e.Message.RawText.ToUpper().Contains(badWord.ToUpper())) { 
    //Do stuff 
} 
Verwandte Themen