Altre sezioni disponibili:
* ErbotInstallation --come installare Erbot. (versione italiana)
* ErbotInstances --bot che usano questo pacchetto.
* ErbotBugs --commenti di ogni genere, suggerimenti, bugreports :)Ciò che segue è il tentativo di creare un manuale d’utilizzo per ErBot. (Per convertire questo e il resto degli emacswiki in documenti informativi dai un occhiata a http://www.emacswiki.org/cgi-bin/list-archive.pl). Aggiungi qui le informazioni. Anche i commenti sono i benvenuti, ma potrebbero essere aggiunte nel manuale dopo un po di tempo. 
ErBot (http://deego.gnufans.org/~deego/pub/emacspub/lisp-mine/erbot/) è un pacchetto “pesantemente” in sviluppo. Il bot principale che usa questo pacchetto è fsbot. fsbot “gira” nella modalità “maximum-info”— lui prova inoltre a dare una risposta a qualunque informazione, non importa ciò che gli scrivi. Lo puoi trovare sui canali #emacs, #gnu, #fsf, #dunnet, #guile, #fsbot. Se ti senti in vena di “parlare”, prova la modalità dunnet o il doctor-mode, oppure prova con botito, lo puoi trovare su ErBot. Botito “gira” sui canali #hurd-bunny e #fsbot.
Le persone responsabili del codice di Erbot’s sono DeepakGoel (autore), DavidEdmondson (erbot è nato dal suo erc-robot.el), Dheeraj Buduru (erbkarma.el) e gli autori dei pacchetti usati da Erbot: google.el (Nick Hober), w3, url, bbdb e naturalmente tutto emacs. ErBot è il risultato della collaborazione che ci hanno lavorato sopra
: resolve (DamienElmes), bpt (Brian Templeton), forcer (JorgenSchaefer), kensanata (AlexSchroeder), Grant Bowman, MarioLang e molti altri utenti di #emacs.
Il bot reagisce ad una virgola iniziale. Qui di seguito c’è un esempio. Come puoi vedere, la stessa sintassi è usata per avere delle risposte:
<lurwas> , clog
<fsbot> BEEEEEP...Try search or search-wide on clog
<lurwas> , clog is a channel logger
<fsbot> Done (create clog )
<kensanata> , clog
<fsbot> clog is, like, a channel logger <deego> , clog is also temporary-string
<fsbot> Added entry to term "clog"
<deego> , clog
<fsbot> I think clog is [0] a channel logger
<fsbot> [1] temporary-string
<deego> , forget clog 1
<fsbot> Removed entry 1 of clog
<deego> , clog
<fsbot> I think clog is a channel loggerIl bot può usare elisp:
<deego> fsbot: (+ 2 3 (expt 4 5))
<fsbot> 1029Per “parlare” in privato col bot:
/query fsbot
helpQuando “parli” in privato col bot la virgola iniziale può essere omessa.
Fsbot è presente su molti canali inerenti al free software, e ti permette di giocare a dunnet con degli amici su #dunnet.
Puoi abilitare il dunnet-mode in qualunque canale, ma ti consiglio di farlo solo su #dunnet. Qui di seguito è spiegato come abilitare la modalità:
*** Topic for #dunnet: you are in a twisty little maze of passages all alike
*** #dunnet: topic set by smoke, 07:31:48 11/29/02 <deego> , (dunnet-mode)
<fsbot> Dunet mode set to t. To toggle, type , (dunnet-mode) <deego> , look
<fsbot> Dead end
<fsbot> You are at a dead end of a dirt road. The road goes to the east.
<fsbot> In the distance you can see that it will eventually fork off. The
<fsbot> trees here are very tall royal palms, and they are spaced equidistant
<fsbot> from each other.
<fsbot> There is a shovel here.
<deego> , take shovel
<fsbot> Taken. Puoi inoltre giocare a dunnet senza abilitare il dunnet-mode:
<deego> , dunnet go east
<fsbot> E/W Dirt road
<fsbot> You are on the continuation of a dirt road. There are more trees on
<fsbot> both sides of you. The road continues to the east and west.
<fsbot> There is a large boulder here.Fsbot is also a doctor, fortune-teller, pinhead, elisp-interpretor… Later: whoops, fsbot currently hangs in dunnet when it reaches the computer… – DeepakGoel
Perhaps this triggers some password stuff? – AlexSchroeder
Ogni TERM (termine) può avere una o più ENTRIES. Il TERM è salvato internamente come bbdb-name, e le ENTRIES sono formattate come liste e sono salvate nelle bbdb-notes corrispondenti. In dicembre 2002 fsbot aveva 1600 terms, di cui 1200 contengono riferimenti a emacswiki.org.
Ricerca di espressioni regolari tra i termini (TERMS):
Esempio:
<deego> fsbot: search foo.*bar
<fsbot> ...Cercare un espressione regolare tra le terms e le loro entries:
<deego> fsbot: search-wide foo$
<fsbot> ...Se una ricerca ha buon esito, fsbot va avanti e la mostra.
Qui di seguito ci sono degli esempi per richiedere delle descrizioni:
<deego> , d emacschannel
<fsbot> Perhaps EmacsChannel is at http://www.emacswiki.org/cgi-bin/wiki.pl?EmacsChannel
<deego> , describe emacschannel
<fsbot> deego: EmacsChannel may be at http://www.emacswiki.org/cgi-bin/wiki.pl?EmacsChannel
<deego> , (describe "emacschannel")
<fsbot> deego: hmm, EmacsChannel is at http://www.emacswiki.org/cgi-bin/wiki.pl?EmacsChannelIn pratica, tutto viene convertito nell’ultima forma. (Dai un occhiata a lispify). In ogni caso il metodo più semplice per richiedere una descrizione è digitare il termine:
<deego> , emacschannel
<fsbot> I think EmacsChannel is at http://www.emacswiki.org/cgi-bin/wiki.pl?EmacsChannelRichiedere la descrizione di un termine in questo modo richiama una funzione ‘describe-internal’ che prova una moltitudine di operazioni e se non dovesse trovare una descrizione per il termine cerca di darti delle informazioni utili a riguardo
Puoi inoltre cercare parole multiple:
<deego> fsbot: foo bar baz
<fsbot> ...Questo cerca foo.*bar.*baz – l’ordine delle parole è importante!
df descrive una funzione, dv una variabile, dk una combinazione di tasti, and wi dice dove si trova una funzione (che tasto è richiesto).
Esempio:
<kensanata> , df ignore
<fsbot> ignore is an interactive compiled Lisp function in
`subr'. (ignore &rest IGNORE)
<fsbot> Do nothing and return nil. This function accepts
any number of arguments, but ignores them.
<kensanata> , dk C-x 2
<fsbot> split-window-vertically
<kensanata> , wi split-window-horizontally
<fsbot> M-x split-window-horizontally RET
<kensanata> , wi split-window-vertically
<fsbot> C-x 2, <menu-bar> <files> <split-window>
(split-window-vertically)
<kensanata> dv tab-width
<fsbot> *Distance between tab stops (for display of tab
characters), in columns. Automatically becomes
buffer-local when set in any fashion.
<fsbot> You can customize this variable.ff scrive la definizione di una funzione, a fa partire apropos.
Esempio:
<kensanata> , ff ignore
<fsbot> (defun ignore (&rest ignore)
<fsbot> (interactive)
<fsbot> nil)
<kensanata> , a bbdb-ignore
<fsbot> 6 matches. (bbdb-ignore-most-messages-alist
bbdb-ignore-most-messages-hook
bbdb-ignore-selected-messages-confirmation
bbdb-ignore-selected-messages-hook
bbdb-ignore-some-messages-alist
bbdb-ignore-some-messages-hook)Anche se parli in inglese il tuo messaggio verrà “lispificato” prima di essere processato. La funzione di lispificazione può essere chiamata per vedere come un messaggio viene trasformato:
<deego> , lispify "describe emacswiki"
<fsbot> (erbc-describe (quote emacswiki)) <deego> , lispify "(describe \"emacswiki\")"
<fsbot> (erbc-describe "emacswiki")Come puoi vedere fsbot “naviga” in qualunque codice lisp provvistogli e lo “prefissa” con erbc-. I comandi accessibili agli utenti cominciano con erbc-. In gennaio 2003 sono stati contati circa 750 comandi. Qui di seguito è descritto un modo per cercare con apropos i comandi relativi al bot:
<deego> , (commands "^a")
<fsbot> 7 matches. (a ac and append apply apropos av)Puoi inoltre fare una ricerca generica su emacs in questo modo:
<deego> , (apropos "^ac")
<fsbot> 11 matches. (acapulco accept-process-output access-file
accessible-keymaps ache aching acid acons acos
activate-input-method active-minibuffer-window)Fsbot ha un interfaccia all’help di emacs, dai un occhiata alla sezione Emacs Help di seguito.
Usa comandi tipo cp, mv, merge, forget (= rm) per manipolare i termini. Merge unisce i termini immessi del primo termine immesso, nel secondo termine.
<deego> , foo
<fsbot> From memory, foo is bar
<deego> , cp foo fool
<fsbot> Copied entries of foo to fool
<deego> , fool
<fsbot> From memory, fool is bar <deego> , foo is bar
<fsbot> created.
<deego> , no foo is baz
<fsbot> created.
<fsbot> , foo
<fsbot> Perhaps foo is baz <deego> , tmpfoo
<fsbot> Perhaps tmpfoo is [0] a
<fsbot> [1] b
<deego> , 1->0 in tmpfoo
<fsbot> Moved entry 1 to 0 in "tmpfoo"
<deego> , tmpfoo
<fsbot> tmpfoo - [0] b
<fsbot> [1] aEsempio (string-replace):
<deego> , s/baz/newstring/ in foo
<fsbot> Replaced string "baz" with "newstring".
<deego> , foo
<fsbot> Perhaps foo is newstringEsempio (regexp-replace):
<deego> , r/^new/old/ in foo
<fsbot> Replaced regexp "^new" with "old"L’ultima “/” può essere opzionalmente omessa. Per una “/”, prova a usare “//”, oppure prova con del codice lisp complicated entries. (To find lisp renditions of english stuff, see lispify).
Se la prima immissione è una singola immissione il termine comincia con ‘(“lisp” “redirect” “unecho” “function” “directonly”), quel termine ha un significato speciale. Usando describe-literally (dl) con “describe” è possibile omettere ciò che è stato appena spiegato.
In questo caso, fsbot risolve l’espressione che segue “lisp”.
<deego> , tmprandom is lisp (random 3)
<fsbot> created.
<deego> , tmprandom
<fsbot> 2Si, fsbot ha un “eval”:
<deego> , (eval '(+ pi (string-to-number emacs-version)))
<fsbot> 24.141592653589793 <deego> , shae
<fsbot> [->] ShaeErisson is [0] at http://www.emacswiki.org/cgi-bin/wiki.pl?ShaeErisson
<fsbot> [1] Nick: shapr
<deego> , dl shae
<fsbot> shae may be redirect shaeerissonQuesto permette agli utendi di creare le proprie funzioni. Questo non è ancora funzionale. Una funzione può essere creata in questo modo: function (lambda ()…) , o usando il comando defun (non ancora implementato). fsbot ha inoltre funcall and apply, ma non sono utilizzabili attualmente.
Puoi avere immissioni a cui fsbot non risponda col suo solito “borbottio”. Basta usare ‘noecho’ o ‘unecho’ come prima parola.
Esempio:
<kensanata> , ni! is noecho NI! NI! NI! NI!
<fsbot> created.
<kensanata> fsbot: ni!
<fsbot> NI! NI! NI! NI!Puoi vedere “tutto” usando describe-literally:
<deego> fsbot: dl ni!
<fsbot> deego, From memory, ni! is noecho NI! NI! NI! NI!Questa è una sezione noiosa. Sentiti libero di saltarla 
Background:In alcuni canali (i canali che corrispondono a regexp) fsbot responde non solo alle domande fattegli ma anche ad ogni parola se la parola è presente nel database . Ciò è molto utile, qui di seguito è riportato un esempio:
<deego> iirc? <fsbot> IIRC is like, an acronym for "If I recall correctly" <deego> gnus? <hbot> hmm, gnus is Gnus is the Emacs newsreader--- http:/www.gnus.org/. It also reads mail, Slashdot, and your mind. .. + more entries
In ogni caso a volte ciò non è voluto. Se ad esempio hai insegnato al bot cosa vuol dire WTF e qualcuno dice a te WTF il bot risponderà dicendo il significato anche se ciò non è voluto:
<deego> Something very silly. <bpt> WTF? <fsbot> bpt: WTF is What the fuck. <bpt> I know that you silly bot!
In questo caso è possibile “insegnare” al bot in questo modo:
<deego> fsbot: WTF is directonly What the Fuck.
Quando la prima lettera è directonly fsbot non risponderà a un singolo punto di domanda inserito. directonly può essere usato anche in questo modo:
<deego> fsbot: foo is directonly lisp (+ 1 2) <deego> , foo <fsbot> 3
Non puoi inserire un singolo punto di domanda in una domanda poichè si incontrerebbero degli inconvenienti spiacevoli.
Esempio:
<resolve> , why is why not?
<fsbot> try: why-emacs why-hurd why-lisp why-not-emacs
WhyClublet? WhyWikiWorks?Puoi usare la funzione interna set-term se sai come fare.
Esempio:
<kensanata> , (set-term "why" "Why not?")
<fsbot> created.
<kensanata> why?
<fsbot> why -- Why not?
<Johbe> wohoo!Sintassi: , g[oogle] [number] WORD [MORE-WORDS]
<deego> , google site:emacswiki.org pcomplete
<fsbot> [google] http://www.emacswiki.org/cgi-bin/wiki.pl?ErcCompletionL’uso di google ha un timeout.
La sintassi seguente sembra inoltre funzionare:
<deego> , site:emacswiki.org pcomplete
<fsbot> [google] http://www.emacswiki.org/cgi-bin/wiki.pl?ErcCompletionEcco cosa è successo, se ricordo bene la cronologia: fsbot ha provato a cercare il termine “site:emacswiki.org”, poi ha provato a cercare il regexp “site:emacswiki.org.*pcomplete”, poi ha provato a cercare a fondo il regexp “site:emacswiki.org.*pcomplete”, poi prova ad esaminarlo come se fosse un messaggio in inglese cercando parole tipo “thank you”, ecc. Infine ci rinuncia e utilizza google. Se la ricerca con google non ha successo nel tempo limite, o non da risultati fsbot prima di tutto prova a identificare il messaggio come se fosse un messaggio in inglese (ricercando parole tipo “thank you”), e se fallisce risponde con messaggi tipo quelli seguenti:
* getting your message parsed by the doctor.
* return a fortuneRisultati multipli nelle ricerche con google:
<deego> , g 2 emacs [08:48] <fsbot> [google] http://www.gnu.org/software/emacs/emacs.html <fsbot> http://www.gnu.org/software/emacs/windows/ntemacs.html
Se una frase non è indirizzata al bot, ma ha “,,” al suo interno il bot risponde a tutto ciò che c’è dopo le “,,”
<resolve> probably best off with ,, categoryoutline
<fsbot> I heard CategoryOutline is at http://www.emacswiki.org/cgi-bin/wiki.pl?\CategoryOutlineDelle seconde “,,” terminano l’input al bot.
Questo è solo per divertimento. Puoi assegnare un karma a un termine (TERM).
* , foo++ and , foo-- cambiano il karma incrementando o decrementando.
* type , karma foo mostra il karma di foo.
* type , karma per vedere il karma migliore.Topics da “coprire” e Todo (da fare)
help, website, paginator, dictionary,personalizzazione di Erbot, elisp, codewalking, documentare l’emacswiki automatico, meatball feed e l’installazione di fsbot.
Translated by: Tr3 (tr3@6deex.net)