User Tools

Site Tools


informatica:telegram:bot

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
informatica:telegram:bot [2021/12/01 21:15] joseinformatica:telegram:bot [2023/03/20 14:13] (current) jose
Line 8: Line 8:
 Escribimos Escribimos
   /newbot   /newbot
-Nos contesta que ahora le tenemos que poner un nombre que acabe con la palabra "bot":+Nos contesta que ahora le tenemos que poner un nombre. El nombre puede ser largo y tener espacios:
   Alright, a new bot. How are we going to call it? Please choose a name for your bot.   Alright, a new bot. How are we going to call it? Please choose a name for your bot.
-Ponemos el nombre del bot +Ponemos el nombre: 
-  jurjurbot+  Bot de pruebas
 Nos contesta: Nos contesta:
   Good. Now let's choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot.   Good. Now let's choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot.
-Le ponemos:+El username no puede tener espacios y tiene que acaba con la palabra **bot**:Le ponemos:
   jurjurbot   jurjurbot
 Nos dice que está creado y nos da el token del bot que debemos guardar. Nos dice que está creado y nos da el token del bot que debemos guardar.
Line 27: Line 27:
 </code> </code>
  
-Metemos usuario en el grupo y sacamos el nombre del grupo con el comando:+Metemos usuario en un grupo. Escribimos /start en el grupoy sacamos el nombre del grupo con el comando:
   curl -X GET https://api.telegram.org/bot<token>/getUpdates|jq   curl -X GET https://api.telegram.org/bot<token>/getUpdates|jq
 Por ejemplo: Por ejemplo:
Line 70: Line 70:
 </code> </code>
  
-====== Añadir comandos ======+====== Interactuar BOT ======
 Podemos ver las actualizaciones del bot con la API getUpdates como hemos visto antes: Podemos ver las actualizaciones del bot con la API getUpdates como hemos visto antes:
   curl -X GET https://api.telegram.org/bot<token>/getUpdates|jq   curl -X GET https://api.telegram.org/bot<token>/getUpdates|jq
Line 223: Line 223:
 Si lo lanzamos a la API de PHP haría el comando **/consulta2** El chat id tiene que ser el de la API Si lo lanzamos a la API de PHP haría el comando **/consulta2** El chat id tiene que ser el de la API
   curl -X POST -d@peticion.json "https://api.midominio.com/bot.php"   curl -X POST -d@peticion.json "https://api.midominio.com/bot.php"
 +  
 +====== ERRORES ======
 +El bot no da respuesta y en nginx da 499
 +  curl -s -X GET https://api.telegram.org/bot2143053637:AAHX3BhheQifNTDbJSvhLlYp-dGvnTxmPtk/getWebhookInfo |jq
  
 +Da error "Read timeout expired",
 +
 +<code>
 +{
 +  "ok": true,
 +  "result": {
 +    "url": "https://apitelegram.lobo99.info/bot.php",
 +    "has_custom_certificate": false,
 +    "pending_update_count": 37,
 +    "last_error_date": 1639677248,
 +    "last_error_message": "Read timeout expired",
 +    "max_connections": 40,
 +    "ip_address": "87.217.220.23"
 +  }
 +}
 +</code>
 +
 +Era un problema de DNS pero para vaciar los mensajes pendientes he puesto en el fichero bot.php
 +<code>
 +  $update = json_decode(file_get_contents('php://input'));
 +       if(isset($update->message) || isset($update->edited_message)) {
 +                if(time()-((@$update->message->date)?:(@$update->edited_message->date)) > 59) {
 +                   exit('Update Time Out !'); # print json update
 +                }
 +            }
 +
 +</code>
informatica/telegram/bot.1638393311.txt.gz · Last modified: 2021/12/01 21:15 by jose