Instantly share code, notes, and snippets.

Embed
What would you like to do?
Sample Telegram Bot (2)
<?php
$content = file_get_contents("php://input");
$update = json_decode($content, true);
if(!$update)
{
exit;
}
$message = isset($update['message']) ? $update['message'] : "";
$messageId = isset($message['message_id']) ? $message['message_id'] : "";
$chatId = isset($message['chat']['id']) ? $message['chat']['id'] : "";
$firstname = isset($message['chat']['first_name']) ? $message['chat']['first_name'] : "";
$lastname = isset($message['chat']['last_name']) ? $message['chat']['last_name'] : "";
$username = isset($message['chat']['username']) ? $message['chat']['username'] : "";
$date = isset($message['date']) ? $message['date'] : "";
$response = '';
if(isset($message['text']))
{
$response = "Ho ricevuto il seguente messaggio di testo: " . $message['text'];
}
elseif(isset($message['audio']))
{
$response = "Ho ricevuto un messaggio audio";
}
elseif(isset($message['document']))
{
$response = "Ho ricevuto un messaggio document";
}
elseif(isset($message['photo']))
{
$response = "Ho ricevuto un messaggio photo";
}
elseif(isset($message['sticker']))
{
$response = "Ho ricevuto un messaggio sticker";
}
elseif(isset($message['video']))
{
$response = "Ho ricevuto un messaggio video";
}
elseif(isset($message['voice']))
{
$response = "Ho ricevuto un messaggio voice";
}
elseif(isset($message['contact']))
{
$response = "Ho ricevuto un messaggio contact";
}
elseif(isset($message['location']))
{
$response = "Ho ricevuto un messaggio location";
}
elseif(isset($message['venue']))
{
$response = "Ho ricevuto un messaggio venue";
}
else
{
$response = "Ho ricevuto un messaggio ?";
}
header("Content-Type: application/json");
$parameters = array('chat_id' => $chatId, "text" => $response);
$parameters["method"] = "sendMessage";
echo json_encode($parameters);
@unloft

This comment has been minimized.

unloft commented May 10, 2016

Salve, ottimo lavoro e ottima spiegazione nella guida.... vorrei però chiederti se io volessi inviare una risposta a tempo o meglio con un'orario prestabilito come dovrei fare?? e sarebbe possibile tipo prelevare questa informazione da un file tipo xml ?
In pratica vorrei mandare un messaggio orario a tutti gli utenti del bot in base all'orario che hanno scelto .....mi sapresti aiutare?

@salvatorecordiano

This comment has been minimized.

Owner

salvatorecordiano commented May 11, 2016

Ciao unloft,
rispondo alle tue domande:

  1. Si è possibile inviare un messaggio ad un utente ad orari prestabiliti. Lo scenario potrebbe essere il seguente:
  • L'utente inizia una conversazione con il bot e memorizzo l'id dell'utente
  • Uno script PHP viene richiamato da un cron all'orario desiderato (è possibile impostare un cron anche ogni X minuti) e invia un messaggio all'utente attraverso il metodo sendMessage dell'API (cfr. https://core.telegram.org/bots/api)
  1. Per la lettura di file XML in PHP ti consiglio di leggere questo link http://php.net/manual/en/simplexml.examples-basic.php

A presto,
Salvatore

@HpoDeveloper

This comment has been minimized.

HpoDeveloper commented Oct 12, 2016

Ciao Salvatore,
volevo chiederti come fare per ottenere latitudine e longitudine ed eventualmente il numero di telefono.
Inoltre ho notato che le variabili già da te settate non riesco ad inserirle nel messaggio di benvenuto.

$message = isset($update['message']) ? $update['message'] : "";
$messageId = isset($message['message_id']) ? $message['message_id'] : "";
$chatId = isset($message['chat']['id']) ? $message['chat']['id'] : "";
$firstname = isset($message['chat']['first_name']) ? $message['chat']['first_name'] : "";
$lastname = isset($message['chat']['last_name']) ? $message['chat']['last_name'] : "";
$username = isset($message['chat']['username']) ? $message['chat']['username'] : "";
$date = isset($message['date']) ? $message['date'] : "";
$text = isset($message['text']) ? $message['text'] : "";
$user_id = isset($message['user_id']) ? $message['user_id'] : "";
$phone_number = isset($message['chat']['phone_number']) ? $message['chat']['phone_number'] : "";
$location=$message['chat']['location'];
$text = trim($text);
$text = strtolower($text);

Se scrivo

if(strpos($text, "/start") === 0 || $text=="ciao")
{
$tastiera=0;
$response = "Ciao $firstname $lastname il tuo username è $username";
}

mi da il nome, il cognome ma non la username.
Da che può dipendere? E per la latitdine e longitudine come funziona?
Grazie mille anticipatamente.

@cpaolo

This comment has been minimized.

cpaolo commented May 7, 2018

Salve, sono proprio un neofita in materia ma la trovo molto interessante. Spero non sia una domanda stupida ma non sono riuscito a trovare esempi.
Secondo lei è possibile fare in modo che un bot restituisca un valore contenuto in un file/tabella a seconda della richiesta ?
Mi spiego meglio, digito il nome di una persona e mi viene restituito l'indirizzo.

Grazie

Paolo

@DaniSpringer

This comment has been minimized.

DaniSpringer commented May 28, 2018

@cpaolo si. fai un array dalla tabella e usa l'indice dato dall'utente per prelevare il valore voluto.

$tabella = array(
    0 => "via canini",
    1 => "corso virtuale",
    2 => "strada bona"
// etc
);
@Davide9908

This comment has been minimized.

Davide9908 commented Aug 1, 2018

Ciao. Ho intenzione di fare un piccolo bot che funge da "amministratore" di un gruppo. In particolare questo bot, quando un utente entra nel gruppo, scrivere un messaggio come "benvenuto 'nome utente' nel gruppo, invia il comando '/ciao' entro 5 minuti, altrimenti verrai preventivamente cacciato dal gruppo come sospetto bot'. Quindi vorrei che l utente che entro x minuti dalla sua entrata non invia alcun comando, venga kickato dal gruppo (ovviamente il bot in questione avrà poteri di ammistrazione, mi sembra si possano dare ai bot giusto?). Che funzioni dovrei usare e come dovrei usarle per fare questa cosa? La vorrei fare per dei gruppi che ultimamente sono invasi da profili bot che spammano dei siti poco attinenti agli argomenti dei gruppi in questione
grazie in anticipo

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment