menu
Fórum Adianti
menu Menu
Classe para Bot do Telegram Estou tentando desenvolver um bot para o Telegram no Adianti. Quando utilizo um simples arquivo php consigo a comunicação com o bot (api do telegram). Contudo, se tento criar uma classe no Adianti para o meu bot não ocorre a comunicação. O que estou fazendo de errado? ...
CA
Classe para Bot do Telegram  
Estou tentando desenvolver um bot para o Telegram no Adianti. Quando utilizo um simples arquivo php consigo a comunicação com o bot (api do telegram). Contudo, se tento criar uma classe no Adianti para o meu bot não ocorre a comunicação. O que estou fazendo de errado?

  1. <?php
  2. class TelegramBot extends TPage
  3. {
  4.     public function __construct()
  5.     {
  6.         parent::__construct();
  7.         try
  8.         {
  9.           $token 'Meu Token';
  10.           $website 'https://api.telegram.org/bot'.$token;
  11.           $input file_get_contents('php://input');
  12.           $update json_decode($inputTRUE);
  13.           $chatId $update['message']['chat']['id'];
  14.           $message $update['message']['text'];
  15.           $first_name $update['message']['chat']['first_name'];
  16.           $last_name $update['message']['chat']['last_name'];
  17.           $username $update['message']['chat']['username'];
  18.           switch($message) {
  19.               case '/start':
  20.                   $response "Olá, <b>".$first_name." ".$last_name ."</b> como você está?. O seu usuário é: <b>".$username."</b>";
  21.                   sendMessage($chatId$response);
  22.                   sendSticker($chatId);
  23.                 TTransaction::open('permission'); // open transaction
  24.                 $msg = new Telegram;
  25.                 $msg->username   $username;
  26.                 $msg->first_name $first_name;
  27.                 $msg->last_name  $last_name;
  28.                 $msg->store(); // store the object
  29.                 TTransaction::close(); // Closes the transaction
  30.                 break;
  31.               case '/info':
  32.                   $response 'Aqui você vê as informações mais importantes do bot';
  33.                   sendMessage($chatId$response);
  34.                   break;
  35.               default:
  36.                   $response 'Não estou programado para esse tipo de mensagem.';
  37.                   sendMessage($chatId$response);
  38.                   break;
  39.           }
  40.          }
  41.           catch (Exception $e)
  42.           {
  43.               new TMessage('error'$e->getMessage());
  44.           }
  45.     }
  46.     function sendMessage($chatId$response) {
  47.       $url $GLOBALS['website'].'/sendMessage?chat_id='.$chatId.'&parse_mode=HTML&text='.urlencode($response);
  48.       file_get_contents($url);
  49.     }
  50.     function sendSticker($chatId) {
  51.       $url $GLOBALS['website'].'/sendSticker?chat_id='.$chatId."&sticker=CAACAgEAAxkBAAEBXdVhmZhebvleTKEC7mKbW9Xv2t2ojAAC2gcAAuN4BAABoyqqwjuNjsQiBA";
  52.       file_get_contents($url);
  53. }
  54. ?>




Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (4)


NR

Ao trabalhar com classes no php, não é possível chamar uma função sem identificar a classe correspondente. Por exemplo:
  1. <?php
  2. //sendMessage($chatId, $response); nao vai funcionar
  3. $this->sendMessage($chatId$response);
  4. ?>

Você está com os logs habilitados? Esse tipo de erro deveria aparecer na tela. Caso não esteja, segue link para referência futura:
https://www.adianti.com.br/forum/pt/view_5093?minha-aplicacao-esta-com-erro-por-
CS

Nataniel,

Fiz a correção que você sugeriu, mas agora surgiu o seguinte erro:

PHP Fatal error: Uncaught Error: Class 'TPage' not found in /var/...

Alguma ideia do que possa ser?
NR

Executando o seu código, com essas alterações nas functions que comentei anteriormente, funcionou aqui.

Como você está chamando/executando a página?
CS

Nataniel,

Talvez seja esse o problema. Essa classe é para onde faço o apontamento do webhook do Telegram. É a primeira vez que trabalho com esse tipo coisa é estou me batendo. Criei a classe e cadastrei ela em programas no template. Basicamente ela somente recebe os dados da api do telegram e grava no banco. Como não consegui criando a classe estou testando via arquivo .php e fazendo as transações com o banco via pdo. Eu aceito sugestões de implementação! Obrigado pela ajuda.