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
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.
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
Ok per le espressioni regolari. Alle volte è sufficiente convertire
tutto l’input in maiuscolo o in minuscolo
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.
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:
Questo invece è lo storico cleverbot del grande Rollo Carpenter (ha
quasi 20 anni)
http://www.jabberwacky.com/