HuwiDevelopers

Grupos

Cómo funciona un bot en un grupo de Huwi. Quién lo agrega, qué lee, qué puede mandar y cuáles son los límites.

Un bot puede estar en grupos de Huwi. Las reglas son distintas a las de un chat de a dos.

Cómo entra a un grupo

  1. El dueño lo permite con Grupos en el menú del bot en @gepeto, y elige qué lee:
    • Sí, lee todo: recibe todos los mensajes del grupo.
    • Sí, solo si lo nombran: recibe solo comandos, menciones y respuestas a sus mensajes.
    • No: no entra a grupos.
  2. Un administrador del grupo lo agrega, como a cualquier persona. Tiene que haber hablado antes con ese bot (tocar Empezar cuenta). Si no, no se puede agregar.
  3. El bot tiene que tener el permiso groups prendido y no estar en pausa.

El grupo siempre dice cómo lee el bot («todos los mensajes» o «solo menciones, comandos y respuestas»), para que nadie se sorprenda.

Lo que un bot no hace en un grupo

No crea grupos, no agrega ni saca personas y no se va solo: eso lo hacen los administradores.

Qué recibe tu bot

Las mismas novedades message que en un chat de a dos. El chatId es el del grupo y payload.userId es quien escribió.

Con solo si lo nombran, tu bot recibe un mensaje únicamente si:

  • empieza con / (un comando; /ayuda@mi_bot también),
  • menciona @tu_usuario (sin importar mayúsculas), o
  • es una respuesta a un mensaje del bot.
import { mutate, query } from "./huwi.ts";

// En un grupo, las novedades traen el `chatId` del grupo. Con "solo menciones, comandos y respuestas",
// el bot recibe únicamente lo que le habla a él; con "todo", todos los mensajes.
const me = await query("bot.me");

async function handle(update: any) {
  if (update.type !== "message") return;
  const { text, command } = update.payload as { text: string; command?: string };
  const mentioned = text.toLowerCase().includes(`@${me.username}`);
  if (command === "help" || mentioned) {
    // En un grupo el límite es de 20 mensajes por minuto, sin turnos.
    await mutate("message.send", { chatId: update.chatId, clientId: `g-${update.id}`, text: "Aquí estoy. Escribe /help para ver qué hago." });
  }
}

let offset: string | undefined;
while (true) {
  const { updates } = await query("bot.updates", { offset, timeout: 25000 });
  for (const update of updates) {
    await handle(update);
    offset = String(BigInt(update.id) + 1n);
  }
}

Reglas y límites

ReglaDetalle
TurnosNo hay turnos en grupos: no cuentan los 5 por turno ni los 10 por día de un chat de a dos.
MensajesHasta 20 por minuto en cada grupo (botRate si te pasas).
Bots por grupoHasta 5 (bot-limit).
MenoresSi en el grupo hay alguien menor de 18, todos los bots tienen que ser aptos para menores (bot-minors).
PermisoSin groups o con el dueño en «No», enviar responde botPermission.

Los botones de un mensaje en un grupo funcionan igual: el toque llega como action.

En esta página