Telegram Bot: Creare risposte dimaniche con plugin custom – parte 1

In questo mini tutorial vediamo come far iteragire il bot di telegram (vedi plugin Telegram Bot & Channel) ad un comando ben preciso attraverso un custom plugin, al termine di questa guida il bot risponderà riportando gli ultimi tre articoli inseriti in una categoria (news).

Partiamo dall’esempio riportato nelle faq del plugin

<?php
/*
Plugin Name: Telegram Bot & Channel (Custom)
Description: My Custom Telegram Plugin
Author: My name
Version: 1
*/

add_action('telegram_parse','telegramcustom_parse', 10, 2);

function telegramcustom_parse( $telegram_user_id, $text ) {
    $plugin_post_id = telegram_getid( $telegram_user_id );

    if ( !$plugin_post_id ) {
        return;
    }

    /*
    Here is the dynamic processing and how to reply.
    You can:
    - use if, switch and everything that works in php
    - check if $text is made of multiple words (create an array from $text)
    - customize and code other actions (ex. create WordPress post is $telegram_user_id is your id)
    */

    if ( $text == '/command') {
        telegram_sendmessage( $telegram_user_id, 'Oh, yes you typed /command');
    }

    return;
}

?>

Analizziamo le parti di codice dove dovremo agire per ottenere quanto desiderato.

Plugin Name: possiamo assegnare il nome del nostro plugin io per comodità lo lascio così
Description: descrizione del plugin che andremo a creare, utile per identificare le funzioni che questo fa
Author: possiamo mettere il nostro nome
Version: la versione del plugin

/*
Plugin Name: Telegram Bot & Channel (Custom)
Description: Custom plugin Telegram Bot - questa personalizzazione restituisce gli ultimi tre articoli di una categoria prestabilita
Author: Christian
Version: 1
*/

Questa parte è il cuore di tutto, in questa fase vengono definiti i comandi dinamici e le risposte che vengono restituite dal bot, nell’esempio della faq si definisce il comando /command e si dice al bot che deve restituire questo messaggio: Oh, yes you typed /command

    if ( $text == '/command') {
        telegram_sendmessage( $telegram_user_id, 'Oh, yes you typed /command');
    }

Vediamo ora come modificare il codice sopra riportato al fine di personalizzare il comando di welcome dato all’iscrizione al bot,  il sottoscritto per mantenere il codice chiaro utilizza la struttura a funzioni per la gestione dei risultati.

Personalizzazione comando /start con la creazione della relativa funzione start()

    if ( $text == '/start') {
        telegram_sendmessage( $telegram_user_id, start());
    }
function start() {
    $testo  = 'Ciao  %FIRST_NAME%,'.chr(10);
    $testo .= 'sono il bot dell\'*Istituto .............*'.chr(10).chr(10);
    $testo .= 'cercherò di formire in modo rapido alcune informazioni sull\'istituto grazie'.chr(10);
    $testo .=  chr(10);
    $testo .= 'Versione Alpha';
    return $testo;
}

Telegram Bot Custom screen risultato comando start

Dopo questa personalizzazione possiamo aggiungere con la stessa metodologia il comando /news subito dopo l’if dello start aggiungiamo

    if ( $text == '/news') {
        telegram_sendmessage( $telegram_user_id, news());
    }

In modo tale da ottenere questo risultato

    if ( $text == '/start') {
        telegram_sendmessage( $telegram_user_id, start());
    }
   if ( $text == '/news') {
        telegram_sendmessage( $telegram_user_id, news());
    }

Di seguito riporto  la funzione da me utilizzata per restituire gli ultimi 3 articoli  della categoria con id 3 (news), naturalmente ognuno di voi dovrà variare l’id della categoria ed eventualmente il numero degli articoli da restituire

function news() {
 $args = array(
  'post_type' => 'post',
  'posts_per_page' => 3,  //numero articoli da restituire
  'category' => 3,        // id categoria da far comparire
  'post_status' => 'publish');

$news = get_posts($args);

if ( empty($news) ){
 $msg = 'Ciao  %FIRST_NAME% , sono spiacente in questo momento non ci sono nuove notizie' ;
 return $msg;
}

foreach( $news as $post) {
$tempdate = $post->post_date;
$returner .= chr(10).'*'.$tempdate.'* - ['.$post->post_title.']('.get_permalink($post->ID).')';
if ( empty($post->post_excerpt) ){
 $content = $post->post_content;
 $text =  wp_trim_words( $content, $num_words = 50, $more = '...' );
}else{
 $text = $post->post_excerpt;
}
$returner .= chr(10).$text;
$returner .= chr(10);
}

$testo = 'Ciao  %FIRST_NAME%  queste sono le ultime news inserite:'.chr(10);
$testo .= $returner;
return $testo;
}

Telegram Bot Custom screen risultato comando news

Allego file bot_custom.zip, il file contiene il bot_custom.php qui descritto. Si ricorda che il plugin va caricato nella cartella /wp-content/plugins e poi attivato.

 

Allegati