Skill Example : Hooks

The tea skill will trigger hooks for simple alarms in a channel.

/*
  SKILL : tea
  AUTHOR : Anonymous
  DATE : 14/05/2018
*/

module.exports = (skill) => {
    const schedule = skill.loadModule('node-schedule');

    skill.addCommand("tea", "set-tea-alarm", ({ phrase, data }) => {
        return new Promise((resolve, reject) => {
            try {
                let [teaType, ...textString] = phrase.split(" ");

                // Checking tea format
                let time = 0; // minutes
                let image = "https://imgur.com/cm2YcD5.jpg";
                switch (teaType) {
                    case "green":
                    case "vert":
                        time = 3;
                        image = "https://imgur.com/cm2YcD5.jpg";
                        break;
                    case "black":
                    case "noir":
                        time = 5;
                        image = "https://imgur.com/VKn1RuC.jpg";
                        break;
                    case "herbs":
                    case "infusion":
                    case "herbes":
                        time = 7;
                        image = "https://imgur.com/i1DjTDi.jpg";
                        break;
                    default:
                        time = 0;
                }
                if (time == 0) {
                    return resolve({
                        message: {
                            title: "Tea Timer",
                            text: "Type `!tea <green|black|herbs>` to set a timer for your tea."
                        }
                    });
                } else {
                    // Set timer.
                    skill.createHook().then((hook) => {
                        schedule.scheduleJob(new Date(new Date().getTime() + time * 60000), () => {
                            skill.userHook(hook._id, {
                                message: {
                                    title: "It's Tea Time!",
                                    text: "Your tea is ready! Run, Forest! Run!",
                                    attachments: [{
                                        image_url: image
                                    }]
                                }
                            }, { deleteHook: true }).catch((err) => skill.log(err));
                        });
                        return resolve({
                            message: {
                                title: "Tea Timer",
                                text: "Okay! I'll remind your in " + time + " minutes :)",
                                request_hook: true,
                                hook
                            }
                        })
                    }).catch((err) => {
                        return resolve({
                            message: {
                                title: "Tea Timer",
                                text: "Tea Timer cannot set a hook in this channel, sorry."
                            }
                        })
                    });
                }
            } catch (e) {
                return resolve({
                    message: {
                        title: "Tea Timer",
                        text: "Type `!tea <green|black|herbs>` to set a timer for your tea."
                    }
                });
            }
        });
    }, {
        description: "Commande pour lancer un timer pour le thé !",
        "subcommands":[
            {
                "name":"tea-maker-black",
                "cmd":"black",
                "description":"Timer pour le thé noir",

            },
            {
                "name":"tea-maker-green",
                "cmd":"green",
                "description":"Timer pour le thé vert",
            },
            {
                "name":"tea-maker-herbs",
                "cmd":"herbs",
                "description":"Timer pour le thé herbs",
            }
        ]
    });

    skill.addIntent("tea-alarm", "set-tea-alarm", ({ entities, data }) => {
        return Promise.resolve().then(() => {
            return {
                message: {
                    title: "Not implemented",
                    text: "Type `!tea green|black|herbs` to set a timer."
                }
            };
        });
    });
}

results matching ""

    No results matching ""