In meinem IRC Bot gibt es einige Befehle, die ich nur für mich verwenden kann, und ich möchte überprüfen, ob jemand, der meinen Namen benutzt, mit nickserv (idented) identifiziert wird. Ich konnte jedoch keinen einfachen Weg finden, dies festzustellen, weshalb ich hier bin.
Freenode und Rizon sind das Hauptziel Netzwerke, wenn das zählt.
Edit: Ich war mir der verschiedenen Usermodes für idented Benutzer bewusst (obwohl ich nicht genug darauf geachtet habe, dass sie sich unterscheiden!); Tut mir leid, dass ich das vorher nicht erwähnt habe. Die rohe Antwort, die ich von einem Benutzer erhalte, schließt jedoch ihre Benutzermodi nicht ein; Es sieht ungefähr so aus:
%Vor%Ich nehme an, dass ich versuche, einen Weg zu finden (mit verschiedenen ircds, grr), um diese Flaggen zu bekommen. Wenn, wie jemand erwähnt, Rizon zurückgibt, ob jemand in einer WHOIS-Abfrage identifiziert ist oder nicht, dann suche ich genau danach.
Bei freenode wird beim Senden einer privaten Nachricht an nickserv mit der Nachricht ACC <nickname>
eine Zahl zurückgegeben, die den Identitätsstatus des Benutzers angibt:
Die Antwort lautet in der Form
%Vor%<nickname> ACC <digit>
:
Der Befehl STATUS <nickname>
gibt ähnliche Ergebnisse für Rizon:
Die Antwort hat dieses Format:
%Vor%
<nickname> <digit>
Die Vorteile, die diese Methode gegenüber einem WHOIS hat:
In einigen Netzwerken können Sie eine Funktion namens 'identify-msg' aktivieren. Auf FreeNode tun Sie dies, indem Sie "CAP REQ identify-msg" und "CAP END" senden, wenn Sie zum ersten Mal eine Verbindung zum Server herstellen. Der Server antwortet mit einer Antwort, die diese Funktion bestätigt. Danach wird allen Nachrichten (und CTCP ACTIONS) ein "+" vorangestellt (Benutzer hat sich mit NickServ identifiziert) oder ein "-" (Benutzer hat sich nicht mit NickServ identifiziert), z. B .:
: liam_neeson! [email protected] PRIVMSG # Erasmus-Testen: + foo
Nick Registrierung ist nicht Teil des IRC-Standards. Es wird immer von angepassten IRC-Servern und / oder Bots angeboten. Ich glaube nicht, dass Sie eine wirklich universelle Lösung finden werden, aber NickServ ist eine allgemein verfügbare Implementierung, die in vielen Netzwerken funktionieren würde. Wikipedia hat weitere Informationen .
Vielleicht möchten Sie das Problem vollständig umgehen und sich Ihren Benutzer anstatt mit NickServ bei Ihrem Bot registrieren lassen. Ihr Bot würde dann die Kennwortprüfung durchführen und die Anmeldeinformationen des Benutzers ungültig machen, wenn sich der Benutzer abmeldet. Dies wäre eine universelle Lösung.
UnrealIRCd und hybrd set + r für registrierte Benutzer, ich bin mir nicht sicher, ob alle IRC-Server dies tun, es ist ziemlich unstandardisiert. Auch auf Rizon können Sie whois und es wird Ihnen sagen, ob der Benutzer registriert ist.
Da Ihr Benutzername registriert ist, bevor Ihr Bot sich anmeldet, machen Sie diesen Befehl:
%Vor%Dieser Befehl wird jeden Benutzer entfernen, der bei Ihrem Benutzer angemeldet ist. Denken Sie daran, dass ich diesen nur in Freenode verwendet habe. Ich weiß nicht, ob er auf einem anderen Server funktionieren wird.