Pregunta

En mi Bot de IRC, hay algunos comandos que quiero sólo para ser utilizable por mí, y quiero comprobar para asegurarse de que cualquier persona que utilice mi nombre se identifica con nickserv (idented). No podía, sin embargo, encontrar una manera fácil de determinar esto, y por eso estoy aquí.

Freenode y Rizon son las redes de destino primarias, si lo que importa.

Edit: En realidad estaba consciente de los diversos modos de usuario para los usuarios idented (! Aunque no prestaba la atención suficiente para darse cuenta de que difieren); lo siento por no mencionar que antes. La respuesta cruda que recibo de un usuario, sin embargo, no incluye sus usermodes; se ve algo como esto:

:liam_neeson!n=pearson@71-9-55-124.dhcp.snlo.ca.charter.com PRIVMSG #erasmus-testing :foo

Supongo, entonces, que estoy tratando de encontrar una manera (con varias IRCds, GRR) para conseguir esas banderas. Si, como alguien ha mencionado, Rizon devuelve si alguien se idented en una consulta WHOIS, entonces ese es el tipo de cosas que estoy buscando.

¿Fue útil?

Solución

En freenode, el envío de un mensaje privado a NICKSERV con el ACC <nickname> mensaje devolverá un número que indica el estado de ident del usuario:

  

La respuesta está en la forma <nickname> ACC <digit>:

 0 - account or user does not exist
 1 - account exists but user is not logged in
 2 - user is not logged in but recognized (see ACCESS)
 3 - user is logged in

El comando STATUS <nickname> da resultados similares en Rizon:

  

La respuesta tiene el siguiente formato:

     

<nickname> <digit>

 0 - no such user online or nickname not registered
 1 - user not recognized as nickname's owner
 2 - user recognized as owner via access list only
 3 - user recognized as owner via password identification

Las ventajas que este método tiene más de una WHOIS:

  1. Información sobre el estado de ident se incluye siempre. Con WHOISes, usted acaba de no obtener una línea que diga algo en la línea de "identificados con nickserv como tal y tal" si el usuario no es de hecho, idented.
  2. número consistente de líneas regresó. Ya que quiero agarrar el mensaje antes de pasar el control al resto de mi programa, que fácilmente puede leer una línea de salida de la memoria intermedia (veo problemas de sincronización en su futuro!), determinar el estado, y continuar como normal.

Otros consejos

En algunas redes puede activar una función llamada 'identificar-msg'. En FreeNode lo hace mediante el envío de "PAC REQ-msg identificar" y "END CAP" la primera vez que se conecte al servidor. El servidor responderá con una respuesta confirmando esa característica. Posteriormente, todos los mensajes (y acciones CTCP) estarán precedidos con un "+" (el usuario se ha identificado con NickServ) o un "-" (usuario no se ha identificado con NickServ), por ejemplo:.

:! Liam_neeson n=pearson@71-9-55-124.dhcp.snlo.ca.charter.com PRIVMSG # erasmus-prueba: + foo

registro Nick no es parte del estándar de IRC. Siempre es ofrecido por los servidores y / o IRC bots personalizados. No creo que vas a encontrar una solución verdaderamente universal, pero NiCK es una aplicación disponible común, que funcionaría en muchas redes. Wikipedia tiene información más .

Es posible que desee dejar de lado el problema por completo y tienen su registro de usuario con su robot, en lugar de con nickserv. Su bot luego hacer la comprobación de contraseñas, y invalidaría las credenciales del usuario cuando el usuario cierra la sesión. Esta sería una solución universal.

A medida que se ha registrado su nombre de usuario, antes de su robot entra, lo hace este comando:

/ns ghost username password

Este comando eliminará cualquier usuario que se registra en en el usuario, recordar que sólo se utiliza en esta Freenode, no sé si va a funcionar en otro servidor.

Con Freenode, si un usuario se identifica a NickServ entonces su usuario tiene la + modo e establecer . No estoy seguro si Rizon tiene algo similar.

UnrealIRCd y conjunto hybrd + r para usuarios registrados, no estoy seguro de si todos los servidores IRC hacer esto, sin embargo, es bastante no estandarizada. También en Rizon puede whois y le dirá si el usuario está registrado.

/NickServ INFO <username>

Esto le dirá si el usuario está registrado o no.

descubrí el comando a través de este sitio: http://www.deepspace.org/nickserv.htm

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top