Estoy tratando de escribir una función que imprima las listas de nicks en un canal IRC al canal usando Twisted Python. ¿Cómo hago esto? He leído la documentación de la API y solo he visto una pregunta similar a la mía en este sitio, pero realmente no responde mi pregunta. Si supiera cómo obtener la lista de usuarios (o lo que sea que Twisted lo reconozca), podría simplemente iterar la lista usando un ciclo for, pero no sé cómo obtener esta lista.Lista de usuarios en el canal IRC usando Twisted Python IRC framework
6
A
Respuesta
6
El ejemplo vinculado que parece pensar es el mismo, usa WHO
, comando diferente, propósito diferente. La forma correcta es usar NAMES
.
IRCClient extendido para admitir un comando de nombres.
from twisted.words.protocols import irc
from twisted.internet import defer
class NamesIRCClient(irc.IRCClient):
def __init__(self, *args, **kwargs):
self._namescallback = {}
def names(self, channel):
channel = channel.lower()
d = defer.Deferred()
if channel not in self._namescallback:
self._namescallback[channel] = ([], [])
self._namescallback[channel][0].append(d)
self.sendLine("NAMES %s" % channel)
return d
def irc_RPL_NAMREPLY(self, prefix, params):
channel = params[2].lower()
nicklist = params[3].split(' ')
if channel not in self._namescallback:
return
n = self._namescallback[channel][1]
n += nicklist
def irc_RPL_ENDOFNAMES(self, prefix, params):
channel = params[1].lower()
if channel not in self._namescallback:
return
callbacks, namelist = self._namescallback[channel]
for cb in callbacks:
cb.callback(namelist)
del self._namescallback[channel]
Ejemplo:
def got_names(nicklist):
log.msg(nicklist)
self.names("#some channel").addCallback(got_names)
Cuestiones relacionadas
- 1. Cómo usar Twisted para obtener la lista de usuarios de un canal IRC
- 2. Cliente IRC en python
- 3. ¿Canal IRC para desarrolladores de iPhone?
- 4. IRC Bot Python: La mejor manera
- 5. ¿Cómo programo un simple bot de IRC en python?
- 6. Biblioteca de IRC en C#
- 7. .net 2.0 componente IRC
- 8. Objective-C/iPhone IRC Library
- 9. Creando un bot de IRC en Java
- 10. ¿Puede un cliente IRC basado en navegador comunicarse directamente con un servidor IRC?
- 11. ¿Una biblioteca de cliente Python IRC simple que admite SSL?
- 12. Determinar si un usuario es ideal en el IRC
- 13. My Ruby IRC bot no se conecta al servidor IRC. ¿Qué estoy haciendo mal?
- 14. ¿Qué es un buen canal de IRC para la programación de Objective-C y Cocoa?
- 15. ¿Todos los servidores IRC envían 005 RPL_ISUPPORT?
- 16. ¿Hay algún Lex y Yacc IRC activo?
- 17. ¿El mejor servidor de IRC para programar canales?
- 18. Expresión regular para coincidir con el apodo IRC
- 19. IRC Bot: Error - Tiempo de espera de registro
- 20. Estoy buscando un cliente de IRC de JavaScript
- 21. Programación de un cliente IRC (Internet-Relay-Chat) simple
- 22. Android Oficina IRC Horas pregunta sobre Android Bluetooth RSSI
- 23. ¿Por qué mi bot IRC no se conecta?
- 24. pydev y twisted framework
- 25. Envío de datos recibidos en una fábrica Twisted a segunda fábrica
- 26. twisted http client
- 27. Lista de paquetes instalados en el canal
- 28. Python Twisted JSON RPC
- 29. Entrada de teclado usando stdio.StandardIO en twisted python
- 30. La mejor manera de incrustar un cliente de IRC en una página web
dupe http://stackoverflow.com/questions/5305050/how-to-use-twisted-to-get-an-irc-channels-user-list –
Esto no es una tontería, incluso mencioné esa pregunta que vinculó en cuestión, porque NO ES lo que estoy tratando de hacer y NO es útil. – paul
De hecho, es una dupla de esa otra pregunta; Tengo curiosidad por qué piensas que no es así. – Glyph