Autor Tema: Saber si un usuario está en el servidor  (Leído 1774 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Ara

  • Novato
  • *
  • Mensajes: 9
  • Karma: +0/-1
Saber si un usuario está en el servidor
« en: Diciembre 30, 2009, 10:21:06 am »
Hola,

Existe algún comando para saber si un usuario está conectado a un servidor? Por si depende del servidor, es el irc-hispano.

Puedo hacerlo con un whois y si dice

XXX no está en el IRC. Consultando información WhoWas...

Es que no está, pero para tardar menos

Muchas gracias!

Desconectado Lokiyo

  • Administrador
  • Miembro Senior
  • *****
  • Mensajes: 462
  • Karma: +11/-0
  • Sexo: Masculino
    • El revoltijo de Lokiyo
Re: Saber si un usuario está en el servidor
« Respuesta #1 en: Diciembre 30, 2009, 12:23:17 pm »
Ese comando es el más indicado para saber si un usuario concreto está en el servidor y es inmediato. No entiendo bien qué quieres decir con lo de tardar menos.

Si lo que quieres es tener en todo momento localizados determinados nicks, lo que puedes usar es el notify.
El notify es una lista en la que tu añades nicks, y es el servidor el que te indica en todo momento si el usuario está conectado o no. Además te muestra una notificación cada vez que el usuario se conecta o se desconecta.


PD: Muevo esto a otro foro ya que no está relacionado con scripting.

Desconectado Ara

  • Novato
  • *
  • Mensajes: 9
  • Karma: +0/-1
Re: Saber si un usuario está en el servidor
« Respuesta #2 en: Diciembre 30, 2009, 07:07:57 pm »
Bueno, es que tengo la lista de usuarios registrados en el canal, entonces los que no están los invito.

Lo de más rápido, digo al instante:

if ($nick !ison $chan) && ($nick ison $server) { .invite $nick $chan }

O algo parecido

Quiero eso para que no salga "XXX no está en el IRC. Consultando información WhoWas..." cuando le invite y no esté

Saludos

Desconectado Lokiyo

  • Administrador
  • Miembro Senior
  • *****
  • Mensajes: 462
  • Karma: +11/-0
  • Sexo: Masculino
    • El revoltijo de Lokiyo
Re: Saber si un usuario está en el servidor
« Respuesta #3 en: Diciembre 31, 2009, 10:36:48 am »
El único otro comando que te puede servir para saber si alguien está conectado al servidor es /who. Prueba con ese.

Con el /whois, tendrías que interceptar el evento raw (numérico) de la respuesta del servidor y de esta manera evitar que mIRC/IRcap te muestren el mensaje. Pero realmente eso es una respuesta del servidor, así que rigurosamente hablando, no hay manera de evitarla. Como ya digo, sí se puede hacer que mirc no te la muestre, pero eso dejaré que otros con más tiempo y que les guste más el scripting te lo busquen.

Por aclarar lo de más rápido/al instante: no es posible, ya que por lógica hay que consultar al servidor si el usuario está o no, y es el servidor el que te da la respuesta, que tu ves en el IRcap como "XXX no está en el IRC. Consultando información WhoWas...". La única forma de estar informado en todo momento, es como te digo, usar el notify, en cuyo caso, el mIRC/IRcap sí que sabe internamente que el usuario está conectado.


Vuelvo a dejar esto en el scripting, Perdón por moverlo tanto.
« última modificación: Diciembre 31, 2009, 10:42:02 am por Lokiyo »

Desconectado Red_Erik

  • Moderador Global
  • Miembro Senior
  • ****
  • Mensajes: 348
  • Karma: +10/-0
  • Sexo: Masculino
Re: Saber si un usuario está en el servidor
« Respuesta #4 en: Enero 02, 2010, 04:31:50 pm »
Si tienes una lista de registrados del canal, deberías añadirlos tambien en tu lista de Notify, para aprovechar el evento ON NOTIFY. Como todos los de la lista "registrados" van a estar en la lista "notify", pero no necesariamente todos los de la lista "notify" tienen que estar en la lista "registrados" hay que crear las condiciones necesarias para que el evento se dispare adecuadamente. Algo asi:

on 1:NOTIFY: { if ( $nick isin $read(listaregistrados.txt, w, $nick)  ) {
;
;comandos_para_invitar_etc
;
;
    }
}


Puedes usar un timer para dar tiempo al nick a que entre voluntariamente al canal, antes de cursar la invitación.