Siete pronti ad essere invasi di complimenti? 😃

Come creare un bot Telegram con AltervistaBot parte 5 — farsi scrivere messaggi

Avete sempre voluto ricevere messaggi tramite un bot che facesse anche altre cose? Eccovi accontentati

““We like you too :)” written on a white brick wall” by Adam Jang on Unsplash Questa è leggermente più inusuale perché parliamo sempre di feedback.

A sorpresa, una parte “bonus” di questa piccola-grande guida che ora diventa di 5 parti. Vedremo infatti una funzionalità molto richiesta ed utilizzata, quella di ricevere messaggi (“feedback”) dai propri utilizzatori e poter rispondere direttamente dal bot.

In AltervistaBot questa funzionalità è già inclusa grazie al file feedback.php, che però non può inviare messaggi al nostro account fin quando non lo configuriamo per bene.

Seguiamo questi semplici e piccoli passi.

1º passo: trovare il proprio ID

Prima di tutto, troviamo il nostro ID su Telegram che ci sarà molto utile nel passo successivo. L’ID infatti è un codice di identificazione univoco che viene assegnato ad ogni utente Telegram e rimane sempre uguale anche se cambia nome utente (ma non numero di telefono, attenzione!).

Per sapere qual è il nostro ID ci basta usare uno dei tantissimi bot che assolvono questo scopo.

Possiamo, per esempio, utilizzare @userinfobot. Apriamolo, avviamolo ed inviamogli un messaggio qualsiasi. Ci risponderà con un messaggio del genere.

@username
Id: 82247861
First: Nome
Last: Cognome
Lang: it

Copiamo il nostro ID e procediamo.

2º passo: modifichiamo il file

Apriamo quindi il file feedback.php nella cartella del nostro bot su altervista.org ed iniziamo a lavorare.

In questa schermata è il quinto file

Nell’editor troverete, all’inizio, una scritta del genere:

$admin_list = array(
$adminID, //questo lascialo
14924659,
);
//aggiungi altri eventuali admin

L’ID 14924659 è quello del secondo account del creatore di AltervistaBot e possiamo decidere anche di non lasciarlo per questioni di privacy.

Se decidiamo di non lasciarlo possiamo “disattivarlo” mettendogli due barrette accanto:

$admin_list = array(
$adminID, //questo lascialo
//14924659,
);
//aggiungi altri eventuali admin

Sotto, possiamo aggiungere il nostro ID, quello che abbiamo copiato prima dal messaggio.

Nel mio caso, per esempio, l’ID è 82247861. Lo copierò ed incollerò sotto quello disattivato e gli aggiungerò una virgola alla fine.

$admin_list = array(
$adminID, //questo lascialo
//14924659,
82247861
);
//aggiungi altri eventuali admin

Verrà in questo modo:

Possiamo aggiungere ID di altre persone sotto con lo stesso metodo, per esempio se abbiamo dei co-amministratori del bot.

3º passo: personalizzazione del testo del meccanismo

Una volta che abbiamo configurato l’ID possiamo personalizzare il testo del “meccanismo” che regola la ricezione e l’invio dei messaggi.

Se scorriamo più sotto, infatti, troviamo questo grande pezzo di codice che regola i messaggi che riceve l’utente e noi durante tutto il processo:

if(strpos($msg, "/feedback")===0 and $chatID>0)
{
$e = explode(" ", $msg, 2);
$text = $e[1];
if($text)
{
foreach($admin_list as $ad)
{
sm($ad, "#Feedback
<b>Utente:</b> $nome (@$username) [$userID]
<b>Messaggio:</b> ".$text."
<i>Per rispondere, rispondi a questo messaggio</i>");
}
sm($chatID, "Grazie per il Feedback.");
}else{
sm($chatID, "Per inviare un Feedback scrivi
<code>/feedback testo da inviare</code>");
}
}
if(strpos($replyText, "#Feedback")===0 and in_array($userID, $admin_list) and $msg)
{
preg_match_all("#\[(.*?)\]#", $replyText, $nomea);
$replyToID = $nomea[1][0];
sm($replyToID, "<b>Risposta al Feedback</b>
".$msg);
sm($chatID, "Inviato.");
}

Non vi preoccupate, la sua configurazione non sarà complessa. Iniziamo a dividerlo in pezzi più piccoli.

Personalizzazione del comando

Questa parte, che (se abbiamo configurato un solo ID extra e nascosto quello già presente) si trova dalla riga 16 contiene la gestione del comando scatenante del messaggio.

if(strpos($msg, "/feedback")===0 and $chatID>0)
{
$e = explode(" ", $msg, 2);
$text = $e[1];

Di base gli utenti possono mandare un messaggio scrivendo /feedback TESTO ma possiamo personalizzarlo impostando, al posto di feedback, ciò che vogliamo.

Per esempio, se volessimo che gli utenti utilizzino il comando /messaggio TESTO possiamo impostare la stringa così:

if(strpos($msg, "/messaggio")===0 and $chatID>0)
{
$e = explode(" ", $msg, 2);
$text = $e[1];

La parte che vedete in grassetto è quella da modificare ed è la sola per adesso: non modificate nient’altro!

if(strpos($msg, "/COMANDODAPERSONALIZZARE")===0 and $chatID>0)
{
$e = explode(" ", $msg, 2);
$text = $e[1];

Personalizzazione dei testi

if($text)
{
foreach($admin_list as $ad)
{
sm($ad, "#Feedback
<b>Utente:</b> $nome (@$username) [$userID]
<b>Messaggio:</b> ".$text."
<i>Per rispondere, rispondi a questo messaggio</i>");
}
sm($chatID, "Grazie per il Feedback.");
}else{
sm($chatID, "Per inviare un Feedback scrivi
<code>/feedback testo da inviare</code>
");
}
}

I testi che sono in grassetto sono quelli che vediamo noi. Per evitare eventuali problemi possiamo anche non modificarli e lasciarli così. Se sei davvero intenzionato a modificarli e non vuoi demordere 😃 puoi procedere in sicurezza modificando solo le parti racchiuse tra <b> e </b> e <i> ed </i>.

I testi in corsivo, invece, sono quelli che vede l’utente e possiamo personalizzarli a volontà ed inserire grassetti (racchiudendo il testo tra <b> e </b>), corsivi (racchiudendo il testo tra <i> ed </i>) e testi in “preformattato”, per intenderci simil-macchina da scrivere che si usa spesso per il codice (racchiudendo il testo tra <code> e </code>).

Quello in blu è il testo preformattato come viene visualizzato su Telegram Desktop per Mac

Grazie per il feedback. viene inviato ogni volta che l’utente invia correttamente il messaggio mentre Per inviare un feedback scrivi <code>/feedback testo da inviare</code viene visualizzato quando un utente scrive un comando per inviare i messaggi senza scrivere poi il testo del messaggio accanto. Il secondo va modificato se cambiamo il comando da /feedback a qualche altra cosa, come per esempio /messaggio, ed al suo interno include del testo preformattato (tra i tag <code>).

Questo viene inviato all’utente e contiene il testo Risposta al feedback in grassetto e poi il contenuto del messaggio. Possiamo eliminare risposta al feedback facendo attenzione a rimuovere solo il testo <b>Risposta al feedback</b> oppure a sostituirlo senza rimuovere le virgolette, per non causare problemi

sm($replyToID, "<b>Risposta al Feedback</b>
".$msg);

Questo messaggio viene invece visualizzato una volta che noi abbiamo risposto al messaggio tramite la procedura semplicissima elencata più avanti.

sm($chatID, "Inviato.");

È una semplice conferma secca: “Inviato” che non serve neanche personalizzare.

4º passo: rispondere ai messaggi

Una volta che gli utenti vi avranno inviato un messaggio scrivendo /feedback TESTO DEL MESSAGGIO oppure /comandochevoiavetescelto TESTO DEL MESSAGGIO, potrete rispondere direttamente dal vostro bot.

Se avrete configurato correttamente l’ID vi invierà un messaggio del genere direttamente in chat con voi.

Per rispondere vi basterà semplicemente rispondere al messaggio utilizzando la funzione risposta di Telegram (se siete da telefono, vi basterà tenere premuto il messaggio e cliccare rispondi, se siete da computer vi basterà fare click desto o equivalente e cliccare rispondi) e scrivere la risposta, che verrà immediatamente inviata.

A video vedrete una conferma semplicissima: “Inviato!”.

Questa vi confermerà che il messaggio è stato inviato correttamente e l’utente riceverà subito la risposta.

<<<Parte precedente

INDICE


Questo era forse davvero l’ultima parte della mia guida, anche perché penso che non ci sia più niente da aggiungere. Farò un indice completo di tutte le parti che aggiungerò in calce ad ognuna per rendere più agevole la navigazione (oltre a dei tasti indietro ed avanti).

Ci sentiamo presto con altri progetti e novità, non dimenticatevi di iscrivervi alla newsletter.

Pubblicato con la licenza CC-BY-SA 4.0, tutto il codice qui presente è di proprietà di BruninoIt