Jumat, 26 Juni 2020

Telegram PHP


Jika ingin auto respon terhadap Pesan masuk telegram ...begini codenya:
<?php

$TOKEN      = "1248813236:AAGa6Cizh9QLuEZzq8J2frogeVaY72s79SU"; // ganti dengan token bot anda
$usernamebot= "@tessboot_bot"; // sesuaikan besar kecilnya, bermanfaat nanti jika bot dimasukkan grup.
$debug = false;

function request_url($method){
    global $TOKEN;
    return "https://api.telegram.org/bot" . $TOKEN . "/". $method;
}

function get_updates($offset) {
    $url = request_url("getUpdates")."?offset=".$offset;
        $resp = file_get_contents($url);
        $result = json_decode($resp, true);
        if ($result["ok"]==1)
            return $result["result"];
        return array();
}
function send_reply($chatid, $msgid, $text){
    global $debug;
    $data = array(
        'chat_id' => $chatid,
        'text'  => $text,
        'reply_to_message_id' => $msgid 
    );

    $options = array(
        'http' => array(
            'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
            'method'  => 'POST',
            'content' => http_build_query($data),
        ),
    );
    $context  = stream_context_create($options);
    $result = file_get_contents(request_url('sendMessage'), false, $context);
    if ($debug)
        print_r($result);
}

function create_response($text, $message){
    global $usernamebot;
    $hasil = ''; 
    $fromid = $message["from"]["id"];
    $chatid = $message["chat"]["id"];
    $pesanid= $message['message_id'];
    isset($message["from"]["username"])
        ? $chatuser = $message["from"]["username"]
        : $chatuser = '';
   
    isset($message["from"]["last_name"])
        ? $namakedua = $message["from"]["last_name"]
        : $namakedua = ''; 
    $namauser = $message["from"]["first_name"]. ' ' .$namakedua;
    $textur = preg_replace('/\s\s+/', ' ', $text);
    $command = explode(' ',$textur,2);


    switch ($command[0]) {
        case '/id':
        case '/id'.$usernamebot :
            $hasil = "$namauser, ID kamu adalah $fromid";
            break;
       
        case '/time':
        case '/time'.$usernamebot :
            $hasil  = "$namauser, waktu lokal bot sekarang adalah :\n";
            $hasil .= "\xE2\x8C\x9A".date("d M Y")."\nPukul ".date("H:i:s");
            break;
           
        case '/start':
             $hasil  = "assalamualaikum saudara/i $namauser
                        berikut list command dari bot ini :
                        => /id   --> untuk menampilkan id anda
                        => /time --> untuk menampilkan waktu lokal anda";
             break;
        case '/tes':
             $hasil  = "tessting asfalksf";
             break;

        // balasan default jika pesan tidak di definisikan
        default:
            $hasil = 'Terimakasih, pesan telah kami terima.';
            break;
    }
    return $hasil;
}

if (strlen($TOKEN)<20)
    die("Token mohon diisi dengan benar!\n");
// fungsi pesan yang sekaligus mengupdate offset
// biar tidak berulang-ulang pesan yang di dapat
function process_message($message){
    $updateid = $message["update_id"];
    $message_data = $message["message"];
    if (isset($message_data["text"])) {
    $chatid = $message_data["chat"]["id"];
        $message_id = $message_data["message_id"];
        $text = $message_data["text"];
        $response = create_response($text, $message_data);
        if (!empty($response))
          send_reply($chatid, $message_id, $response);
    }
    return $updateid;
}


function process_one(){
    global $debug;
    $update_id  = 0;
    echo "-";

    if (file_exists("last_update_id"))
        $update_id = (int)file_get_contents("last_update_id");

    $updates = get_updates($update_id);
    // jika debug=0 atau debug=false, pesan ini tidak akan dimunculkan
    if ((!empty($updates)) and ($debug) )  {
        echo "\r\n===== isi diterima \r\n";
        print_r($updates);
    }

    foreach ($updates as $message)
    {
        echo '+';
        $update_id = process_message($message);
    }
   
    // update file id, biar pesan yang diterima tidak berulang
    file_put_contents("last_update_id", $update_id + 1);
}
// metode poll
// proses berulang-ulang
// sampai di break secara paksa
// tekan CTRL+C jika ingin berhenti
while (true) {
    process_one();
    sleep(1);
}
// metode webhook
// secara normal, hanya bisa digunakan secara bergantian dengan polling
// aktifkan ini jika menggunakan metode webhook
/*
$entityBody = file_get_contents('php://input');
$pesanditerima = json_decode($entityBody, true);
process_message($pesanditerima);
*/

?>

ATau mnggunakan Node.js

Panggil di pathnya : node tes.js (misal namanya tes.js)



tes.js
const TelegramBot = require('node-telegram-bot-api');
const token = '1248813236:AAGYgrpUgIO7GhW6gp-SQ8Y5Wge6EegPiCA';
const bot = new TelegramBot(token, {polling: true});
bot.on('message', (msg) => {
   
    var Hi = "hi";
    if (msg.text.toString().toLowerCase().indexOf(Hi) === 0) {
    bot.sendMessage(msg.chat.id,"Hello dear user");
    }

    var Hi = "/a";
    if (msg.text.toString().toLowerCase().indexOf(Hi) === 0) {
    bot.sendMessage(msg.chat.id,"Hello apa user");
    }
       
    });
   


LIBRARY

Tidak ada komentar:

Posting Komentar

global_priv WARNING Selalu

 Jika muncul pesan kesalahan: Warning in .\libraries\classes\Dbal\DbiMysqli.php#209  mysqli::query(): (HY000/1034): Index for table 'glo...