Saltar a contenido

¿Cómo requerir unirse chats?

¿Quieres requerir a los usuarios que se unan a canales o grupos? En esta guía te explícamos cómo hacerlo, con detalles.

Para esta guía, requeriremos a los usuarios a unirse a 2 canales al iniciar el bot, o sea, al enviar /start, y si no se unen, no podrán usar el bot. No obstante, puedes usar esto en cualquier parte del bot, no solo en /start.

Mostraremos un mensaje al iniciar el bot diciéndole que debe unirse a los canales, y un botón que debe pulsar para verificar que está unido, el resultado final se vería así:

Requerir suscripción en chat en VisualMaker

Su funcionamiento es el siguiente: el mensaje será mostrado al usuario siempre que envíe /start, al pulsar en el botón ✅ Verificar ✅, se verificará que el usuario esté unido a los canales, de no ser así, se le volverá a mostrar el mensaje, y así hasta que se una, una vez unido, se mostrará el menú principal del bot.

Veamos paso a paso como hacerlo:

  1. Primeramente, agrega tu bot como administrador a los canales a los cuales vas a requerir a los usuarios que se unan.
  2. Ya podemos comenzar, entra en el modo editor de tu bot pulsando el botón 🛠 Editar, y envía /start para editar el comando. A continuación pulsa en 💬 Mensaje y agrega el mensaje que será mostrado en el menú principal del bot (si no tienes ninguno), por ejemplo: "Bienvenido al bot", eso ayudará a ilustrar mejor esta guía, así como también se recomienda tener al menos un botón en el bot.
  3. Una vez tengas un mensaje y al menos un botón en tu bot, mientras editas /start, pulsa en Acciones 🌟.
  4. Agrega una acción de Enviar mensaje, entra a configurarla y guarda el mensaje que le pedirá a los usuarios que se unan a los canales, en mi caso yo he guardado el siguiente. VisualMaker configurar enviar mensaje
  5. Luego, dentro de la misma acción, pulsa en 💠 Desplegar teclado 💠, después en 🔘 Crear nuevo teclado 🔘, selecciona 🔷 Normal, y envía el nombre del botón a crear, en este caso será ✅ Verificar ✅. Esto desplegará el botón al enviar el mensaje.
  6. A continuación agrega una acción de Esperar respuesta, para que el bot se quede a la espera de que el usuario pulse el botón, ya que el botón al final de cuentas es un mensaje. No necesitas configurar la acción, solo actívala.
  7. Seguidamente agrega una acción de Miembro en chat y entra a configurarla, pulsa en el botón 📍 Establecer chats 📍, y envía los ID o @username de tus canales a verificar separados por coma, yo enviaré los @username, que serían @channel_of_cats, @channel_of_dogs.

    VisualMaker configurar miembro en chat 1 VisualMaker configurar miembro en chat 2

    Como puedes ver, se le ha asignado un número a cada chat, según el orden en el que fue guardado, es importante recordar esto para más adelante.

  8. Regresa a tu lista de acciones y agrega una acción de Agregar condición, entra a configurarla. Pulsa en 🔍 Nueva condición 🔎, aquí deberemos introducir la expresión a evaluar, guardaremos la siguiente:

    {is_inside(#CmfwA.chat1.status#, ("member", "administrator", "owner")) and is_inside(#CmfwA.chat2.status#, ("member", "administrator", "owner"))}
    

    Reemplaza CmfwA por el ID de tu acción de Miembro en chat que agregamos en el paso 6, en mi caso es CmfwA, pero en el tuyo será diferente, nótese que debe ser reemplazada 2 veces en la expresion.

    Ahora analicemos la expresión a fondo:

    • Primeramente, todas las expresiones van dentro de llaves { }.
    • Además hemos hecho uso de la función is_inside(), que lo que hace es ver si lo pasado en el primer argumento se encuentra dentro del segundo argumento.
    • Para entender mejor, analicemos la primera vez que que se usa is_inside():

      is_inside(#CmfwA.chat1.status#, ("member", "administrator", "owner"))
      
    • El primer argumento sería #CmfwA.chat1.status#.

    • Y el segundo argumento sería ("member", "administrator", "owner"), como puedes ver, está englobado dentro de paréntesis, o sea, es una tupla.
    • Lo que hace la función es ver si lo pasado en el primer argumento se encuentra dentro de los elementos del segundo argumento.
    • chat1 hace referencia al primer canal guardado, recuerda que antes te dijimos que lo recordaras. En mi caso es @channel_of_cats, como puedes ver en la imagen de arriba.
    • También recordemos que status devuelve el estado del usuario en el chat, que puede ser member, administrator, owner, left, banned, restricted. Todo eso puedes verlo con más detalles en el artículo dedicado únicamente a la acción Miembro en chat.
    • Por tanto, esta primera parte de la expresión se puede traducir como: Si el estado del usuario actual en el canal @channel_of_cats es miembro, administrador, o propietario, la condición es verdadera, en caso contrario, es falsa.
    • En la segunda parte de la expresión vemos casi exactamente lo mismo de la primera parte, con la única diferencia que ahora en vez de ser chat1, es chat2, o sea, que ahora se está evaluando el segundo canal guardado, que en mi caso es @channel_of_dogs, como puedes ver en la imagen de arriba.
    • Ambas evaluaciones están separadas por and, que significa que la condición solo será verdadera si las dos evaluaciones son verdaderas, dicho de otra forma: la condición solo será verdadera si el usuario es member, administrator o owner de ambos canales.
  9. Una vez guardada la expresión y entendido lo anterior, solo nos queda especificar lo que pasará si la condición es verdadera, y si es falsa.

  10. Pulsa en el botón 👍 Si es verdadero, y luego pulsa en ✅ Continuar, así le estamos diciendo que si la condición es verdadera, o sea, que sí está unido a los dos canales, que continue a lo que haya a continuación, que en este caso, al no haber más acciones, lo que hará será pasar al menú principal del bot.
  11. Pulsa en el botón Si es falso 👎, y luego pulsa en 🆔 Ejecutar acción por ID 🆔, copia el ID de la acción de Enviar mensaje del paso 4, y pégala aquí, asegurate de que esté seleccionado ➡️ Después: continuar ⏩.

    En mi caso, ha quedado así:

    VisualMaker configurar miembro en chat condición

    ¿Qué hemos hecho aquí? Primeramente le hemos dicho que si la condición es falsa, o sea, que no se ha unido a todos los canales, se ejecute la acción de Enviar mensaje, esa que muestra al usuario que se una a los canales, y después que continue con el resto de acciones que le sigan, así continua en un bucle del que solo sale cuando el usuario se una a los canales.

  12. No olvides activar todas las acciones.

Y eso sería todo, ya con esto requerirás a tus usuarios unirse a tus canales antes de poder usar el bot.

Mis acciones quedaron así:

VisualMaker configurar miembro en chat condición

Es importante mencionar que todo esto es totalmente personalizable a tu manera. Por ejemplo, en el paso 11 podríamos hacer que en vez de ejecutar la acción de Enviar mensaje que muestra el mensaje de que se una a los canales, que ejecute otra de Enviar mensaje pero aislada por un separador, que enviaría un mensaje diciendole al usuario que no se ha unido, y desde allí podríamos crear una acción de Saltar a acción para regresar a la acción Miembro en chat y volver a verificar si el usuario se unió.

También podríamos agregar una acción de tipo Agregar condición justo al principio, que verificará si el usuario es nuevo en el bot a través de su variable primitiva is_new, y de ser nuevo, requerir que se una a los canales, pero de no ser nuevo, enviar directamente al menú principal.

Otra cosa que podríamos hacer sería crear el botón de ✅ Verificar ✅ como teclado flotante, aunque eso es un poco más complejo.

Las posibilidades son infinitas, y te toca a ti, como creador de bots, jugar con todo el poder que VisualMaker pone en tus manos.