Aiuto per rendere un Bot Telegram Privato

PieRC

Nuovo Utente
13 Giu 2021
1
0
1
Ciao a tutti, mi sto cimentando nel creare un Bot per Telegram scrivendo il codice in PHP.
Solo che adesso mi trovo davanti ad un problema che non riesco a risolvere, vorrei creare un Bot Telegram privato conoscendo i numero ID di chi può interagirvi, quindi con accesso non consentito a ID che io non conosco.

Potete aiutarmi?

Vi sposto una base di codice da cui ho iniziato, molto banale ma finchè non risolvo questo problema non potrò andare avanti:

PHP:
<?php

  $botToken = "tokenBotXXXXXXXX";
  $website = "https://api.telegram.org/bot" . $botToken;

  $update = file_get_contents('php://input');
  $update = json_decode($update, TRUE);


  $chatId = $update['message']['from']['id'];
  $nome = $update['message']['from']['first_name'];
  $text = $update['message']['text'];


  sendMessage($chatId,"Ciao <b>$nome</b>, come stai?");

 
  function sendMessage($chatId,$text)
  {
    $url = $GLOBALS[website]."/sendMessage?chat_id=$chatId&parse_mode=HTML&text=" . urlencode($text);
    file_get_contents($url);
  }



?>

Grazie per qualsiasi consiglio in merito.
 
quando salvi i dati :
Codice:
// Se è un comando valido, estraiamo il messaggio contenuto in esso.
 $message = isset($update['message']) ? $update['message'] : "";
 
 $messageId = isset($message['message_id']) ? $message['message_id'] : ""; // è il numero di identificazione univoco del messaggio di chat
 $GLOBALS['chatId'] = isset($message['chat']['id']) ? $message['chat']['id'] : ""; // è l'id univoco dell'utente che ha inviato il messaggio
 $firstname = isset($message['chat']['first_name']) ? $message['chat']['first_name'] : ""; // Nome dell'utente ( se presente )
 $lastname = isset($message['chat']['last_name']) ? $message['chat']['last_name'] : ""; // Cognome dell'utente ( se presente )
 $username = isset($message['chat']['username']) ? $message['chat']['username'] : $firstname; // Soprannome dell'utente ( se presente )
 $date = isset($message['date']) ? $message['date'] : ""; // è la data in cui è stato inviato il messaggio.

Puoi fare un controllo estraendo uno dei campi :
Codice:
$username = $message['chat']['username'] 
$chatId = $message['chat']['id']
e controllando se l'utente o il suo id è presente in un array da te definito... tipo così :
Codice:
$allowed_username = ['Pinko', 'Pallino', 'Gianna']; // dati di fantasia
$allowed_id = [234234234234, 7656756756, 5675555]; // dati di fantasia

 // Controllo se l'utente è autorizzato e meno ad usare questo bot.
 // Se non lo è lo avverto ed esco ignorando qualsiasi comando o messaggio.
//controllo per la l'id dell'utente univoco. 
if ( !in_array($chatId, $GLOBALS['allowed']) ) {
   snd_msg($chatId, "@".$username." : Access Denied!\n This is a Private BOT...\nSorry!\n");
   return;
 }
// io preferisco il metodo sopra ma si può anche semplicemente controllare
// per l'username dell'utente. NB : può non essere presente! per questo preferisco il check 
// mediante il suo ID assegnato da Telegram.
if ( !in_array($username, $GLOBALS['allowed']) ) {
   snd_msg($chatId, "@".$username." : Access Denied!\n This is a Private BOT...\nSorry!\n");
   return;
 }
 

Discussioni simili