ErBotItalian

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.

Introduzione

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 logger

Il bot può usare elisp:

    <deego> fsbot: (+ 2 3 (expt 4 5))
    <fsbot> 1029

Per “parlare” in privato col bot:

    /query fsbot
    help

Quando “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.

#dunnet e il dunnet-mode

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

Dati

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 e ricerca estesa

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.

Descrivere

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?EmacsChannel

In 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?EmacsChannel

Richiedere 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!

Documentazione di Emacs: df, dv, dk, wi

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.

Documentazione avanzata di Emacs: ff, a

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)

Lispificazione e l'interprete Lisp

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.

Unire, spostare, copiare e "dimenticare" termini

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

Usare no all'interno di forget

    <deego> , foo is bar
    <fsbot> created.
    <deego> , no foo is baz
    <fsbot> created.
    <fsbot> , foo
    <fsbot> Perhaps foo is baz

Spostare immissioni all'interno dei termini

    <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] a

String-replace e regexp-replace nei termini

Esempio (string-replace):

    <deego> , s/baz/newstring/ in foo                                        
    <fsbot> Replaced string "baz" with "newstring".
    <deego> , foo                                                           
    <fsbot> Perhaps foo is newstring

Esempio (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).

Immissioni che cominciano con caratteri "speciali"

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.

lisp

In questo caso, fsbot risolve l’espressione che segue “lisp”.

    <deego> , tmprandom is lisp (random 3)
    <fsbot> created.
    <deego> , tmprandom
    <fsbot> 2

Si, fsbot ha un “eval”:

    <deego> , (eval '(+ pi (string-to-number emacs-version)))
    <fsbot> 24.141592653589793

redirezione

    <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 shaeerisson

function

Questo 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.

noecho

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!

directonly

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

Punti di domanda (?)

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!

Google

Sintassi: , g[oogle] [number] WORD [MORE-WORDS]

    <deego> , google site:emacswiki.org pcomplete
    <fsbot> [google]    http://www.emacswiki.org/cgi-bin/wiki.pl?ErcCompletion

L’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?ErcCompletion

Ecco 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 fortune

Risultati 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

Parlare alle persone e al bot

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?\CategoryOutline

Delle seconde “,,” terminano l’input al bot.

Karma

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)


ErBot