Passa ai contenuti principali

Telegram: inviare messaggi su un gruppo da un bot

Telegram è più che l'ennesima app di messaggistica. Se vi sono alcuni compiti semplici e ripetitivi (ad esempio l'invio di news su un gruppo) è possibile automatizzarli programmando opportunamente un Bot.

In questa guida vedremo come inviare semplici messaggi su un gruppo. Per farlo, sono necessarie due informazioni: TOKEN del bot e CHAT_ID, ossia l'identificativo del gruppo.

Step 1 - creazione del Bot

Da Telegram cerchiamo @BotFather (http://telegram.me/BotFather).

Dopo essere entrati nella chat, digitiamo il comando
/newbot

Inseriamo il nome che vogliamo dare, ad esempio
Bot di test

Infine, scegliamo uno username univoco e che termini con _bot, ad esempio
BotteDiTest_bot

Nel messaggio di risposta otteniamo il TOKEN, la chiave segreta che ci permetterà di sfruttare le API di Telegram.





Step 2 - aggiunta del Bot nel gruppo

Da Telegram entramo nelle impostazioni del gruppo, e aggiungiamo tra i membri il nostro bot.

Per scoprire l'id del gruppo è sufficiente consultare gli aggiornamenti del nostro bot attraverso le API:
https://api.telegram.org/bot<TOKEN>/getUpdates

<TOKEN> va sostituito con il token creato nello step 1

Identifichiamo la chiave chat, e poi id



L'id della chat servirà allo step successivo.

Step 3 - invio del messaggio sul gruppo

Per inviare il messaggio sul gruppo bisogna fare nuovamente ricorso alle API di Telegram. Facciamo il download di questa classe PHP che ci facilita il compito: https://gist.github.com/mmilidoni/db4d16906c290cdb66e572102b2b3f3a

Il codice PHP da scrivere è semplicissimo:

require_once("TelegramMessage.php");

$obj = new TelegramMessage("<TOKEN>");
$obj->send("Hello, World""<CHAT_ID>");

Il gioco è fatto. 

Commenti

  1. e' possibile ricevere messaggi inviati al bot ?

    RispondiElimina
    Risposte
    1. Si', e' possibile con una configurazione piu' avanzata. Si tratta di sviluppare un "ascolatatore" di messaggi.

      Elimina
  2. Questo commento è stato eliminato da un amministratore del blog.

    RispondiElimina
  3. Buongiorno e grazie per la guida, vorrei sapere se c'è un bot simile a questo ma che invii messaggi in uno specifico canale, in pratica vorrei usarlo per pubblicare annunci di offerta e ricerca lavoro evitando le "chiacchiere" di un gruppo. Ovviamente avviandolo dalla "chat del bot".
    (altrimenti... ma vado off topic, vorrei impostare i permessi di tutti i membri del gruppo in "muto" tranne il bot così possono postare solo con quello e tenere pulito il tutto con un bot di gestione che cancelli tutti i comandi)
    Grazie mille per qualasiasi consiglio!

    RispondiElimina
    Risposte
    1. salve, vorrei fare anche io una cosa del genere, percaso è riuscito a trovare una soluzione o ha trovato un programma da qualche parte?

      Elimina
    2. Non ho mai provato, mi sembra interessante. Credo si possa fare semplicemente impostando l'id del canale.

      Elimina
  4. Non ho ben capito un particolare , ma dove va collocato il php ? va modificato quello scaricato inserendo token e chat id ? non capisco come usare e il php nella guida non è chiaro.

    RispondiElimina
    Risposte
    1. Questo breve tutorial e' destinato prevalentemente a sviluppatori. Il php va personalizzato ed caricato su un web server.

      Elimina
  5. Ho un quesito: ho visto un canale Telegram con un pulsante "inviami un messaggio" diretto, dai membri del.canale al creatore/amministratore. Sapete mica X caso come si attiva? Grazie infinite

    RispondiElimina
    Risposte
    1. Non e' una semplice "attivazione". Si tratta di sviluppare un programma ascolatatore dei pulsanti.

      Elimina

Posta un commento

Popolari

Trasformare il tasto <invio> in <tab> nelle form HTML

Molto spesso, mentre si compilano i campi di una form html, può venire spontaneo battere il tasto invio senza voler fare il submit della form. Tuttavia, salvo diversi accorgimenti, si ottiene così proprio il submit della form. In un'applicazione web, in cui vengono inseriti molti dati attraverso la tastiera, può essere utile assegnare al tasto d'invio lo stesso comportamento del tasto tab. Il seguente script, che ho trovato in un post sul forum codeigniter.com, fa uso di jQuery e fa al caso nostro. Ad ogni pressione del tasto invio sui campi di classe "enter" il focus viene spostato al campo successivo (di classe "enter"), a meno che non ci troviamo sull'ultimo campo (di classe "enter"). <script type="text/javascript"> $(document).ready(function(){ $("input").addClass("enter"); //se necessario, rimuovere questa linea e assegnare la class="enter" ai soli campi sui quali si desidera trasform

Virtual field in Laravel/ Eloquent

L'implementazione dei virtual field  in  Laravel  è molto semplice, ma la documentazione ufficiale non è immediata. Vedremo qui come fare. I virtual field sono campi del model che non hanno corrispondenza nel database. Essi sono utili  nel caso, ad esempio, si desideri riassumere più campi del model  in un singolo "campo virtuale" . Vediamo l'esempio della classe Fattura così definita Fattura numero: Integer data_fattura: Datetime [... ] Si desidera definire il virtual field descrizione_numero_data  che restituisca la seguente concatenazione del numero e della data "Fattura numero 5 del 15/07/2000" . In Laravel l'implementazione del virtual field avviene: implementando un Accessor , che restituisce la stringa desiderata; specificando il  nome_virtual_field  nell'array $appends del model. <?php class Fattura extends Model { protected $appends = array ( "descrizione_numero_data" ); public functi