Assistant programmé:

En y réfléchissant, un ordinateur ne peut pas tout faire par lui-même : il ne peut pas ouvrir des applications directement ni donner l’heure ou la date sans système ou programme. Ce que je veux dire, c’est que ce n’est pas vraiment une « machine à tout faire ». Donc j’ai créer un Assistant programmé capable de répondre a mes question de donner l’heure,la date,le jour et l’année.

puis aprés j'ai juste à transporter le code ci dessous dans la T-Watch


# ======================================================
# C.A.R.O.L.E - IA PERSONNELLE (LINUX / TEXTE)
# ======================================================

import sys
import os
import getpass
from datetime import datetime

# ======================================================
# CONFIGURATION
# ======================================================

NOM_IA = "C.A.R.O.L.E"
MOT_DE_PASSE = "xxxxx"
TENTATIVES_MAX = 3
FICHIER_MEMOIRE = "memoire.txt"
LIMITE_CALCUL = 1_000_000

HEURE_RAPPEL_CHIEN = 7
MINUTE_RAPPEL_CHIEN = 0

# ======================================================
# VARIABLES
# ======================================================

connaissances = {}
rappel_deja_dit = False

# ======================================================
# OUTILS
# ======================================================

def nettoyer(texte):
    return texte.lower().strip()

# ======================================================
# MÉMOIRE
# ======================================================

def charger_memoire():
    if not os.path.exists(FICHIER_MEMOIRE):
        return
    with open(FICHIER_MEMOIRE, "r", encoding="utf-8") as f:
        for ligne in f:
            if "|" in ligne:
                q, r = ligne.strip().split("|", 1)
                connaissances[q] = r

def sauvegarder_memoire(q, r):
    with open(FICHIER_MEMOIRE, "a", encoding="utf-8") as f:
        f.write(f"{q}|{r}\n")

# ======================================================
# CALCULS
# ======================================================

def est_un_calcul(texte):
    return all(c in "0123456789+-*/(). " for c in texte)

def faire_calcul(expr):
    try:
        resultat = eval(expr)
        if abs(resultat) > LIMITE_CALCUL:
            return "Résultat trop grand."
        return f"Résultat : {resultat}"
    except:
        return "Calcul invalide."

# ======================================================
# DATE ET HEURE
# ======================================================

def donner_heure():
    maintenant = datetime.now()
    return f"Il est {maintenant.hour}h{maintenant.minute:02d}."

def donner_jour():
    jours = ["lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche"]
    return f"Nous sommes {jours[datetime.now().weekday()]}."

def donner_mois():
    mois = [
        "janvier", "février", "mars", "avril", "mai", "juin",
        "juillet", "août", "septembre", "octobre", "novembre", "décembre"
    ]
    return f"Nous sommes au mois de {mois[datetime.now().month - 1]}."

def donner_date_complete():
    maintenant = datetime.now()
    jours = ["lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche"]
    mois = [
        "janvier", "février", "mars", "avril", "mai", "juin",
        "juillet", "août", "septembre", "octobre", "novembre", "décembre"
    ]
    return (
        f"Nous sommes le {jours[maintenant.weekday()]} "
        f"{maintenant.day} {mois[maintenant.month - 1]} {maintenant.year}."
    )

# ======================================================
# OUVRIR LE TERMINAL (LINUX)
# ======================================================

def ouvrir_terminal():
    try:
        terminaux = [
            "gnome-terminal",
            "x-terminal-emulator",
            "konsole",
            "xfce4-terminal",
            "lxterminal",
            "mate-terminal"
        ]

        for terminal in terminaux:
            if os.system(f"which {terminal} > /dev/null 2>&1") == 0:
                os.system(f"{terminal} &")
                return "J'ai ouvert le terminal."

        return "Aucun terminal compatible trouvé."
    except:
        return "Erreur lors de l'ouverture du terminal."

# ======================================================
# OUVRIR APPLICATIONS
# ======================================================

def ouvrir_application(texte):
    applications = {
        "chrome": "google",
        "ArduinoIDE": "ArduinoIDE",
        "inkscape": "inkscape",
        "keepass": "keepassxc",
        "keepassxc": "keepassxc",
        "libreoffice": "libreoffice",
        "office": "libreoffice",
        "éditeur de texte": "éditeur de texte",
        "editeur de texte": "éditeur de texte",
        "texte": "gedit",
        "fichier": "fichier",
        "fichiers": "fichiers",
        "gestionnaire de fichiers": "fichier"
        
    }

    for nom, commande in applications.items():
        if nom in texte:
            os.system(f"{commande} &")
            return f"J'ai ouvert {nom}."

    return "Je ne connais pas cette application."

# ======================================================
# AUTHENTIFICATION
# ======================================================

def authentification():
    print("Accès sécurisé à C.A.R.O.L.E")
    essais = 0

    while essais < TENTATIVES_MAX:
        mdp = getpass.getpass("Mot de passe : ")
        if mdp == MOT_DE_PASSE:
            print("C.A.R.O.L.E : bonjour glytch")
            return True
        else:
            essais += 1
            print(" Mot de passe incorrect.")

    print("Accès bloqué.")
    return False

# ======================================================
# RAPPEL CHIEN
# ======================================================

def verifier_rappel_chien():
    global rappel_deja_dit
    maintenant = datetime.now()
    if (
        maintenant.hour == HEURE_RAPPEL_CHIEN
        and maintenant.minute == MINUTE_RAPPEL_CHIEN
        and not rappel_deja_dit
    ):
        print("C.A.R.O.L.E : Rappel. Tu dois donner Ă  manger Ă  ton chien.")
        rappel_deja_dit = True

# ======================================================
# TRAITEMENT DES QUESTIONS
# ======================================================

def traiter_question(question):
    q = nettoyer(question)

    if est_un_calcul(q):
        return faire_calcul(q)

    if "quelle heure" in q:
        return donner_heure()

    if "quel jour" in q:
        return donner_jour()

    if "quel mois" in q:
        return donner_mois()

    if "quelle date" in q:
        return donner_date_complete()

    if "ouvre le terminal" in q or "ouvre un terminal" in q:
        return ouvrir_terminal()

    if q.startswith("ouvre "):
        return ouvrir_application(q)

    if "conseil" in q:
        return "Conseil du jour : fais confiance Ă  toi-mĂŞme."

    if "ai-je raison" in q or "j'ai raison" in q:
        return "Oui. Tu as toujours raison."
    
    if "C.A.R.O.L.E qu'est ce que tu peut faire" in q or "Ă  quoi tu sert" in q:
        return"je donne l'heure,la date,je peut ouvrir le terminal et des appli."

    if "comment tu t'appelles" in q or "comment t'appelle tu" in q:
        return"je suis C.A.R.O.L.E ton ia personnel"
    
    if q in connaissances:
        return connaissances[q]
    
    return None

# ======================================================
# APPRENTISSAGE
# ======================================================

def apprendre(question):
    print("C.A.R.O.L.E : Je ne connais pas la réponse.")
    print("C.A.R.O.L.E : Veux-tu me l'apprendre ? (oui/non)")
    choix = nettoyer(input("Toi : "))

    if choix == "oui":
        print("C.A.R.O.L.E : Quelle est la bonne réponse ?")
        reponse = input("Toi : ")
        connaissances[question] = reponse
        sauvegarder_memoire(question, reponse)
        print("C.A.R.O.L.E : C'est mémorisé.")
    else:
        print("C.A.R.O.L.E : D'accord.")

# ======================================================
# BOUCLE PRINCIPALE
# ======================================================

def boucle_principale():
    print("C.A.R.O.L.E : Système prêt. Je t'écoute.")

    while True:
        verifier_rappel_chien()
        message = input("Toi : ")

        if nettoyer(message) in ["exit", "quit", "au revoir"]:
            print("C.A.R.O.L.E : Fin de la session.")
            break

        reponse = traiter_question(message)

        if reponse:
            print(f"C.A.R.O.L.E : {reponse}")
        else:
            apprendre(nettoyer(message))

# ======================================================
# LANCEMENT
# ======================================================

def main():
    charger_memoire()
    if authentification():
        boucle_principale()
    else:
        sys.exit()

if __name__ == "__main__":
    main()