From e80b2b864efa27cb2e614971adf2f43dae50e78a Mon Sep 17 00:00:00 2001 From: Enrico Fasoli Date: Fri, 24 Apr 2015 17:37:05 +0200 Subject: [PATCH] nuove funzioni per gestione delle date anche nella memoria --- scripts/agenda.coffee | 1 + scripts/memoria.coffee | 46 ++++++++++++++++++++++++++++++++---------- scripts/tempo.coffee | 7 +++++++ scripts/time.coffee | 5 +++++ 4 files changed, 48 insertions(+), 11 deletions(-) create mode 100644 scripts/tempo.coffee create mode 100644 scripts/time.coffee diff --git a/scripts/agenda.coffee b/scripts/agenda.coffee index 4f286d5..18c4e10 100644 --- a/scripts/agenda.coffee +++ b/scripts/agenda.coffee @@ -39,6 +39,7 @@ cosaCePerIl = (day,res) -> res.send "non c'è niente segnato sull'agenda per il "+day else res.send "ecco cosa c'è per doma: "+data.join('; ') + module.exports = (robot) -> robot.respond /cosa c'è per domani?/i, (res) -> cosaCePerIl moment().add(1, 'days').format('YYYY-MM-DD'), res diff --git a/scripts/memoria.coffee b/scripts/memoria.coffee index d88bae7..e1b6560 100644 --- a/scripts/memoria.coffee +++ b/scripts/memoria.coffee @@ -1,3 +1,6 @@ +moment = require 'moment' +moment.locale 'it' + module.exports = (robot) -> robot.respond /ricorda(?:ti)? (?:che )?(.+) ([=è]|sono) (.+)/i, (res) -> mem = robot.brain.get('memoria') or {} @@ -9,25 +12,46 @@ module.exports = (robot) -> res.send 'non sapevo che '+name+' '+r+' '+definition+'. Me lo ricorderò' mem[name] = definition robot.brain.set 'memoria', mem + robot.respond /dimentica(?:ti)? (.+)/i, (res) -> mem = robot.brain.get('memoria') or {} m = res.match[1].toLowerCase() + nonso = ['non so cosa sia','BZBZ 404-NOT-FOUND','non mi fa ne caldo ne freddo','se sapessi cos\'è magari'] if mem[m]? res.send 'cancellazione neuronale in corso...' delete mem[m] robot.brain.set 'memoria', mem # necessary? - else res.send 'non so cosa sia' - robot.respond /(?:che )?((?:(?:(?:(?:cos|qual)\'è)|chi (?:sono|è)?))|(?:quali|cosa) sono) ([\w ]+)(?:\?)?/i, (res) -> - mem = robot.brain.get('memoria') or {} - arg = (res.match[2] or res.match[1]).toLowerCase() - verbo = res.match[1].toLowerCase().split(/[' ]/i) - verbo = verbo[verbo.length-1] - if mem[arg] - res.send arg+' '+verbo+' '+mem[arg] - else res.send 'boh' - robot.respond /memoria|a cosa stai pensando(?:\?)?/i, (res) -> + else res.send res.random nonso + + robot.respond /(?:che )?(?:(?:(?:(?:(cos|qual|quand)\'è)|(?:chi (sono|è)?)))|(?:quali|cosa) sono) ([\w- ]+)(?:\?)?/i, (res) -> + query = undefined + # Estrazione query (quand,cos,qual,chi...) + if res.match[2] then query = res.match[2] or res.match[1] + else if res.match[3] and res.match[1] then query = res.match[1] + # Estrazione argomento della query + arg = (res.match[3] or res.match[2] or res.match[1]).toLowerCase() + # Controllo data + if moment(arg,'YYYY-MM-DD').isValid() and (query is 'quand' or query is 'cos') + # chiesto una data + data = moment(arg,'[il] YYYY-MM-DD') + res.send arg+' è '+data.format('dddd Do MMMM YYYY')+' ovvero '+data.fromNow() + else + # chiesto qualcosa che non è una data + mem = robot.brain.get('memoria') or {} + verbo = query.toLowerCase().split(/[' ]/i) + verbo = verbo[verbo.length-1] + if mem[arg] + # controllo se è salvata una data nell'argomento chiesto + data = moment(mem[arg],'[il] YYYY-MM-DD') + if data.isValid() + # nella memoria era salvata una data + res.send arg+' è '+data.format('dddd Do MMMM YYYY')+' ovvero '+data.fromNow() + else res.send arg+' '+verbo+' '+mem[arg] + else res.send res.random ['boh','mistero','se qualcuno me lo spiega magari','BZBZ 404-NOT-FOUND'] + + robot.respond /(?:mostrami la tua )?memoria|a cosa stai pensando(?:\?)?/i, (res) -> m = robot.brain.get 'memoria' if m isnt null r = ['ho studiato', 'ho imparato', 'ho appreso', 'sono venuto a conoscenza di'] res.send 'nel corso della mia vita '+res.random(r)+' '+(i for i of m).join(', ') - else res.send 'non so niente...' + else res.send res.random ['non so niente...', 'ignoranza proprio'] diff --git a/scripts/tempo.coffee b/scripts/tempo.coffee new file mode 100644 index 0000000..cb2938f --- /dev/null +++ b/scripts/tempo.coffee @@ -0,0 +1,7 @@ +moment = require 'moment' +moment.locale 'it' + +module.exports = (robot) -> + robot.respond /quanto manca (?:al)? (\d+-\d+-\d+)(?:\?)?/, (res) -> + m = moment(res.match[1],'YYYY-MM-DD').fromNow() + res.send 'il '+res.match[1]+' è '+m diff --git a/scripts/time.coffee b/scripts/time.coffee new file mode 100644 index 0000000..5014154 --- /dev/null +++ b/scripts/time.coffee @@ -0,0 +1,5 @@ +moment = require 'moment' + +module.exports = (robot) -> + robot.respond /che ore sono(?:\?)?/i, (res) -> + res.send moment().format('dddd Do MMMM YYYY H:MM:SS')