Tarea
Haga un bot IRC simple que realice tareas simples como saludar al usuario.
Detalle
(Puede ver este documento RFC ).
Escriba un programa completo que realice estos:
Las entradas del programa
nicknameyrealnamedel usuario.- Todos 
nicknameyrealnamequé formulario se[A-Za-z0-9]+debe permitir, pero no es importante si se permiten otros formularios. Por ejemplo, si el usuario quiere1234qwertyasnicknamey5319009asrealname, el programa debe usar esos nombres, pero no es importante si el programa puede usar^^☆Rick Astley☆^^(que incluye no alfabeto y decimales) como (nicknameorealname) o no, incluso si este nombre puede ser rechazado por el servidor 
- Todos 
 Las entradas
serverAddressdel programa del usuario.- La forma de 
serverAddressesserverIP:serverPort, dondeserverIPestá la dirección IP del servidor yserverPortes el número de puerto del servidor. 
- La forma de 
 El programa se conecta al puerto
serverPorten el servidor IRCserverIP, y debe establecer su apodo comonicknamey el nombre realrealnameal enviarUSER realname 0 * :realnameyNICK nickname.El programa ingresa un solo
channelNameque no incluye#, y se une al canal#channelName.Envía un mensaje privado
Hello, world!al#channelNamecanal como este:PRIVMSG #channelName :Hello, world!Luego, el programa hace lo siguiente:
R. Si alguien se une, salúdelo diciéndole
Hello, @!a#channelName, donde @ es el apodo de él / ella.B. Si el programa es pateado, intente volver a unirse.
C. Si una persona es expulsada o expulsada, diga
POW HAHA.D. Si una persona se va (
PARToQUIT), digamosGoodbye, @!, donde @ es el apodo de él / ella.E. Si alguien dice algún texto que incluya
Turing testoturing test, digamosI'm a human!.F. Si alguien dice algún texto incluido
6*9, salga enviándoloQUIT :42al servidor.G. Si alguien dice algo de texto
all your base are belong to us(sin distinción entre mayúsculas y minúsculas), salga enviándoloQUIT :What you say!al servidor.H. Si alguien dice que un texto que precede con un espacio y los actos anteriores no son realizados por el texto, diga la suma de charcode de todos los caracteres (excepto el primer espacio) en el texto.
Si ocurre un error
Si nicknamese produce un error (como un error de conexión o no válido ), puede hacer lo que quiera hacer. Por ejemplo, si nicknameya está en uso, el programa puede detenerse, recibir una nueva nicknamedel usuario o cambiar automáticamente nicknamey volver a intentarlo.
Restricción
El programa
- No debe usar ninguna función interna o biblioteca que sea para la creación de clientes / bots IRC. es decir, algo así como las bibliotecas de clientes IRC
 - Debe solicitar lo que ingresará, antes de que reciba una entrada . Por ejemplo, antes de las entradas 
serverAddress, se debe impulsarWrite the address of server:,serverIP:serverPort >,serverAddress >, o algún texto que el usuario puede reconocer. - Debería funcionar en varios servidores IRC utilizando UTF-8. (es decir, no para un solo servidor)
 - Los mensajes enviados al servidor no deberían ser 
NOTICE. (RFC 2812, 3.3.2 Aviso: la diferencia entreNOTICEyPRIVMSGes que las respuestas automáticas NUNCA DEBEN enviarse en respuesta a unNOTICEmensaje). - Debe enviar un mensaje de donde proviene la solicitud ( 
#channelNameonickname). - Debería 
PONGcuandoPINGed, por supuesto. 
PD
Bueno, acabo de hacer esto, porque no había rompecabezas sobre el bot IRC.
Editar
Después de leer el comentario de @ dmckee, cambié la regla para elegir al ganador.
Predeterminado
bonus= +0Si de alguna manera el programa puede conectarse a un canal (incluso si no lo es
#channelName),bonus= 1Si el programa puede realizar los pasos 1 ~ 5,
bonus* = 2.Para cada tarea A ~ H en el paso 6, si el programa implementa,
bonus* =1.2.Por cada seis restricciones, si el programa sigue eso,
bonus* =1.05.
y score = int(codelength/bonus).
El programa con la puntuación más baja es el ganador. Si dos respuestas tienen el mismo puntaje, entonces gana la respuesta con los votos más altos.
Editar editar: Pienso 1.2y 1.05en el paso 4 y 5 se debe ajustar ligeramente más grande .. ¿Qué opinas de esto?
El ganador se decide, sin embargo, creo que hubo muy pocas entradas.
Cualquiera puede enviar el código ...: P

Respuestas:
PHP - 121 puntos
Puntuación
Código
Nota al margen
Mi respuesta en realidad difiere ligeramente de las instrucciones; las instrucciones dicen usar el
realnameprimer parámetro delUSERcomando cuando me registre, pero usé el apodo en su lugar. Esto se debe a querealnamese permite tener espacios, mientras que este parámetro no. Sin embargo, es un punto discutible, ya que cambiar la variable pararealnamesería exactamente el mismo recuento de caracteres.fuente
Python - 125 puntos
puntaje matemático (pitón):
código:
fuente
Perl, 66 puntos
Puntuación
Código
(nuevas líneas para presentación solamente, no contadas y mucho menos aceptables)
Nota al margen
El subpaso "TODAS TU BASE PERTENECEN A NOSOTROS" probablemente no valga la pena su recuento de caracteres, pero si lo elimino no tendría el buen recuento de caracteres. Tío.
fuente
Ruby, 28 puntos
Puntuación
Código
fuente
Ruby, 65 puntos
Puntuación
Código
fuente