Ir al contenido

Duelo

Simula un duelo 1vs1 entre dos viewers. El ganador se elige al 50 %.

Con Nightbot, el bot narra en 3 mensajes (como rokbot/smm): reto → pelea → ganador, con ~5 s entre cada uno. Con StreamElements, Fossabot u otros, el bot publica un solo mensaje con el relato completo (esos bots no permiten varias respuestas por comando).

GEThttps://ttv.losperris.dev/api/minigames/duel
AutenticaciónTodos los endpoints requieren el parámetro apiKey en la query. Obtén la tuya desde el panel.
viewer123: !duelo @rival456
Nightbot: @viewer123 ha retado a @rival456 a un duelo a muerte en el Viejo Oeste...
(≈ 5 s)
Nightbot: El sol está en lo más alto. Ambos se miran fijamente...
(≈ 5 s)
Nightbot: ¡BANG! ... @viewer123 guarda su arma mientras @rival456 cae derrotado.

Los mensajes salen como Nightbot, usando el header Nightbot-Response-Url (misma idea que smm.php de RokettoBot).

ParámetroTipoRequeridoDescripción
targetStringUsuario retado (login de Twitch, sin @).
challengerStringNoUsuario que reta. Si falta, el backend usa KeanuReeves. Si el bot no sustituye la variable ($(user) sin reemplazar), se usa Anónimo.
channelStringNoLogin del canal (el generador del panel ya lo incluye).
intervalNumberNoSegundos entre mensajes Nightbot (mínimo y default: 5).
apiKeyStringClave de API de tu cuenta.

Cada duelo elige un tema y una secuencia de 3 beats (reto → pelea → resultado). Placeholders: {c} retador, {t} rival, {w} ganador, {l} perdedor.

TemaEstilo del relato
WesternDuelos de revólver, saloon y amanecer en el Lejano Oeste.
MagicHechizos, varitas y explosiones arcanas.
Sci-FiSables de luz, plasma, hackeos y simulaciones.
AnimeReferencias shonen, rayos de energía y Death Note.
StreetChancla legendaria y pelea callejera.
GamingFPS no-scope, Mario Kart y trampas de Minecraft.
EpicasPeleas a velocidad luz y dragones.
MitologiaThor, Medusa y referencias mitológicas.
CineTerminator, Star Wars y John Wick.
curl --request GET \
  --url 'https://ttv.losperris.dev/api/minigames/duel?channel=tu_canal&challenger=viewer123&target=rival456&apiKey=TU_API_KEY' \
  --header 'Accept: text/plain'
curl -i --request GET \
  --url 'https://ttv.losperris.dev/api/minigames/duel?channel=tu_canal&challenger=viewer123&target=rival456&apiKey=TU_API_KEY' \
  --header 'Accept: text/plain'
https://ttv.losperris.dev/api/minigames/duel?channel=tu_canal&challenger=viewer123&target=rival456&apiKey=TU_API_KEY
@viewer123 ha retado a @rival456 a un duelo a muerte en el Viejo Oeste...
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
Cache-Control: public, s-maxage=10, stale-while-revalidate
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 29
X-RateLimit-Reset: 1710000060

@viewer123 ha retado a @rival456 a un duelo a muerte en el Viejo Oeste...
⚔️ @viewer123 ha retado a @rival456... El sol está en lo más alto... ¡BANG! @viewer123 gana.
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
Cache-Control: public, s-maxage=10, stale-while-revalidate
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 29
X-RateLimit-Reset: 1710000060

⚔️ @viewer123 ha retado a @rival456... El sol está en lo más alto... ¡BANG! @viewer123 gana.
	{"success": false,"error": {"message": "Error de validación","code": "VALIDATION_ERROR","details": [{ "path": "query.target", "message": "Required" }]}}
HTTP/1.1 400
Content-Type: application/json; charset=utf-8
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 29
X-RateLimit-Reset: 1710000060

{
"success": false,
"error": {
  "message": "Error de validación",
  "code": "VALIDATION_ERROR",
  "details": [{ "path": "query.target", "message": "Required" }]
}
}
Error al iniciar el duelo.
HTTP/1.1 500
Content-Type: text/plain; charset=utf-8
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 29
X-RateLimit-Reset: 1710000060

Error al iniciar el duelo.
!addcom !duelo $(urlfetch https://ttv.losperris.dev/api/minigames/duel?channel=TU_CANAL&challenger=$(user)&target=$(touser)&apiKey=TU_API_KEY)

Nightbot enviará los 3 mensajes como el bot.