# Piccolo problemino da nabbo

**URL:** <https://www.ruby-forum.com/t/piccolo-problemino-da-nabbo/244019>\
**Category:** IT\
**Created:** [February 6, 2016, 6:51pm UTC](https://www.ruby-forum.com/t/piccolo-problemino-da-nabbo/244019 "2016-02-06T18:51:38Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Rafa\_F](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/958977/32.png) [@Rafa\_F](https://www.ruby-forum.com/u/Rafa_F)\
**Post date:** [February 6, 2016, 6:51pm UTC](https://www.ruby-forum.com/t/piccolo-problemino-da-nabbo/244019/1 "2016-02-06T18:51:38Z")

</div>

Ciao a tutti, ho da pochi giorni incominciato con il ruby, e mi sta  
piacendo molto, ma forse è un po presto per dirlo, comunque, sto  
cercando di creare il mio primo bot di Telegram e mi sto affidando a  
questo Wrapper: [GitHub - atipugin/telegram-bot-ruby: Ruby wrapper for Telegram's Bot API](https://github.com/atipugin/telegram-bot-ruby)  
Gli esempi mi sono stati molto utili per capire in  
fretta come buttare su le basi del mio bot, ma non mi è ancora chiaro  
come posso far in modo che il bot dia una risposta casuale ad un  
comando, oppure come come fare in modo che non faccia distinzione se il  
comando è con la lettra iniziale maiuscola o minuscola, grazie in  
anticipo per le risposte e sono contento di essermi unito a questa  
piccola Community.

---

<div class="post-metadata">

**Author:** ![panciz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/f0a364/32.png) [@panciz](https://www.ruby-forum.com/u/panciz)\
**Post date:** [February 9, 2016, 5:35pm UTC](https://www.ruby-forum.com/t/piccolo-problemino-da-nabbo/244019/2 "2016-02-09T17:35:28Z")

</div>

Ciao,  
puoi chiamarlo semplicemente ruby: il cobol si, il pascal si, il ruby  
no, il python no, il java no ecc. L’articolo è alquanto old fashion.

Per la tua questione, io purtroppo non riesco ad aiutarti nel dettaglio  
ma ti posso dire che per avere flessibilità nella gestione delle  
stringhe ti conviene usare le espressioni regolari:

irb(main):001:0\> ‘ciao’ == ‘Ciao’  
=\> false  
irb(main):002:0\> /ciao/i === ‘Ciao’  
=\> true  
irb(main):003:0\> /ciao/i === ‘ciao’  
=\> true

---

<div class="post-metadata">

**Author:** ![panciz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/f0a364/32.png) [@panciz](https://www.ruby-forum.com/u/panciz)\
**Post date:** [February 9, 2016, 7:14pm UTC](https://www.ruby-forum.com/t/piccolo-problemino-da-nabbo/244019/3 "2016-02-09T19:14:12Z")

</div>

Ok per le espressioni regolari. Alle volte è sufficiente convertire  
tutto l’input in maiuscolo o in minuscolo

> <https://stackoverflow.com/questions/1020568/how-to-convert-a-string-to-lower-or-upper-case-in-ruby>

Le risposte casuali di solito si fanno scegliendo a caso tra le risposte  
possibili. Ad esempio il comando “saluta” potrebbe far scegliere una  
stringa a caso tra quelle che avrai messo nell’array dei saluti. Per  
scegliere a caso in un array Ruby ha il metodo sample, che immagino  
implementi il solito pattern di tirare un numero a caso tra 0 e il  
numero di elementi meno uno.

---

<div class="post-metadata">

**Author:** ![panciz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/f0a364/32.png) [@panciz](https://www.ruby-forum.com/u/panciz)\
**Post date:** [February 10, 2016, 10:12am UTC](https://www.ruby-forum.com/t/piccolo-problemino-da-nabbo/244019/4 "2016-02-10T10:12:27Z")

</div>

Per fare un bot da zero è necessario avere solide basi tecniche, ruby si  
presta benissimo essendo avanti nella metaprogrammazione: reflection,  
metodo send, method missing ecc… Girando tutto intorno a stringhe  
(messaggi da interpretare) è necessario utilizzare le espressioni  
regolari se si vogliono raggiungere risultati decenti.

Io ne avevo iniziato uno ma mai completato perchè talmente complesso da  
richiedere tempo che sforava la semplice curiosità.

La complessità dipende dalle ambizioni del progetto. Al mio bot ad  
esempio volevo dare una IA con capacità di persistenza e premonizione,  
multi lingua (con I18n non sembrava complesso), con personalità  
configurabile ecc. …ma un bot può anche essere molto scemo e consiglio  
di iniziare con questo per poi evolverlo.

Faccio un esempio:  
Io: come ti chiami?  
Bot: George  
io: George?  
Bot: George?

La maggior parte dei bot non hanno capacità di persistenza e non  
collegano le domande alla discussione.

Esistono tanti progetti da cui puoi partire o prendere spunto:

> **[GitHub - dblock/slack-ruby-bot: The easiest way to write a Slack bot in Ruby.](https://github.com/dblock/slack-ruby-bot)**
>
> The easiest way to write a Slack bot in Ruby. Contribute to dblock/slack-ruby-bot development by creating an account on GitHub.

Questo invece è lo storico cleverbot del grande Rollo Carpenter (ha  
quasi 20 anni)  
[http://www.jabberwacky.com/](http://www.jabberwacky.com/)
