Bot de Telegram para concursos por invitaciones (referidos) + ranking y anti-fraude
Budget: €30 – €250 EUR
Busco desarrollador/a con experiencia en bots de Telegram para crear un bot de concursos por invitaciones en un grupo (≈1.000 miembros). El bot debe generar enlaces personales (deep links), atribuir quién invitó a cada nuevo miembro, mantener un ranking en vivo y aplicar reglas anti-fraude básicas. Se usará de forma recurrente (2–3 veces/año) para distintos retos/sorteos.
Entregables mínimos:
Bot funcional con comandos:
/start, /link (devuelve deep link personal), /top (top 10), /rules, /close (cerrar concurso), /getgroupid.
Lógica de referidos con deep links: t.me/ElBot?start=<user_id>.
Validación de invitaciones: el punto solo se otorga cuando el referido entra al grupo y permanece ≥24 h.
Anti-fraude básico:
Sin auto-referidos.
No contar reingresos/duplicados.
Descontar si el referido abandona en <24 h.
Opción de exigir antigüedad mínima de cuenta (configurable).
Ranking en vivo (mensaje por comando; opcional: actualización periódica del mensaje fijado).
Persistencia en base de datos (SQLite o PostgreSQL).
Configuración por variables de entorno (token, id de grupo, enlace del grupo, fecha fin, días mínimos de antigüedad).
Despliegue en un servicio sencillo (Railway, Render o Docker en VPS) y breve guía de operación (README).
Código fuente en mi repositorio (propiedad intelectual para el cliente).
Deseable (no imprescindible):
Panel web simple (login básico) para ver ranking, descargar CSV y cerrar/abrir concurso.
Captcha de acceso (integración con Rose u otro bot) o check de cuenta sospechosa.
Tests básicos de lógica de referidos.
Tecnología preferida (abierta):
Python (python-telegram-bot) o Node.js (Telegraf/grammY).
BD: SQLite (MVP) o PostgreSQL (si hay panel).
Despliegue: Railway/Render/Docker.
Indica tu stack y por qué.
Entrega esperada:
Tiempo estimado: 3–7 días laborables para MVP.
Comunicación en español.
Especificación técnica
Flujo:
Usuario existente en el grupo → escribe /link en privado con el bot → recibe su deep link.
Nuevo usuario pulsa el deep link → el bot guarda “pendiente de atribución” (referrer_id ↔ referred_id).
Cuando el nuevo usuario entra al grupo, el bot marca la invitación como válida y suma 1 punto al referrer.
Si el invitado abandona <24 h → se invalida el punto.
/top devuelve top 10 con @usuario y puntos.
/close detiene el conteo (o por fecha fin).
Comandos:
/start (bienvenida + enlace del grupo + instrucciones)
/link (muestra deep link del usuario)
/top (ranking)
/rules (reglas)
/close (solo admin/lista blanca)
/getgroupid (en el grupo, para extraer el ID)
Eventos a escuchar:
chat_member en el GROUP_ID para detectar entradas/salidas.
Mensajes directos al bot para /start con parámetro start=<referrer_id>.
Anti-fraude (mínimo):
No sumar si referrer_id == referred_id.
Un solo referrer por referido.
Invalidar si el referido se va antes de 24 h.
Config MIN_ACCOUNT_DAYS (placeholder; se puede reforzar con checks adicionales).
Modelo de datos (ejemplo):
users(user_id PK, username, first_seen_ts)
referrals(referred_id PK, referrer_id, created_at_ts, joined_at_ts, valid BOOL)
settings(k PK, v)
Config (ENV):
BOT_TOKEN, GROUP_ID, GROUP_LINK, MIN_ACCOUNT_DAYS, CONTEST_END_TS, ADMIN_IDS
) Pruebas de aceptación (checklist)
Deep link personal funciona y registra referrer pendiente.
Al entrar al grupo, el referido suma punto a su referrer.
Reingresos no duplican puntos.
Auto-referido no suma.
Salida <24 h invalida el punto.
/top muestra top correcto con conteo real.
/close bloquea nuevas altas.
Variables ENV permiten cambiar grupo/enlaces/fechas sin tocar código.
BD exportable a CSV (ranking final).
Logs mínimos para auditar incidencias.
Entregables mínimos:
Bot funcional con comandos:
/start, /link (devuelve deep link personal), /top (top 10), /rules, /close (cerrar concurso), /getgroupid.
Lógica de referidos con deep links: t.me/ElBot?start=<user_id>.
Validación de invitaciones: el punto solo se otorga cuando el referido entra al grupo y permanece ≥24 h.
Anti-fraude básico:
Sin auto-referidos.
No contar reingresos/duplicados.
Descontar si el referido abandona en <24 h.
Opción de exigir antigüedad mínima de cuenta (configurable).
Ranking en vivo (mensaje por comando; opcional: actualización periódica del mensaje fijado).
Persistencia en base de datos (SQLite o PostgreSQL).
Configuración por variables de entorno (token, id de grupo, enlace del grupo, fecha fin, días mínimos de antigüedad).
Despliegue en un servicio sencillo (Railway, Render o Docker en VPS) y breve guía de operación (README).
Código fuente en mi repositorio (propiedad intelectual para el cliente).
Deseable (no imprescindible):
Panel web simple (login básico) para ver ranking, descargar CSV y cerrar/abrir concurso.
Captcha de acceso (integración con Rose u otro bot) o check de cuenta sospechosa.
Tests básicos de lógica de referidos.
Tecnología preferida (abierta):
Python (python-telegram-bot) o Node.js (Telegraf/grammY).
BD: SQLite (MVP) o PostgreSQL (si hay panel).
Despliegue: Railway/Render/Docker.
Indica tu stack y por qué.
Entrega esperada:
Tiempo estimado: 3–7 días laborables para MVP.
Comunicación en español.
Especificación técnica
Flujo:
Usuario existente en el grupo → escribe /link en privado con el bot → recibe su deep link.
Nuevo usuario pulsa el deep link → el bot guarda “pendiente de atribución” (referrer_id ↔ referred_id).
Cuando el nuevo usuario entra al grupo, el bot marca la invitación como válida y suma 1 punto al referrer.
Si el invitado abandona <24 h → se invalida el punto.
/top devuelve top 10 con @usuario y puntos.
/close detiene el conteo (o por fecha fin).
Comandos:
/start (bienvenida + enlace del grupo + instrucciones)
/link (muestra deep link del usuario)
/top (ranking)
/rules (reglas)
/close (solo admin/lista blanca)
/getgroupid (en el grupo, para extraer el ID)
Eventos a escuchar:
chat_member en el GROUP_ID para detectar entradas/salidas.
Mensajes directos al bot para /start con parámetro start=<referrer_id>.
Anti-fraude (mínimo):
No sumar si referrer_id == referred_id.
Un solo referrer por referido.
Invalidar si el referido se va antes de 24 h.
Config MIN_ACCOUNT_DAYS (placeholder; se puede reforzar con checks adicionales).
Modelo de datos (ejemplo):
users(user_id PK, username, first_seen_ts)
referrals(referred_id PK, referrer_id, created_at_ts, joined_at_ts, valid BOOL)
settings(k PK, v)
Config (ENV):
BOT_TOKEN, GROUP_ID, GROUP_LINK, MIN_ACCOUNT_DAYS, CONTEST_END_TS, ADMIN_IDS
) Pruebas de aceptación (checklist)
Deep link personal funciona y registra referrer pendiente.
Al entrar al grupo, el referido suma punto a su referrer.
Reingresos no duplican puntos.
Auto-referido no suma.
Salida <24 h invalida el punto.
/top muestra top correcto con conteo real.
/close bloquea nuevas altas.
Variables ENV permiten cambiar grupo/enlaces/fechas sin tocar código.
BD exportable a CSV (ranking final).
Logs mínimos para auditar incidencias.
Related categories:
PHP
Python
Mobile App Development
AJAX
HTML5
jQuery / Prototype
Telegram Moderation
Telegram API
Bot Development