Domanda

Nel mio IRC Bot, ci sono alcuni comandi che voglio essere utilizzabile solo da me, e voglio controllare per assicurarsi che chiunque usi il mio nome si identifica con nickserv (IDENT). Non potevo, però, trovare un modo semplice per determinare questo, è per questo che sono qui.

Freenode e Rizon sono le reti di destinazione primaria, se quello che conta.

Edit: Sono stato in realtà a conoscenza dei vari usermodes per gli utenti IDENT (! Anche se non ho prestato abbastanza attenzione per rendersi conto che si differenziano); Scusi per non menzionare che prima. La risposta grezza che ricevo da un utente, tuttavia, non comprende i loro usermodes; sembra qualcosa di simile:

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

Credo, quindi, che sto cercando di trovare un modo (con vari IRCd, GRR) per ottenere quelle bandiere. Se, come qualcuno ha detto, Rizon ritorna se qualcuno è l'IDENT in una query WHOIS, allora questo è il genere di cosa che sto cercando.

È stato utile?

Soluzione

Il freenode, l'invio di un messaggio privato a NickServ con il ACC <nickname> messaggio restituirà un numero che indica lo stato di ident dell'utente:

  

La risposta è nella 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

Il comando STATUS <nickname> dà risultati simili a Rizon:

  

La risposta ha questo 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

I vantaggi che questo metodo ha più di un WHOIS:

  1. Informazioni sullo stato ident è sempre inclusa. Con WHOISes, sarà non solo ottenere una linea dire qualcosa sulla falsariga di "identificate con nickserv come tali e quali" se l'utente non è , infatti, l'IDENT.
  2. consistente numero di righe restituito. Dal momento che voglio afferrare il messaggio prima di passare il controllo al resto del mio programma, posso facilmente leggere una riga fuori del buffer (vedo problemi di sincronizzazione in il tuo futuro!), determinare lo stato, e continuare avanti così normale.

Altri suggerimenti

In alcune reti è possibile attivare una funzione chiamata 'identificare-msg'. Su FreeNode lo si fa con l'invio di "CAP REQ identificare-msg" e "CAP END" alla prima connessione al server. Il server risponderà con una risposta che conferma che funzionalità. In seguito, tutti i messaggi e le azioni (CTCP) saranno preceduti con un "+" (l'utente è identificato con NickServ) o "-" (utente non ha identificato con NickServ), per esempio:.

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

registrazione Nick non è parte dello standard IRC. Si è sempre offerto dal server IRC personalizzati e / o bot. Non credo che si sta andando a trovare una soluzione veramente universale, ma NickServ è un'implementazione a disposizione comune, che avrebbe lavorato su molte reti. Wikipedia ha informazioni più .

Si consiglia di eludere il problema del tutto e il vostro registro utente con il bot, invece che con nickserv. Il tuo bot avrebbe poi fare il controllo delle password, e invaliderebbe le credenziali dell'utente quando l'utente si disconnette. Questa sarebbe una soluzione universale.

Come il tuo nome utente è iscritto, prima che il bot si collega, si esegue questo comando:

/ns ghost username password

Questo comando consente di eliminare ogni utente connesso in sul vostro utente, si ricordi che ho usato solo questo a Freenode, non so se funzionerà su un altro server.

Con Freenode, se un utente è identificato a NickServ allora la loro utente ha la + modalità e impostare . Non sono sicuro se Rizon ha qualcosa di simile.

UnrealIRCd e set hybrd + R per gli utenti registrati, non sono sicuro se tutti i server IRC fanno questo, però, è abbastanza unstandardized. Anche su Rizon si può whois e vi dirà se l'utente è registrato.

/NickServ INFO <username>

Questo vi dirà se l'utente è registrato o meno.

ho scoperto il comando tramite questo sito: http://www.deepspace.org/nickserv.htm

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top