Exemplo n.º 1
0
 def on_event(cls, page, user, event):
     t = i18n.translator(user)
     page.send(
         user.facebook_id,
         t("Salut {name} 🤗 Lorsque tu auras des envies fortes de fumer je serai là pour te donner une aide d'urgence. Tu peux venir vers moi tous les jours de la semaine à n'importe quelle heure du jour ou de la nuit!", {"name": user.first_name}) + "\n\n" + t("Mais n'oublie pas que je suis un robot conversationnel, ce qui veut dire que bien que je puisse t'apporter une aide d'urgence en quelques secondes, je reste limité dans la compréhension du language. Si tu as des questions à poser, ou si tu vois que je ne peux pas t'aider, il faut te tourner vers le groupe Facebook! 🙂"),
     )
     return Transition.MOVE("cessation.Initialize")
 def on_event(cls, page, user, event):
     t = i18n.translator(user)
     # Get the response
     response = event.quick_reply_payload
     # If the answer is not valid
     if not response:
         page.send(
             user.facebook_id,
             t("Il faut que tu répondes en utilisant les boutons!"),
             quick_replies=cls.buttons,
         )
         return Transition.STAY
     if response != "BUTTONS_OK":
         page.send(
             user.facebook_id,
             t("Tu dois cliquer sur le bouton «Ok»"),
             quick_replies=cls.buttons,
         )
         return Transition.STAY
     page.send(
         user.facebook_id,
         t("Voilà, tu sais maintenant répondre en utilisant les boutons, on peut donc y aller avec les questions."
           ),
     )
     return Transition.MOVE("recruitment.Age")
Exemplo n.º 3
0
 def on_enter(cls, page, user, prev):
     t = i18n.translator(user)
     page.send(user.facebook_id, t(random.choice(cls.texts)))
     with cls.storage(user) as s:
         s["helped"][-1]["stop_datetime"] = datetime.now().isoformat()
     time.sleep(2)
     return Transition.MOVE("cessation.RequireHelp")
 def on_event(cls, page, user, event):
     t = i18n.translator(user)
     page.send(
         user.facebook_id,
         (t("Bienvenue {name}, je suis HELP. 👋",
            {"name": user.first_name})),
     )
     return Transition.MOVE("recruitment.Welcome")
Exemplo n.º 5
0
 def on_enter(cls, page, user, prev):
     # group = "cigarettes"
     # with cls.storage(user) as s:
     #     if group not in s:
     #         s[group] = list()
     #     s[group].append({"datetime": datetime.now().isoformat()})
     # return Transition.MOVE("tracker.Context")
     return Transition.MOVE("tracker.End")
Exemplo n.º 6
0
 def on_event(cls, page, user, event):
     t = i18n.translator(user)
     # Get the response
     response = event.message.get("text")
     with cls.storage(user) as s:
         s["helped"][-1]["distraction_other"] = response
     page.send(user.facebook_id, t(random.choice(cls.thanks)))
     time.sleep(2)
     return Transition.MOVE("cessation.Closing")
Exemplo n.º 7
0
 def on_enter(cls, page, user, prev):
     t = i18n.translator(user)
     sep = "(¯`·._.·(¯`·._.·(¯`·._.··._.·´¯)·._.·´¯)·._.·´¯)"
     advice = t(random.choice(cls.advices))
     keyword = t('Conseil')
     text = "{sep}\n\n{0}:\n\n{1}\n\n{sep}".format(keyword, advice, sep=sep)
     page.send(user.facebook_id, text)
     with cls.storage(user) as s:
         s["helped"][-1]["motivator_content"] = advice
     time.sleep(2)
     return Transition.MOVE("cessation.Distract")
Exemplo n.º 8
0
 def on_event(cls, page, user, event):
     t = i18n.translator(user)
     # Get the response
     response = event.quick_reply_payload
     # If the answer is not valid
     if not response or not response.startswith("DISTRACT_"):
         with cls.storage(user) as s:
             proposed = s["last_proposed"]
         page.send(
             user.facebook_id,
             t("Merci de répondre en utilisant les boutons"),
             quick_replies=cls.to_buttons(proposed, user),
         )
         return Transition.STAY
     # Save it
     with cls.storage(user) as s:
         s["helped"][-1]["distraction"] = response
     if response == "DISTRACT_OTHER":
         return Transition.MOVE("cessation.Other")
     return Transition.MOVE("cessation.Choice")
Exemplo n.º 9
0
 def on_event(cls, page, user, event):
     # t = i18n.translator(user)
     # page.send(
     #     user.facebook_id,
     #     t(
     #         "Encore un peu de patience! La phase suivante n'a pas encore "
     #         "commencé 😉"
     #     ),
     # )
     # return Transition.STAY
     return Transition.MOVE('cessation.Start')
Exemplo n.º 10
0
 def on_event(cls, page, user, event):
     # t = i18n.translator(user)
     # page.send(
     #     user.facebook_id,
     #     t(
     #         "Nous allons maintenant suivre ensemble ta consommation de cigarettes pour établir ton profil de fumeur! Pour cela il va falloir que tu viennes m'indiquer durant ces prochaines semaines chacune des cigarettes que tu fumes, au moment même où tu la fumes. Tu sors ton téléphone au moment pile où tu sors ton paquet. ☺️"
     #     ),
     # )
     # time.sleep(2)
     # return Transition.MOVE("tracker.Introduction")
     return Transition.MOVE("tracker.End")
Exemplo n.º 11
0
 def on_enter(cls, page, user, prev):
     pictures = os.listdir("static/motivators/" + user.language)
     picture = random.choice(pictures)
     page.send(
         user.facebook_id,
         Attachment.Image(
             os.environ["SERVER_URL"] + "/static/motivators/" + user.language + "/" + picture
         ),
     )
     with cls.storage(user) as s:
         s["helped"][-1]["motivator_content"] = picture
     time.sleep(2)
     return Transition.MOVE("cessation.Distract")
Exemplo n.º 12
0
 def on_enter(cls, page, user, prev):
     # t = i18n.translator(user)
     # page.send(user.facebook_id, t("Merci pour tes réponses!"))
     # group = "cigarettes"
     # with cls.storage(user) as s:
     #     if len(s[group]) == 1:
     #         page.send(
     #             user.facebook_id,
     #             t(
     #                 "Voilà, tu sais maintenant comment enregistrer une cigarette. Dès à présent, nous mémoriserons chacune d'entre-elles pour établir ton profil de fumeur. Le bouton «Je fume» reviendra automatiquement après avoir enregistré une cigarette afin que tu puisses enregistrer la suivante."
     #             ),
     #         )
     # return Transition.MOVE("tracker.Announce")
     return Transition.MOVE("tracker.End")
Exemplo n.º 13
0
 def on_enter(cls, page, user, prev):
     # Get the state to get back to
     with cls.storage(user) as s:
         next_state = s['previous_state']
     # Tell the user we are putting it back there
     page.send(
         user.facebook_id,
         "Merci d'avoir répondu à ce questionnaire. Tu vas maintenant retourner au status de notre interaction où tu en étais avant de commencer ce questionnaire!"
     )
     page.send(
         user.facebook_id,
         "*" * 30,
     )
     return Transition.MOVE(next_state)
Exemplo n.º 14
0
 def on_enter(cls, page, user, prev):
     t = i18n.translator(user)
     with cls.storage(user) as s:
         score = fagerstrom.compute_score(s)
         category = fagerstrom.compute_category(s)
         s["fs_result_score"] = score
         s["fs_result_category"] = category
     page.send(
         user.facebook_id,
         t(
             "Certaines de ces questions font partie du test de Fagerström, qui mesure la dépendance à la nicotine. Selon tes réponses tu es dans la catégorie:\n\n\t→ {category}",
             {"category": t(category)},
         ),
     )
     return Transition.MOVE("recruitment.End")
Exemplo n.º 15
0
 def on_enter(cls, page, user, prev):
     t = i18n.translator(user)
     sep = "ƸӜƷ.•°*”˜˜”*°•.ƸӜƷ•°*”˜˜”*°•.ƸӜƷ"
     selected = random.choice(cls.quotes)
     quote = t(selected[0])
     author = selected[1]
     if author:
         text = "{sep}\n\n«{0}»\n\n[{1}]\n\n{sep}".format(quote, author, sep=sep)
     else:
         text = "{sep}\n\n«{0}»\n\n{sep}".format(quote, sep=sep)
     page.send(user.facebook_id, text)
     with cls.storage(user) as s:
         s["helped"][-1]["motivator_content"] = quote
     time.sleep(2)
     return Transition.MOVE("cessation.Distract")
Exemplo n.º 16
0
 def on_event(cls, page, user, event):
     # t = i18n.translator(user)
     # # Get the response
     # response = event.quick_reply_payload
     # # If the answer is not valid
     # if not response or response != "SMOKE":
     #     page.send(
     #         user.facebook_id,
     #         t(
     #             "Pour éviter que ça ne soit du à une mauvaise manipulation, il faut que tu appuies le bouton!"
     #         ),
     #         quick_replies=i18n.translate_buttons(cls.buttons, lang=user.language),
     #     )
     #     return Transition.STAY
     # return Transition.MOVE("tracker.NewRecord")
     return Transition.MOVE("tracker.End")
Exemplo n.º 17
0
 def on_event(cls, page, user, event):
     next_state = random.choice(
         [
             "cessation.ImageMotivator",
             "cessation.ImageMotivator",
             "cessation.QuoteMotivator",
             "cessation.QuoteMotivator",
             "cessation.QuoteMotivator",
             "cessation.AdviceMotivator",
             "cessation.AdviceMotivator",
         ]
     )
     with cls.storage(user) as s:
         s["helped"][-1]["motivate_pressed"] = datetime.now().isoformat()
         s["helped"][-1]["motivator"] = next_state
     return Transition.MOVE(next_state)
Exemplo n.º 18
0
 def on_event(cls, page, user, event):
     """Run code when an event occurs."""
     # Get the response
     response = event.quick_reply_payload
     # If the answer is not valid
     if response not in [b["payload"] for b in cls.buttons]:
         page.send(
             user.facebook_id,
             translate("Merci de répondre en utilisant les boutons",
                       lang=user.language),
             quick_replies=translate_buttons(cls.buttons,
                                             lang=user.language),
         )
         return Transition.STAY
     # Save it
     with cls.storage(user) as s:
         s[cls.group][-1][cls.name] = response
     # Move to next question
     # pylint: disable=not-callable
     move_to = cls.next(response) if callable(cls.next) else cls.next
     return Transition.MOVE(move_to)
Exemplo n.º 19
0
 def on_enter(cls, page, user, prev):
     return Transition.MOVE("tracker.End")
     t = i18n.translator(user)
     group = "cigarettes"
     with cls.storage(user) as s:
         if group not in s:
             page.send(
                 user.facebook_id,
                 t("Pour faire un essai, clique sur le bouton «Je fume» ci-dessous. Réponds ensuite aux questions qui suivront, au hasard pour cette fois."
                   ),
                 quick_replies=i18n.translate_buttons(cls.buttons,
                                                      lang=user.language),
             )
         else:
             page.send(
                 user.facebook_id,
                 t("Pour enregistrer une cigarette clique sur le bouton «Je fume» ci-dessous."
                   ),
                 quick_replies=i18n.translate_buttons(cls.buttons,
                                                      lang=user.language),
             )
     return Transition.STAY
Exemplo n.º 20
0
 def on_event(cls, page, user, event):
     # Get the response
     response = event.quick_reply_payload
     # If the answer is not valid
     if response not in [b["payload"] for b in cls.buttons]:
         page.send(
             user.facebook_id,
             "Merci de répondre en utilisant les boutons.\nBitte antworte mithilfe der Buttons.",
             quick_replies=cls.buttons,
         )
         return Transition.STAY
     user = User.get_or_create_facebook_user(page, user.facebook_id)
     if response == "LANG_FRENCH":
         user.language = "fr"
     elif response == "LANG_GERMAN":
         user.language = "de"
     try:
         DB.session.add(user)
         DB.session.commit()
     except SQLAlchemyError as error:
         logger.error("Failed to write user state to the database")
         logger.exception(error)
     return Transition.MOVE("recruitment.Start")
Exemplo n.º 21
0
 def on_enter(cls, page, user, prev):
     t = i18n.translator(user)
     # page.send(
     #     user.facebook_id,
     #     t(
     #         "Merci d'avoir répondu à ces questions. Dans quelques jours on va suivre ensemble ta consommation de cigarette pour établir ton profil de fumeur! D'ici là reste informé en suivant le groupe privé Facebook, et si l'envie t'en prends, n'hésite pas à partage ton résultat du test de Fagerström sur le groupe pour en discuter avec les autres!"
     #     ),
     # )
     # page.send(user.facebook_id, t("À bientôt! 🤗"))
     # return Transition.STAY
     # page.send(
     #     user.facebook_id,
     #     t(
     #         "Merci d'avoir répondu à ces questions. Dans quelques jours tu "
     #         "vas arrêter de fumer et je serai là quand tu auras besoin d'un "
     #         "coup de pouce. D'ici là reste informé en suivant le groupe "
     #         "privé Facebook. À bientôt! 🤗"
     #     ),
     # )
     page.send(user.facebook_id,
               t("Merci d'avoir répondu à ces questions."))
     time.sleep(4)
     return Transition.MOVE("cessation.Wait")
Exemplo n.º 22
0
 def on_enter(cls, page, user, prev):
     # t = i18n.translator(user)
     # if os.path.exists(f"media/profiles/{user.id}.png"):
     #     page.send(
     #         user.facebook_id,
     #         t(
     #             "Voici ton profil de fumeur que j'ai pu établir grâce "
     #             "aux cigarettes que tu m'as indiquées:"
     #         ),
     #     )
     #     page.send(
     #         user.facebook_id,
     #         Attachment.Image(
     #             os.environ["SERVER_URL"] + f"/media/profiles/{user.id}.png"
     #         ),
     #     )
     #     page.send(
     #         user.facebook_id,
     #         t(
     #             "Voilà, dans quelques jours tu vas arrêter de fumer et je "
     #             "serai là quand tu auras besoin d'un coup de pouce. D'ici là "
     #             "reste informé en suivant le groupe privé Facebook. "
     #             "À bientôt! 🤗"
     #         ),
     #     )
     # else:
     #     page.send(
     #         user.facebook_id,
     #         t(
     #             "Tu n'as pas enregistré de cigarettes et je ne peux donc "
     #             "malheureusement pas te donner ton profil. Mais cela ne "
     #             "m'empêchera pas de te donner un coup de main dans les "
     #             "moments difficiles de l'arrêt! D'ici là reste informé en "
     #             "suivant le groupe privé Facebook. À bientôt! 🤗"
     #         ),
     #     )
     return Transition.MOVE("cessation.Wait")
Exemplo n.º 23
0
 def on_event(cls, page, user, event):
     return Transition.MOVE('survey.Welcome')
Exemplo n.º 24
0
 def on_enter(cls, page, user, prev):
     return Transition.MOVE('survey.Welcome')
Exemplo n.º 25
0
 def on_event(cls, page, user, event):
     with cls.storage(user) as s:
         s["helped"].append({"start_datetime": datetime.now().isoformat()})
     return Transition.MOVE("cessation.Motivate")
Exemplo n.º 26
0
 def on_enter(cls, page, user, prev):
     group = "helped"
     with cls.storage(user) as s:
         if group not in s:
             s[group] = list()
     return Transition.MOVE("cessation.RequireHelp")
Exemplo n.º 27
0
 def on_enter(cls, page, user, prev):
     t = i18n.translator(user)
     page.send(user.facebook_id, t(random.choice(cls.texts)))
     time.sleep(2)
     return Transition.MOVE("cessation.Closing")
Exemplo n.º 28
0
 def on_event(cls, page, user, event):
     return Transition.MOVE("language.Language")
Exemplo n.º 29
0
    def on_event(cls, page, user, event):

        return Transition.MOVE("cessation.Wait")
Exemplo n.º 30
0
 def on_enter(cls, page, user, prev):
     # return Transition.STAY
     return Transition.MOVE('cessation.Start')