Crear evento de bienvenida y despedida

Crear evento de bienvenida y despedida

En el post anterior, creamos el comando que permitia ascender y degradar los privilegios de un usuario haciendo uso del método promoteChatMember. En esta ocasión, añadiremos a la guía de creación de bots de Telegram el evento de escucha que se encargará de recibir quien se unió a un grupo y quien lo abandona. Para ello, utilizaremos el type Message y los siguientes atributos:

  • new_chat_members
  • left_chat_member

El primero, se encargará de manejar la bienvenida a nuevos usuarios al unirse a un grupo, mientras que el segundo, se encargará de manejar las despedidas cuando un usuario lo abandona. Sin más dilación, empezamos a crear el código.

Mensaje de bienvenida y despedida

Este evento de escucha solo y exclusivamente se hará efectivo siempre y cuando un nuevo usuario ingrese al grupo, no hará ninguna otra función. En éste, podemos hacer que envie un mensaje o que envie un mensaje además de añadir un botón para mostrar las reglas del grupo. Por ahora, solo haremos que envie un mensaje.

En primer lugar, fijaremos las variables pertinentes que utilizaremos para obtener el nombre del usuario que entra y sale del grupo de la siguiente manera:

    var chatId = msg.chat.id;
    var nameNewMember = msg.new_chat_member.first_name;
    var nameLeftMember = msg.left_chat_member.first_name;
    var chatitle = msg.chat.title;

En la funcion de bienvenida, cuando un usuario ingresa al grupo se crea el mensaje: "X persona se unió al grupo", este mensaje se puede eliminar y acto seguido se puede enviar un mensaje. En este caso, utilizaremos una condición para verificar que un nuevo usuario se unió al grupo de la siguiente manera:

if (msg.new_chat_members != undefined){

var nameNewMember = msg.new_chat_member.first_name

    bot.sendMessage(chatId, "Hola " + nameNewMember + ", bienvenido al grupo " + chatitle);
    }

En la funcion de despedida, cuando un usuario abandona el grupo, se crea el mensaje "X persona abandonó el grupo". Dicho evento se puede borrar ademas de enviar un mensaje adicional. Esta función es opcional ya que si alguien sale de un grupo, puede interesarnos, o no. Utilizaremos como en el caso anterior, una condición para comprobar quien abandonó el grupo de la siguiente manera:

else if (msg.left_chat_member != undefined){

var newLeftMember = msg.left_chat_member.first_name

        bot.sendMessage(chatId, nameLeftMember + " abandonó el grupo")
    }

Si juntamos todo, quedaría como resultado final el siguiente código:

bot.on('message', function(msg){
    
    var chatId = msg.chat.id;
    var chatitle = msg.chat.title;
    
    if (msg.new_chat_members != undefined){
    
        var nameNewMember = msg.new_chat_member.first_name;
    
        bot.sendMessage(chatId, "Hola " + nameNewMember + ", bienvenido al grupo " + chatitle);
    }
    else if (msg.left_chat_member != undefined){
    
        var nameLeftMember = msg.left_chat_member.first_name;
        
        bot.sendMessage(chatId, nameLeftMember + " abandonó el grupo")
    }
});

Ejemplo gráfico de éste evento de bienvenidas y despedidas:
evento-bienvenida-despedida

A éste evento, también se le podría añadir una condición para que, si un usuario añade cualquier bot al grupo, nuestro bot de moderación se encargue de echarlo automaticamente. Solo tendríamos que añadir la siguiente condición, después de la verificación de la entrada de nuevos usuarios:
if (msg.new_chat_member.is_bot == true){ // acción }

Si tienes dudas no dudes en revisar nuestra guía de creación de bots de Telegram en NodeJS donde también encontraras el link al chat de ayuda.