«répondre intelligemment et apprendre»
Répondre de manière contextualisée déjà, ça peut être pas mal. Intelligemment va falloir se lever de bonne heure, et apprendre c'est une autre paire de manches.
Naïvement, un chatterbot simple est un chatterbot réactif, c'est à dire qu'il ne fait que réagir à des mots ou expressions sans en analyser le sens.
Une première évolution peut-être une machine à états : le bot ne te dit bonjour qu'une seule fois par exemple.
Ensuite vient la phase où ton bot analyse ce qu'on lui dit, avec les notions de langage et d'interpréteur. En gros, tu vas inculquer un langage (grammaire et vocabulaire) à ton robot, un sous-ensemble formel du français, qui va te permettre de communiquer avec lui.
L'interpréteur python est un chatterbot, tu lui causes en python, et il te répond.
A ce niveau, tu pourras étoffer ses outils de communication avec des dictionnaires, ou plus évolué : des ontologies (très très grossièrement, des dictionnaires contextualisés).
Puis tu vas vouloir lui donner une mémoire, vient la notion de formalisation des concepts. Ça c'est assez hardcore, je te conseille d'apprendre un peu le prolog au passage afin que ton esprit s'ouvre au paradigme déclaratif.
Enfin, tu vas vouloir lui faire comprendre des trucs. Et là, c'est funky.