Saltar a contenido

¿Cómo requerir unirse chats?

Atención

En este artículo se hace uso de expresiones y acciones, y se asume que ya sabes usarlas, si aún no sabes lo que son, ¡ve a leer al respecto primero o no entenderás nada!

Expresiones: pulsa aquí

Acciones: pulsa aquí

¿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. Ve a tu bot y entra en el modo editor pulsando el botón 🛠 Editar.
  3. Luego envía /start para seleccionar el comando y editarlo.
  4. 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.
  5. Una vez tengas un mensaje y al menos un botón en tu bot, mientras tienes seleccionado el comando /start, pulsa en Acciones 🌟.
  6. Pulsa en 🎯 Nueva acción.
  7. Agrega una acción de Enviar mensaje.
  8. En la acción que acabas de agregar pulsa en Configurar 🛠
  9. Establece 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

  10. Luego, dentro de la misma acción, pulsa en 💠 Desplegar teclado 💠, esto te permitirá desplegar un tipo de teclado más versátil que los teclados normales, y además te permitirá desplegar también teclados flotantes (inline).

  11. Después pulsa en 🔘 Crear nuevo teclado 🔘, selecciona 🔷 Normal.
  12. Envía el nombre del botón a crear, en este caso será ✅ Verificar ✅. Esto desplegará el botón al enviar el mensaje.
  13. A continuación agrega otra acción, esta vez será de tipo Esperar respuesta, esta acción permitirá que el bot se quede a la espera de que el usuario pulse el botón. No necesitas configurar la acción, solo actívala.
  14. Seguidamente agrega una nueva acción, esta vez de tipo 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 al inicio de cada chat, según el orden en el que fue guardado, es importante recordar esto para más adelante.

  15. Regresa a tu lista de acciones y agrega la 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 14, 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.
  16. 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.

  17. 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.
  18. 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 7, y pégala aquí, asegúrate 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.

  19. 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