|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Nov 2009
Messaggi: 50
|
[python] bot
salve a tutti,
ho visto alcuni bot in irc che sono collegati come normali utenti, ma quando scrivi il loro nome in una frase e usi magari parole particolari ti rispondono. tipo: "ciao nome_bot che TEMPO fa oggi?" e potrebbe rispondere "non ho l'orologio" oppure "qua c'è sempre un tempo schifoso". ora, da dove potrei iniziare a fare una cosa simile? p.s. come è possibile, in una notte, imparare perl, un pò di espressioni regolari e fare un bot funzionante? Ultima modifica di ratman511 : 22-02-2010 alle 21:57. |
![]() |
![]() |
![]() |
#2 | |
Member
Iscritto dal: Feb 2008
Messaggi: 269
|
Quote:
... hai già basi di programmazione?
__________________
CPU: AMD Athlon X2 7750BE 3.15Ghz@vcore 1.3750 / NorthBridge: 2250Mhz@1.3125v RAM: Mushkin XP2 Radioactive 4GB 900Mhz@4-4-4-12-1T / HyperTransport: 2025Mhz VGA: Club3D Radeon HD4850 / HDD: Western Digital Caviar RE3 |
|
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Nov 2009
Messaggi: 50
|
eppure un ragazzo che conosco c'è riuscito.
comunque non ho basi di programmazione, ho iniziato qualche mese fa con java e poi sono passato a python, l'ho studiato per bene e vorrei fare un piccolo bot che faccia almeno quelle cose, ma non so da dove partire. |
![]() |
![]() |
![]() |
#4 | |
Member
Iscritto dal: Feb 2008
Messaggi: 269
|
Quote:
non sono neanch'io un esperto ma a naso penso che come prima cosa dovresti implementare il protocollo IRC nella tua applicazione (sicuramente esistono librerie già fatte), poi una volta connesso fargli parsare ogni frase e reagire a determinate keywords
__________________
CPU: AMD Athlon X2 7750BE 3.15Ghz@vcore 1.3750 / NorthBridge: 2250Mhz@1.3125v RAM: Mushkin XP2 Radioactive 4GB 900Mhz@4-4-4-12-1T / HyperTransport: 2025Mhz VGA: Club3D Radeon HD4850 / HDD: Western Digital Caviar RE3 |
|
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Se parte da zero con la programmazione in generale, resta la possibilità del copia-incolla...
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
#6 | |||
Member
Iscritto dal: Nov 2009
Messaggi: 50
|
Quote:
Quote:
Quote:
|
|||
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Quindi date le premesse e considerato che una nottata si estende tranquillamente su arco di 8 ore non vedo perchè non avrebbe dovuto farcela.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
#8 | |
Member
Iscritto dal: Nov 2009
Messaggi: 50
|
Quote:
qualcuno mi può aiutare? vorrei iniziare come prima cosa a stabilire la connessione con il serve, ed entrare nel canale con un nick. da dove dovrei iniziare? |
|
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Sep 2008
Messaggi: 376
|
Quote:
![]() In teoria, dovresti iniziare dalla descrizione del protocollo IRC. Poi in giro ci sono librerie come python-irclib per comunicare con i server IRC. Se vuoi fare tutto a mano la cosa è un pò più complessa, ma comunque google può darti una mano :P |
|
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Quello che sicuramente occorre è una forte volontà/motivazione, una buona capacità di concentrazione, e una moka di ottimo caffè (oppure l'insonnia, se si ha sfiga) ![]() P.S.: Come ha fatto notare MadJackal, occorre anche una certa conoscenza del protocollo IRC, cosa che probabilmente quel tizio già conosceva: a quel punto imparare "al volo" la sintassi di Perl e l'uso di una specifica libreria per interfacciarsi con IRC e scrivere il suo bot può essere si benissimo il lavoro di una nottata.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 23-02-2010 alle 16:04. |
|
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
|
C'è anche da dire che esistono bot e bot.
C'è il bot giocattolo che quando pronunci il suo nome in canale se ne esce con una frase a caso (la cui programmazione, per una persona minimamente skillata, è banale) e quelli seri che gestiscono la catena della botnet, la lista degli utenti, degli operatori, dei ban, si sincronizzano, si "rioppano" in caso di split di qualche server, si "difendono" gli uni con gli altri, e svariate altre funzionalità. Ai miei tempi si bazzicava solo su IRC (non esistevano msn, facebook e ammennicoli odierni, e lo rimpiango sinceramente) e giravano botnet spaventose, anche di 2/300 bot (botnet=in parole povere, insiemi di bot che lavorano insieme nella gestione di più canali, autoriconoscendosi e difendendosi da eventuali attacchi gli uni con gli altri, il tutto ovviamente in automatico). Ecco, per programmare qualcosa del genere ci vuola qualcosa di più di una nottata ![]()
__________________
Il sole è giallo |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Ah, dettagli interessanti, non ne sapevo niente dato che di chat ho esperienza zero su tutti i fronti.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
![]() |
![]() |
![]() |
#13 | |||
Member
Iscritto dal: Nov 2009
Messaggi: 50
|
Quote:
Quote:
Quote:
![]() |
|||
![]() |
![]() |
![]() |
#14 | |
Senior Member
Iscritto dal: Sep 2009
Città: Nel mondo dei sogni
Messaggi: 4125
|
Quote:
![]() Questi sono lavori *enormi* da fare e si devono avere determinate conoscenze oltretutto. Ed esperienza, ovviamente. |
|
![]() |
![]() |
![]() |
#15 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Un protocollo stabilisce le regole di una comunicazione; conoscerlo è indispensabile per implementare la comunicazione, oppure per usare le librerie associate. Un esempio banale: se non sai che nel protocollo FTP i canali di comunicazione sono due (uno per i comandi, l'altro per il trasferimento vero e proprio dei dati) non riesci a capire come mai la tal libreria X ti metta a disposizione un "client FTP" per comunicare con un host remoto e questo non ti permetta di trasferire più di un file alla volta neppure usando più thread con lo stesso client (perchè il "client FTP" implementato in quella libreria ha associato un solo canale di comunicazione e un solo canale di trasferimento dati). Oppure potresti vedere cadere la connessione nel tuo applicativo, non sapendo che alcuni server chiudono unilateralmente la connessione con il client se questo rimane inattivo per un certo tempo, e allo scopo il protocolo FTP fornisce un comando "noop" (no operation) che può essere usato solo per testare se la connessione è ancora viva e per mantenerla tale... Se il protocollo con cui devi avere a che fare è relativamente poco complesso e la libreria che usi è ben documentata puoi anche pensare di iniziare studiando la libreria e espandere le tue conocsenze del protocollo in dettaglio in seguito. Dipende sempre da cosa devi fare e con cosa devi avere a che fare. Per IRC non so aiutarti.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
#16 |
Member
Iscritto dal: Nov 2009
Messaggi: 50
|
non ho capito bene il discorso di poter inviare un solo file alla volta, ma comunque ho capito il tuo discorso e hai ragione, ma io devo fare davvero poche cose, solo per divertirmi e fare pratica. se non faccio pratica non imparo. siccome uso irc so qualcosina e se ci sono le librerie basta leggere la doc e fare qualche prova. solo che quella libreria che hanno linkato prima è per python 2.4 o inferiore e altre librerie non ne trovo. non so quindi come fare a mano il tutto, con i socket, anche perchè ho trovato dei codici in rete che usano i socket, ma non funzionano per niente.
edit: mi ha risposto chi ha fatto il bot, mi ha detto che lo ha fatto a mano perchè le operazioni che fa sono poche e non ha letto le specifiche del protocollo irc. ora vorrei farlo pure io. spero mi possa aiutare qualcuno. Ultima modifica di ratman511 : 23-02-2010 alle 18:07. |
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2773
|
Comunque che io sappia ci sono client IRC (io conosco solo mIRC, ma non è che me ne intenda, anzi...) che offrono un linguaggio di scripting con cui credo si possano scrivere anche bot.
|
![]() |
![]() |
![]() |
#18 |
Member
Iscritto dal: Nov 2009
Messaggi: 50
|
si lo so, ma non mi interessa questo.
allora, vi dico cosa sto provando a fare anche guardando in rete. uso xchat di solito cosi ho preso da li le informazioni sul server, la porta dove si collega ecc. il server è freenode, la porta 8001. io creo un socket, lo collego al server e alla porta e problemi non me ne dà. dopo questo devo dirgli l'user e il nick, cosi faccio una send() inviando una stringa "USER nome_user" e un'altra send con "NICK nick". però già qua ci sono i problemi perchè dai dati che ricevo non c'è traccia dell'avvenuta "registrazione". |
![]() |
![]() |
![]() |
#19 | |
Member
Iscritto dal: Nov 2009
Messaggi: 50
|
bakuriu avevi ragione!! sono felicissimo! sono riuscito a collegarmi DA SOLO senza aiuto di nessuno e seguendo la rfc (grazie mad). non davo tutti i parametri ad USER. però non capisco una cosa:
Quote:
ora comunque ho altri problemi da risolvere. sono riuscito a collegarmi, ma il prossimo passo è tenere sempre il bot collegato e parsare tutti i messaggi. ho visto che i messaggi scritti in chan sono PRIVMSG, però la riga è confusionaria. come separo nick di chi scrive e messaggio, tralasciando tutto il resto? qualcuno mi aiuta? |
|
![]() |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2773
|
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:26.