// receiving data sent from the user
$data = $bot->read_post_message();
$message = $data->message;
$date = $message->date;
$chatid = $message->chat->id;
$text = @$message->text;
// instantiating a new triggers set
$ts = new telegram_trigger_set($TELEGRAM_BOTNAME, $chatid, $singletrigger);
// registering the triggers
$ts->register_trigger_text_command("trigger_welcome", ["/start", "/welcome", "/hi"], 0, null);
// initial state
$ts->register_trigger_text_command("trigger_help", ["/help"], 0, "in_chat");
// /help command is accepted only when state is "in_chat"
$ts->register_trigger_text_command("trigger_write", ["/write"], "in_chat");
// /write command is accepted only when state is "in_chat"
$ts->register_trigger_any("trigger_input", "waiting_for_input");
// each input retrieved will trigger the trigger_input function when state is "waiting_for_input"
// error trigger
$ts->register_trigger_error("trigger_err", "*");
// this trigger is registered indipendently on the state
// running triggers management
$response = $ts->run($bot, $message);
// returns an array of triggered events
// log messages exchange on the database
@db_log($TELEGRAM_BOTNAME, 'recv', $chatid, 'text', $text, $date);
if (count($response) > 0) {
    foreach ($response as $r) {
        @db_log($TELEGRAM_BOTNAME, 'sent', $chatid, $r['type'], $r['content'], $date);
    }
} else {
    @db_log($TELEGRAM_BOTNAME, 'error', $chatid, 'Error', $date);