Publicado
Comentarios 0

En algunos sitios web he visto información de eliminar beep, pero te la dan con demasiadas vueltas no sabiendo cuál es la funcional, para eso he creado este artículo, empezemos.

Los pasos a seguir serán estos:

  1. Eliminar módulo pcspkr.
  2. Pasar a none el none el bell siempre.
  3. Evitar que Debian cargue el módulo al inicio.
  4. Reiniciar el sistema.

Eliminar módulo pcspkr

Primero que todo, para realizar estas acciones necesitaremos tener permisos de root, y tener en cuenta que estas acciones serán de manera global para todos los usuarios, empezamos iniciando la consola como root y poniendo su contraseña predefinida:

sudo su

Seguido con el paso para eliminar el módulo pcspkr, que es el que genera el beep:

rmmod pcspkr

Pasar a none el none el bell siempre

Quizá el primer paso y este no serán necesarios en algunos sistemas, pero vale la pena indicarlo por si acaso, sin salir de los permisos root, necesitaremos ejecutar este comando lo cual va a abrir nuestro editor nano:

nano /etc/inputrc

Ahora buscaremos la siguiente linea y deberemos descomentarla:

# set bell-style none

Quedando finalmente así:

set bell-style none

En mi caso, la encontré en la linea 21, podrías probar con el comando nano +21 /etc/inputrc

Evitar que Debian cargue el módulo al inicio

Recuerda que estamos ejecutando todo en permisos root, por lo tanto este también necesitará permisos root, por obvias razones. El siguiente paso sería evitar que el sistema cargue el módulo pcspkr poniéndolo en la lista negra, ejecutamos lo siguiente:

echo "blacklist pcspkr" > /etc/modprobe.d/nobeep.conf

El último paso sería reiniciar el sistema, al reiniciar no deberíamos escuchar el beep de nuevo.

Saludos.

Autor

Publicado
Comentarios 0

En algún artículo de la anterior página web (Telegram-Foro) he escrito un artículo sobre cómo crear tu propio bot con alguna fuente, pero realmente podría ser fácil crearlo, igual por si acaso quieren una fuente externa para crearla en php les dejaré un código de fuente externa para que lo usen.

Primeramente, hablemos de los métodos que existen para obtener los mensajes o datos recibidos por el bot:


getUpdates

Este método es usado más por scripting, funciona ejecutando la función por request (solicitud web, por ejemplo, al entrar a una página por Firefox) el cual en la solicitud simplemente regresará las actualizaciones recibidas por el bot (mensajes, consultas inline, etc) en un formato JSON para después hacer uso de él con algún decodificador JSON como modulo o interno en el lenguaje de programación, en el caso de PHP, lo tiene de manera interna.

 

Webhooks

Este método es usado por datos POST (petición web donde los datos son ocultos, son enviados por Telegram) así recibiendo datos por php://input y así también decodificamos los datos como en el caso de arriba con algún decodificador de JSON.



Empezando a crear nuestro bot

Primero, tenemos que crear nuestro bot en @BotFather (en caso de que necesites de esto por favor comentarlo y haremos una guía de cómo crear el bot en BotFather), en caso de que hayan olvidado su token, usa el comando /token para recuperarlo, necesitaremos el token que es lo principal.

 

botfather, creando bot

Necesitaremos el HTTP API, el cual es 367906734:AAEAekv8kYgzvqBUAnTeM2BIjwjBiU0_VT0 (IMPORTANTE: en el caso de mi bot), en el caso de ustedes tendrán que tomarlo desde BotFather.

Ya tenemos nuestra HTTP API, ¿qué hacemos ahora? La parte divertida ¡empezar a programarlo!

Necesitaremos:

  • Una página web con SSL (podemos tenerla y acceder a su hosting en 000webhost como subdominio).
  • Programa para accesar a FTP (recomiendo Filezilla).
  • Editor de código (recomiendo Atom).
  • Tiempo.

 

Pasos

Si nos registramos en 000webhost, ya después de crear nuestro hosting (no será necesario explicar cómo registrarse, es fácil crear tu web ahí, si necesitan tutorial, ya saben que deben comentarlo abajo) vamos a acceder por FTP, necesitaremos la contraseña de la cuenta y el usuario, accedemos a 000webhost, presionan "Detalles" en el sitio web que deseen usar, e iremos al siguiente apartado:

Como pueden ver, tenemos los datos ahí para acceder a FTP, si tienen fallas con la contraseña pueden cambiarla pulsando en "Cambiar la contraseña", pues nada, abrimos Filezilla y accedemos por FTP, poniendo el host, usuario y contraseña, y accediendo a la ruta de archivos que es public_html.

Empezamos a crear una carpeta en nuestro escritorio con el nombre que querramos, toma en cuenta que es recomendable que tenga un nombre único, y que en la carpeta public_html tengamos algún index.html creado para que no indexe nuestro directorio.

 

Creamos los siguientes archivos:

 

Abrimos Atom -> Open File... y buscamos y abrimos nuestro archivo ajustes.php.

Empezamos retornando un array para poner nuestro HTTP API:

return array(
        'http_api' => 'tu_token'
)

Cambia tu_token por tu HTTP API. Ahora, cerramos ajustes.php y empezamos con bot.php, necesitamos incluir el archivo ajustes.php en bot.php y crear la URL a la api de Telegram:

$config = include 'ajustes.php';
$GLOBALS['api_web'] = "https://api.telegram.org/bot".$config["http_api"];

Bien, ya tenemos la base para correr nuestro bot, ¿Qué sigue? Obtener y decodificar las updates que recibamos de Telegram. Tendremos que usar file_get_contents y json_decode, poniendolo en bot.php:

$updates = file_get_contents("php://input");
if (!$updates) { return; }; // haremos un return para no continuar el código en caso de que no haya actualizaciones
$updates = json_decode($updates); // decodificamos a array las actualizaciones

Bien, nos toca usar dichas actualizaciones, creamos algunas variables para comodidad el momento de obtener los datos:

$msg = $updates["message"];
$msg["cb"] = $updates["callback_data"];

Nota, estamos creando la variable $msg apartir del mensaje de usuario, cabe destacar que usamos la variable message para obtener las actualizaciones del mensaje del usuario, añadimos de ejemplo los datos de los callbacks (cuando un usuario pulsa un botón inline con callback_data) para que sirva de algo de orientación, puedes ver los datos devueltos pulsando en las palabras color azul. Pues nada, empezamos creando las funciones que vamos a utilizar.

Creando funciones

En este caso solo vamos a crear la función sendMessage (pueden llamarla como deseen) para empezar a hacer uso del bot, vamos a usar file_get_contents ya que esta función creará una consulta web y podemos ingresar valores por el método GET (aquellos parámetros que se ven en la URL como xvalor=), puedes consultar sus parámetros completos en la API de Telegram (sendMessage) pero por lo pronto nosotros simplemente continuaremos usando los parámetros de la función chat_id y text, empezemos:

function sendMessage($chat_id, $text) {
        $metodo = $GLOBALS['api_web'] . '/sendMessage?chat_id=' . urlencode($chat_id) . '&text=' . urlencode($text);
        return file_get_contents($metodo);
}

¿Por qué usamos urlencode? ¿Por qué unos parámetros tienen ? y otros &? Bien, algunos no entenderán algunas funciones entrando en el mundo de PHP, urlencode() nos servirá para codificar el texto para que funcione perfectamente en una URL (por ejemplo, convertirnos esos espacios en un %20, ¿lo habíais visto en Firefox?) y los parámetros GET, si miran bien empezamos usando un ? para iniciar con los parámetros en GET, con lo cual indicamos que están iniciando parámetros GET ? (iniciamos) chat_id=123 (parámetro) & (separamos un parámetro de otro) text = palabra.

Vaya, ¡al fin tenemos una función para usar! Seguimos con hacer uso de ella, para eso, vamos a poner una condición para que si nuestro mensaje recibido sea /start envie un mensaje, ¡sigamos programando!

if ($msg["text"] == "/start") {
      sendMessage($msg["chat"]["id"], "Hola, ¡este es mi primer bot en PHP!");
}

Indicamos claramente que si el valor de $msg["text"] (texto del mensaje) es igual a /start envie el mensaje al id del chat desde donde se envía dicho mensaje (puede ser por privado o en grupos, si deseas cambiar a sólo privado usa "from" en lugar de "chat").

Nuestro bot.php al final quedará de esta manera:

$config = include 'ajustes.php';
$GLOBALS['api_web'] = "https://api.telegram.org/bot".$config["http_api"];

$updates = file_get_contents("php://input");
if (!$updates) { return; }; // haremos un return para no continuar el código en caso de que no haya actualizaciones
$updates = json_decode($updates); // decodificamos a array las actualizaciones

$msg = $updates["message"];
$msg["cb"] = $updates["callback_data"];

function sendMessage($chat_id, $text) {
        $metodo = $GLOBALS['api_web'] . '/sendMessage?chat_id=' . urlencode($chat_id) . '&text=' . urlencode($text);
        return file_get_contents($metodo);
}

if ($msg["text"] == "/start") {
        sendMessage($msg["chat"]["id"], "Hola, ¡este es mi primer bot en PHP!");
}

Y ¡nada!, tenemos ya nuestro bot creado en PHP, pero y ¿cómo hago que funcione? Deseado de deciros que es simple el siguiente paso, subimos nuestra carpeta por FTP a la carpeta de archivos public_html, abrimos nuestro navegador preferido y hacemos una consulta a la siguiente url, reemplazando TU_TOKEN por tu API HTTP, TU_WEB por TUWEB.DOMINIO y RUTA por CARPETADELBOT/bot.php:

https://api.telegram.org/botTU_TOKEN/setWebhook?url=https://tuweb/ruta

Podemos probar enviandole /start a nuestro bot y enseguida devolverá Hola, ¡este es mi primer bot en PHP!
Fue fácil crear nuestro primer bot ¿Verdad? Puedes probar con más métodos en la API de Telegram.

Saludos.

Autor
Categorías PHP