Compito
Crea un semplice bot IRC che esegua compiti semplici come salutare l'utente.
Dettaglio
(Potresti vedere questo documento RFC .)
Scrivi un programma completo che esegua questi:
Il programma inserisce
nicknameerealnamedall'utente.- Tutto
nicknameerealnamequale forma è[A-Za-z0-9]+dovrebbe essere consentito, ma non è importante se sono consentite altre forme. Ad esempio, se l'utente desidera1234qwertycomenicknamee5319009comerealname, il programma dovrebbe usare quei nomi, ma non è importante se il programma può usare^^☆Rick Astley☆^^(che include caratteri non alfabetici e decimali) come (nicknameorealname) o meno, anche se questo nome potrebbe essere rifiutato dal server.
- Tutto
Il programma immette
serverAddressdall'utente.- La forma di
serverAddressèserverIP:serverPort, dove siserverIPtrova l'indirizzo IP del server edserverPortè il numero di porta del server.
- La forma di
Il programma si collega alla porta
serverPortsul server IRCserverIPe dovrebbe impostare il suo nickname comenicknamee il nome reale comerealnameinviandoUSER realname 0 * :realnameeNICK nickname.Il programma inserisce un singolo
channelNameche non include#e si unisce al canale#channelName.Invia un messaggio privato
Hello, world!al#channelNamecanale in questo modo:PRIVMSG #channelName :Hello, world!Quindi, il programma esegue queste operazioni:
A. Se qualcuno si unisce, salutandolo dicendo
Hello, @!a#channelName, dove @ è il soprannome di lui / lei.B. Se il programma viene espulso, prova a riconnetterti.
C. Se una persona viene cacciata o bandita, diciamo
POW HAHA.D. Se una persona lascia (
PARToQUIT), direGoodbye, @!, dove @ è il soprannome di lui / lei.E. Se qualcuno dice del testo incluso
Turing testoturing test, dìI'm a human!.F. Se qualcuno dice del testo incluso
6*9, esci inviandoQUIT :42al server.G. Se qualcuno dice del testo incluso
all your base are belong to us(senza distinzione tra maiuscole e minuscole), esci inviandoQUIT :What you say!al server.H. Se qualcuno dice che un testo che precede uno spazio e sopra gli atti non viene eseguito dal testo, indica la somma del codice di tutti i caratteri (tranne il primo spazio) nel testo.
Se si è verificato un errore
Se si verifica un errore (come errore di connessione o non valido nickname), puoi fare quello che vuoi fare. Ad esempio, se nicknameè già in uso, il programma potrebbe arrestarsi, ricevere un nuovo nicknameutente o cambiare automaticamente nicknamee riprovare.
Restrizione
Il programma
- Non utilizzare funzioni interne o librerie destinate alla creazione di client / bot IRC. cioè qualcosa come le librerie client IRC
- Dovrebbe chiedere cosa verrà immesso, prima che ottenga un input . Ad esempio, prima di ingressi
serverAddress, esso dovrebbe indurreWrite the address of server:,serverIP:serverPort >,serverAddress >, o un certo testo che l'utente può riconoscere. - Dovrebbe funzionare su più server IRC usando UTF-8. (cioè non per singolo server)
- I messaggi inviati al server non dovrebbero esserlo
NOTICE. (RFC 2812, 3.3.2 Avviso: la differenza traNOTICEePRIVMSGè che le risposte automatiche NON DEVONO MAI essere inviate in risposta a unNOTICEmessaggio.) - Dovrebbe inviare un messaggio da dove proviene la richiesta (
#channelNameonickname). - Dovrebbe
PONGquandoPINGed, ovviamente.
PS
Bene, l'ho appena fatto, perché non c'erano enigmi sul bot IRC.
modificare
Dopo aver letto il commento di @ dmckee, ho cambiato la regola per scegliere il vincitore.
Predefinito
bonus= +0Se in qualche modo il programma può connettersi a un canale (anche se non lo è
#channelName),bonus= 1Se il programma può eseguire i passaggi 1 ~ 5,
bonus* = 2.Per ogni attività A ~ H al punto 6, se il programma implementa,
bonus* =1.2.Per ogni sei restrizioni, se il programma lo segue,
bonus* =1.05.
e score = int(codelength/bonus).
Il programma con il punteggio più basso è il vincitore. Se due risposte hanno lo stesso punteggio, vince la risposta con il punteggio più alto.
Modifica EDIT: penso 1.2che 1.05al punto 4 e 5 dovrebbe essere regolato leggermente più grande .. Cosa ne pensi di questo?
Il vincitore è deciso, tuttavia, penso che ci fossero troppe poche voci.
Chiunque può ancora inviare il codice ..: P