Encuestas¶
Ejemplos de creacion y manejo de encuestas.
Crear encuesta¶
// Encuesta simple
await wa.Message.poll("123456789@g.us", {
content: "Cual es tu color favorito?",
options: [
{ content: "Rojo" },
{ content: "Azul" },
{ content: "Verde" },
{ content: "Amarillo" }
]
});
Leer datos de encuesta¶
wa.event.on("message:created", async (msg) => {
if (msg.type !== "poll") return;
// El contenido de una encuesta es JSON
const buffer = await msg.content();
const poll = JSON.parse(buffer.toString()) as {
content: string;
options: Array<{ content: string }>;
};
console.log(`Encuesta: ${poll.content}`);
console.log("Opciones:");
poll.options.forEach((opt, i) => {
console.log(` ${i + 1}. ${opt.content}`);
});
});
Bot de encuestas¶
wa.event.on("message:created", async (msg) => {
if (msg.me || msg.type !== "text") return;
const text = (await msg.content()).toString();
// Comando: !encuesta Pregunta | Opcion1 | Opcion2 | ...
if (text.startsWith("!encuesta ")) {
const content = text.slice(10);
const parts = content.split("|").map(s => s.trim());
if (parts.length < 3) {
await wa.Message.text(
msg.cid,
"Uso: !encuesta Pregunta | Opcion1 | Opcion2 | ...\n\n" +
"Ejemplo:\n" +
"!encuesta Que comemos hoy? | Pizza | Sushi | Hamburguesa"
);
return;
}
const [question, ...options] = parts;
if (options.length > 12) {
await wa.Message.text(msg.cid, "Maximo 12 opciones permitidas");
return;
}
await wa.Message.poll(msg.cid, {
content: question,
options: options.map(opt => ({ content: opt }))
});
await wa.Message.text(msg.cid, `Encuesta creada: "${question}"`);
}
});
Encuesta con temporizador¶
import type { WhatsApp } from "@arcaelas/whatsapp";
async function create_timed_poll(
wa: WhatsApp,
chat_id: string,
question: string,
options: string[],
duration_minutes: number
) {
// Crear encuesta
const poll_msg = await wa.Message.poll(chat_id, {
content: question,
options: options.map(opt => ({ content: opt }))
});
if (!poll_msg) return;
await wa.Message.text(chat_id, `Encuesta activa por ${duration_minutes} minutos`);
// Esperar duracion
await new Promise(r => setTimeout(r, duration_minutes * 60 * 1000));
// Anunciar que termino
await wa.Message.text(chat_id, `*Encuesta finalizada!*\n\nVer resultados en la encuesta.`);
}
// Uso
await create_timed_poll(
wa,
"123456789@g.us",
"Que pelicula vemos?",
["Accion", "Comedia", "Terror", "Drama"],
5 // 5 minutos
);
Notas importantes¶
Limite de opciones
WhatsApp permite maximo 12 opciones por encuesta.
Visibilidad de votos
Los votos en WhatsApp son anonimos. Solo puedes ver el conteo total, no quien voto.
Encuestas en grupos
Las encuestas funcionan mejor en grupos donde hay mas participantes.