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
- 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.
- 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.
- 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_bottambié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
| Regla | Detalle |
|---|---|
| Turnos | No hay turnos en grupos: no cuentan los 5 por turno ni los 10 por día de un chat de a dos. |
| Mensajes | Hasta 20 por minuto en cada grupo (botRate si te pasas). |
| Bots por grupo | Hasta 5 (bot-limit). |
| Menores | Si en el grupo hay alguien menor de 18, todos los bots tienen que ser aptos para menores (bot-minors). |
| Permiso | Sin 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.