2016-08-30 4 views
-1

Also habe ich in C# programmiert zu versuchen, einen Twitch Chat Bot zu machen. Genauer gesagt habe ich ein Waffenanforderungssystem programmiert.mache es so, dass ein bestimmter Benutzer nur einen Befehl verwenden kann

Im Wesentlichen erlaubt dieses Programm einem Benutzer, einen Befehl zu verwenden! Weaplerrequest, speichert sie dann ihre Anfrage in einer Liste, mit! Nextweapon können Sie sehen, was die nächste Waffe in der Liste ist, damit ein Streamer Waffenanfragen aufnehmen kann ein Spiel mit einem vollautomatischen System.

Wie auch immer auf mein Problem, ich brauche einen Weg, um es so zu machen, dass ein bestimmter Benutzer nur einen Befehl verwenden kann. Ich weiß, dass ich eine Liste brauche, in der die Benutzer gespeichert werden. Ich werde sie manuell schreiben, also brauche ich dafür kein System. Alles, was ich mich wundere, ist die Verwendung einer IF-Anweisung, wie würde ich überprüfen, ob der Benutzer in dieser Liste ist und dann so einrichten, dass nur diese Benutzer diesen Befehl aktivieren und eine Antwort erhalten können.

case "nextweapon": 
{ 
    if (new FileInfo("MyFile.txt").Length == 0) 
    { 
     irc.sendChatMessage("There are no weapons in the list!"); 
     break; 
    } 

    string Lines = File.ReadLines("MyFile.txt").Take(1).First(); 
    //irc.sendChatMessage(Lines); 

    List<string> WeaponList = File.ReadAllLines("MyFile.txt").ToList(); 
    string FirstItem = WeaponList[0]; 
    WeaponList.RemoveAt(0); 
    File.WriteAllLines("MyFile.txt", WeaponList.ToArray()); 
    irc.sendChatMessage(Lines); 
    break; 
} 

Dies ist der Befehl, den ich nur von einem bestimmten Benutzer (n) verwenden möchte.

Entschuldigung, wenn das schrecklich formuliert oder in einem schrecklichen Format ist. Ich habe hier noch nie eine Frage gestellt. Danke im Voraus!

BEARBEITEN Okay! Ich habe nie eine Lösung gefunden. Danke allen für die Ideen & Hilfe! Prost, ich hoffe, ihr genießt den Rest des Tages!

+1

Veröffentlichen Sie keine Bilder von Text. Veröffentlichen Sie den Code einfach inline, markieren Sie ihn und drücken Sie dann die Taste '{'}, um sicherzustellen, dass er formatiert ist. – Blorgbeard

+0

Oh richtig. Entschuldigung, wie ich schon sagte, ich habe das noch nie zuvor benutzt. Mein Fehler. –

+0

So .. Sie können Ihre Frage bearbeiten, um den Code hinzuzufügen. Wie auch immer, um Ihre Frage zu beantworten (vielleicht), können Sie 'List .Contains()' verwenden, um zu sehen, ob ein String in einer 'List ' enthalten ist. – Blorgbeard

Antwort

0
if ((username == "kevkof1994") || (username == "pk191") || (username == "linxzfade")) 
{ 

} 

Dies ist, wie ich das Problem gelöst, es ist nicht der effizienteste Weg, aber es gibt nur eine begrenzte Benutzer, die ich brauchte, so machen Sie eine Liste nicht notwendig war.

Offensichtlich müssen Sie die Namen durch Ihre eigenen Namen ersetzen, die Sie verwenden möchten, um den Befehl zu verwenden. Zum Beispiel:

(username == "RandomStranger") 
{ 

} 
-1

Sie würden die Datei in einen Puffer lesen, Zeile für Zeile aufteilen, diese Zeilen durchlaufen und die Schleife unterbrechen, wenn der Benutzername gefunden wird. Ich bin nicht auf C# verwendet, aber der folgenden Pseudo-Code soll meine Idee hervorheben:

username = /* the current user's username */; 
userfile = readfile('users.txt'); 
userlist = split(userfile, "\n"); 
is_valid = false; 

for user in userlist 
    if user equals username 
     command_is_valid = true; 
     break; 

if command_is_valid: 
    // your code 

else 
    // do nothing 

Ich bin sicher, es gibt einen besseren Weg, es zu tun, weil, wie ich sage, ich bin nicht auf C# verwendet. Eine andere Anmerkung: MyFile.txt ist wahrscheinlich nicht der beste Name für Ihre Flat-File-Datenbank. Hoffe das hilft!

+0

Vielen Dank für den Hinweis! Ja, ich weiß es ist nicht, ich habe nur die Grundlagen des Systems gemacht. Jetzt füge ich ein paar Schnickschnack hinzu und dann werde ich es wirklich mit kohärenten Variablen und Listen machen! Danke für den Hinweis. –

+0

@JoshJones: Kein Problem, nur gedacht, dass ich darauf hinweisen sollte. Viel Glück mit Ihrem Projekt! Alles Gute. –

2

Fügen Sie Ihre speziellen Benutzer aus einer Quelle (In-Code, Text, Datenbank usw.) in eine Variable List<string> mit der Funktion List<string>.Add(strUserName) hinzu.

List<string> lstCertainUsers = new List<string>(); 
/* 
* ToDo: Add users from source (in-code, text, database, etc.) into lstCertainUsers 
*/ 

Dann holen Sie sich die Liste der Benutzer und überprüfen Sie, ob sie den bestimmten Benutzer enthält.

// Check if user has access to special commands 
if (lstCertainUsers.Contains(strUserName)) 
{ 
    /* nextweapon code here */ 
} 
+0

Vielen Dank für die Antwort! Ich schätze es. –

+1

Ich sehe nicht oft Leute Präfixing Variablennamen in diesen Tagen –

+0

Also habe ich das versucht, aber es funktioniert nicht, wie ich es will, dass es funktioniert. All dies überprüft, ob der Benutzername in der Datei enthalten ist und führt den Namen dann aus. Technisch bedeutet dies, dass jeder den Befehl verwenden darf, solange sich dieser Benutzername in der Datei befindet. –

Verwandte Themen