Crear un Contador de Palabras con Ranking en Streamer.bot

¿Quieres saber cuántas veces dice tu chat una palabra específica (como «bro», «F», o «GG») y crear una competición para ver quién la dice más veces? En este tutorial aprenderás a configurar Streamer.bot para hacerlo automáticamente usando un sencillo script de C#.

¿Qué hace este contador?

Cuenta Global: Suma cada vez que alguien dice «bro» en el chat.

Cuenta Individual: Rastrea cuántas veces lo ha dicho cada espectador.

Sistema de Récord: Anuncia automáticamente si alguien se convierte en el nuevo «Rey» al superar al líder actual.

Anti-Spam: Evita contar sus propios mensajes para no entrar en bucle.

#

#Crear la Acción

  1. Abre Streamer.bot.
  2. Ve a la pestaña Actions.
  3. Haz clic derecho en la lista de acciones -> Add.
  4. Ponle de nombre: Contador Bro.
  5. El grupo puedes dejarlo en «General» o crear uno nuevo.

 

#Añadir el Código C#

Este es el cerebro del contador. No necesitas saber programar, solo copiar y pegar.

  1. En el panel de la derecha (Sub-Actions), haz clic derecho.
  2. Selecciona Core -> C# -> Execute C# Code.
  3. Se abrirá un editor. Borra todo lo que hay y pega el siguiente código (compatible con Streamer.bot 0.2.0 y superior):
text
using System;

public class CPHInline
{
    public bool Execute()
    {
        // 1. SEGURIDAD Y DATOS
        // Si no hay mensaje, terminamos para evitar errores
        if (!args.ContainsKey("message")) return false;

        string message = args["message"].ToString();
        string user = args["user"].ToString(); // Nombre de quien escribe
        string userId = args["userId"].ToString(); // ID único de Twitch

        // PROTECCIÓN: Evita bucles infinitos ignorando mensajes del propio bot
        if (message.StartsWith("Contador:") || message.StartsWith("¡NUEVO RÉCORD")) return false;

        // 2. BUSCADOR DE PALABRAS (Manual)
        // Convertimos todo a minúsculas para detectar igual "Bro", "BRO" o "bRo"
        string texto = message.ToLower();
        string buscar = "bro"; // CAMBIA ESTO si quieres contar otra palabra
        int foundCount = 0;
        int i = 0;
        
        // Recorremos el mensaje contando cuántas veces aparece la palabra
        while ((i = texto.IndexOf(buscar, i)) != -1)
        {
            i += buscar.Length;
            foundCount++;
        }

        // 3. SI SE ENCUENTRA LA PALABRA...
        if (foundCount > 0)
        {
            // A) Actualizar Contador GLOBAL
            string globalVar = "broGlobalCount";
            int totalGlobal = CPH.GetGlobalVar<int>(globalVar, true); // 'true' hace que el dato se guarde al cerrar
            totalGlobal += foundCount;
            CPH.SetGlobalVar(globalVar, totalGlobal, true);

            // B) Actualizar Contador INDIVIDUAL (Usuario)
            string userVar = "userBroCount";
            // Usamos GetTwitchUserVar para obtener los datos específicos del usuario
            int userTotal = CPH.GetTwitchUserVar<int>(userId, userVar, true);
            userTotal += foundCount;
            CPH.SetTwitchUserVar(userId, userVar, userTotal, true);

            // C) GESTIÓN DEL LÍDER (Récord)
            string recordUserVar = "topBroName";
            string recordCountVar = "topBroCount";
            
            int currentRecord = CPH.GetGlobalVar<int>(recordCountVar, true);
            string currentKing = CPH.GetGlobalVar<string>(recordUserVar, true);
            
            // ¿El usuario ha superado el récord actual?
            if (userTotal > currentRecord)
            {
                // ¡Sí! Guardamos al nuevo rey
                CPH.SetGlobalVar(recordUserVar, user, true);
                CPH.SetGlobalVar(recordCountVar, userTotal, true);
                
                // Mensaje especial de celebración
                // 'false' al final fuerza el envío como Broadcaster, no como Bot
                CPH.SendMessage($"¡NUEVO RÉCORD! 👑 @{user} es el nuevo *Rey del Bro* con {userTotal} veces. (Total Global: {totalGlobal})", false);
            }
            else
            {
                // Mensaje informativo normal
                if (string.IsNullOrEmpty(currentKing)) currentKing = "Nadie";
                
                // Usamos "B.R.O" con puntos para que el bot no se active a sí mismo
                CPH.SendMessage($"Contador: B.R.O dicho {totalGlobal} veces. (Líder actual: {currentKing} con {currentRecord})", false);
            }

            return true;
        }

        return false;
    }
}
  1. Haz clic en Save and Compile. Asegúrate de ver el mensaje «Compiled Successfully» en la barra inferior.

 

#Configurar el Disparador (Trigger)

Ahora le diremos al bot cuándo ejecutar este código.

  1. En el panel de la izquierda (Triggers), haz clic derecho.
  2. Selecciona Twitch -> Chat -> Chat Message.
  3. Asegúrate de que pone «Enabled: Yes».

Ahora ve a tu chat y prueba:

  • Escribe «bro» -> El bot responderá con el total global y quién es el líder.
  • Escribe «bro bro bro» -> El bot sumará 3 de golpe.
  • Si superas el récord de otra persona, el bot anunciará el cambio de corona.

 

#Solución de Problemas Comunes

  • El código da error de compilación rojo: Asegúrate de copiar todo el código de arriba. Hemos usado una versión que no requiere añadir referencias extra (como Regex) para evitar problemas.
  • El bot no responde: Verifica que en Integrations -> Twitch -> Chat esté conectado («Connected»).
  • Dice «Use platform specific methods»: Esto ocurre si usas código antiguo en Streamer.bot v0.2.0+. El código de este tutorial está actualizado para usar GetTwitchUserVar y evitar ese error.