23/09/2017

Catálogo de Canais do Telegram (tchannels): É uma copia mal feita da Loja de Bots do Telegram (storebot) ?

Nenhum comentário :


O Catálogo do Canais do Telegram (Telegram Channels Catalog), mais conhecido como tchannels localizado no site tchannels.me e que também pode ser acessado pelo seu bot no Telegram @tchannelsbot. O tchannels é um catálogo onde os donos de canais no Telegram cadastram seu canal, o tchannels também permite que você avalie os canais com estrelas de 1 a 5 e deixe um pequeno texto com a opinião. Vários canais estão cadastrados no tchannels, inclusive o nosso você pode vê-lo clicando aqui.


Mas pelo que parece o tchannels nada mais é do que uma copia mal feita da Loja de Bots do Telegram (Storebot) que na verdade não vende os bots e sim funciona como um catálogo que é quase idêmtico ao tchannels só que ao acessar a url tchannels.me/mychannels e clicar no nome de usuário de um de seus canais lhe levará a uma URL semelhante a essa tchannels.me/mybots?bot=nome_de_usuário_do_canal que é uma página que nãoo existe, já quando clicamos no nome de usuário na store bot você é levado a essa URL storebot.me/mybots?bot=nome_de_usuário_do_bot notou a semelhança eles copiaram o código da storebot para o tchannels e ainda se esqueceram que mudr algumas coisas, além disso outra coisa que prova que o tchannels é uma copia mal feita da store bot é que se você acessar esta URL tchannels.me/mychannels?bot=nome_de_usuário_do_canal substituindo nome_de_usuário_do_canal pelo nome de usuário do seu canal se ele estiver na tchannels, se nõ pode usar o nosso canalaprendizador ele irá exibir esta mensagem "If you are the owner of the channel and would like to manage channel's avatar, languages and descriptions, please confirm the ownership by entering the token", em que diz mais ou menos que para definir idiomas, descrição, avatar e outras coisas deverá ser inserido o Token, mas só que não existe Token para canais e sim para bots, além disso não há nem um campo para inserção do Token, já comunicamos isso ao suporte do tchannels e isto deve ser corrigido nos próximos dias. Dúvidas ? Deixe nós comentários.

Como fazer meu bot em php enviar mensagens com teclado personalizado

Nenhum comentário :


As vezes pode ser necessário criar um teclado personalizador em seu bot para que as respostas possam atender uma das opções entre as quais o bot foi programado para responder, na hora que iremos dá o código para que você possa criar o teclado consideraremos que seu código do bot já tem todas estas funções e códigos :



<?php
define('BOT_TOKEN', '<!--TOKEN API-->');
define('API_URL', 'https://api.telegram.org/bot'.BOT_TOKEN.'/');
function exec_curl_request($handle) {
  $response = curl_exec($handle);
  if ($response === false) {
    $errno = curl_errno($handle);
    $error = curl_error($handle);
    error_log("Curl returned error $errno: $error\n");
    curl_close($handle);
    return false;
  }
  $http_code = intval(curl_getinfo($handle, CURLINFO_HTTP_CODE));
  curl_close($handle);
  if ($http_code >= 500) {
    sleep(10);
    return false;
  }   else if ($http_code != 200) {
    $response = json_decode($response, true);
    error_log("Request has failed with error {$response['error_code']}: {$response['description']}\n");
    if ($http_code == 401) {
      throw new Exception('Invalid access token provided');
    }
  return false;
} else {
  $response = json_decode($response, true);
    if (isset($response['description'])) {
      error_log("Request was successfull: {$response['description']}\n");
    }
    $response = $response['result'];
  }
  return $response;
}
function apiRequest($method, $parameters) {
  if (!is_string($method)) {
    error_log("Method name must be a string\n");
    return false;
  }
  if (!$parameters) {
    $parameters = array();
  } else if (!is_array($parameters)) {
    error_log("Parameters must be an array\n");
    return false;
  }
  foreach ($parameters as $key => &$val) {
    if (!is_numeric($val) && !is_string($val)) {
      $val = json_encode($val);
    }
  }
  $url = API_URL.$method.'?'.http_build_query($parameters);
  $handle = curl_init($url);
  curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, 5);   curl_setopt($handle, CURLOPT_TIMEOUT, 60);
  return exec_curl_request($handle);
}
function apiRequestJson($method, $parameters) {
  if (!is_string($method)) {
    error_log("Method name must be a string\n");
    return false;
  }
  if (!$parameters) {
    $parameters = array();
  } else if (!is_array($parameters)) {
    error_log("Parameters must be an array\n");
    return false;
  }
  $parameters["method"] = $method;
  $handle = curl_init(API_URL);
  curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, 5);
  curl_setopt($handle, CURLOPT_TIMEOUT, 60);
  curl_setopt($handle, CURLOPT_POSTFIELDS, json_encode($parameters));
  curl_setopt($handle, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
  return exec_curl_request($handle);
}
function processMessage($message) {
    //Conteúdo de sua função que processa a mensagem   }
}
$content = file_get_contents("php://input");
$update = json_decode($content, true);
if (!$update) {
  exit;
}
if (isset($update["message"])) {
  processMessage($update["message"]);
}
?>

    
    



Para enviar mensagens simples neste código usariamos algo em torno disto :
    
      apiRequest("sendMessage", array('chat_id' => $message['chat']['id'], "text" => 'Olá'));
    
    
    


Para enviar mensagens com teclado personalizados usamos algo em torno disso:

    
      apiRequest("sendMessage", array('chat_id' => $message['chat']['id'], "text" => 'Olá', 'reply_markup' => array('keyboard' => array(array('Olá', 'Oi')), 'one_time_keyboard' => true, 'resize_keyboard' => true)));
    
    
    


Dúvidas ? Deixe nos comentários.