MV Mafia Bot: Hilo oficial

DarkRaptor

No me cites N'wah

Jiub

Ya iba siendo hora de que el bot que usamos para las partidas tenga hilo propio. Ahora con un 100% menos de dar la murga a DarkRaptor por MP.

Motivación
FAQ

Estado del bot

  • Repositorio: GitHub
  • Versión actual: 1.1
  • Próxima versión: 1.2 en marzo si todo va bien.
  • Última actualización: 25-2-2021
4
DarkRaptor

Guía de uso para jugadores

Para mandar cualquier acción al bot, se abre nueva línea con tres corchetes seguido de un espacio. Por ejemplo:

### Desvoto

Si escribes correctamente la acción, el texto resultante saldrá en azul:

Desvoto

Puedes mandar múltiples acciones al bot en el mismo mensaje, siempre que abras nueva línea y uses los tres corchetes para cada una de ellas.

Votar y desvotar

Para votar a un jugador, se usa el verbo voto seguido del nombre del jugador. Por regla general, se considera que el jugador votado es la última palabra de la oración en la que se vota, por lo que la mayoría de variantes naturales de "voto a XXXX" se leen correctamente. A la hora de votar, el bot no distingue entre mayúsculas o minúsculas.

### Voto: Soraghatsu
### Voto a Soraghatsu
### voto a soraghatsu

Recuerda que una vez alcances el máximo de votos simultáneos que puedes emitir (por defecto, 1), no podrás volver a votar hasta que no desvotes primero.

### Desvoto
### Desvoto: Soraghatsu
### desvoto a soraghatsu

Si no se especifica a un jugador, el bot elimina el voto más antiguo que se haya emitido por el jugador que desvota. Si se especifica un objetivo, se tratará de eliminar ese voto concreto.

Historial de votos

Podéis pedirle al bot que os devuelva una tabla con todos los votos emitidos por un jugador desde que empezó la partida. Por ejemplo:

### Historial: Soraghatsu

El bot comprobará cuándo fue la última vez que se solicitó el historial de un jugador y os devolverá el resultado si vuestra petición es más reciente. Podéis solicitar varios historiales a la vez, tal que así:

### Historial: n3krO
### Historial: TheDomicus

El bot os contestará siempre en un único mensaje y os citará para haceros saber que ha publicado el historial. Tened en cuenta que si varios jugadores solicitan historiales, estos se apilarán en un único mensaje, por lo que vuestra solicitud aparecerá en el mismo mensaje que la de otros jugadores.

Podéis solicitar el historial de votos de entidades que no son jugadores estrictamente dichos, como el staff o un hipotético cuervo o creador de reglas:

### Historial: cuervo
### Historial: DarkRaptor
### Historial: regla

IMPORTANTE: Si pedís el historial de un cuervo o una regla, el bot tendrá en cuesta mayúsculas o minúsculas. Esta es la excepción a la regla general del funcionamiento del bot con respecto a las mayúsculas.

Historial de votantes

Similar al anterior, el historial de votantes devuelve el nombre de todos los jugadores que han votado al jugador que especifiquéis desde que empezó la partida.

### Votantes: SamaWoodo
3
DarkRaptor

Guía de uso para GM

Formulario para crear partida

El bot está alojado en un VPS personal y por ahora, lo más cómodo es que me paséis la configuración y yo lo instancio manualmente. ¿Pe-pero Dark por qué no hacerlo en una web? Porque me da pereza y porque lo suyo sería un web con soporte para mafias, pero eso queda muy lejos :P

Para lanzar el bot, me tenéis que mandar un MP con lo siguiente:

  1. URL del hilo: Cread primero el hilo antes de escribirme.
  2. GM de la partida: Encargado de abrir y cerrar el día, anunciar resoluciones.
  3. Moderadores: Los coGM que vayáis a tener. Pueden ser más de 1.
  4. ¿Cada cuántos mensajes queréis recuento? Se puede desactivar.
  5. ¿Cada cuántos votos queréis recuento? Se puede desactivar.

Y además necesito el siguiente archivo relleno en formato CSV. Hacedlo con un editor de textos, o el excel mismamente. Yo no lo reviso en partidas en las que participo, por lo que si está mal, no os puedo ayudar.

player,can_be_voted,allowed_votes,mod_to_lynch
no_lynch,1,0,0
SamaWoodo,1,1,0

La primera línea define las columnas de un fichero separado por comas. Cada campo representa:

  • player: El nombre del jugador. Intentad escribirlo correctamente puesto que aunque el bot no distingue mayúsculas, usa este campo para escribirlos correctamente. Es decir, si escribís Samawoodo en lugar de SamaWoodo, al jugador se le llamará Samawoodo en todos los mensajes del bot.

  • can_be_voted: 1 si se puede votar a este jugador, 0 si no se le puede votar. Si queréis desactivar el no linchamiento, poned este campo en 0 para no_lynch.

  • allowed_votes: Cuántos votos simultáneos puede poner este jugador. Los GM tienen infinitos votos por defecto, así que no los incluyáis.

  • mod_to_lynch: Modifica la mayoría necesaria para linchar a este jugador. Pensad en las habilidades amado y odiado. Un odiado por ejemplo, tendría un -1, mientras que un amado, un 1. Un jugador normal tendrá un 0.

Ejemplo: 9 jugadores, todos vanilla con NL

player,can_be_voted,allowed_votes,mod_to_lynch
no_lynch,1,0,0
SamaWoodo,1,1,0
DarkRaptor,1,1,0
n3krO,1,1,0
Soraghatsu,1,1,0
Dase,1,1,0
samusamu,1,1,0
Vespers,1,1,0
Psicotropica,1,1,0
sorakabanana,1,1,0

Comandos para GM

Los GM pueden usar cualquier comando disponible para los jugadores junto a los que vamos a describir a continuación. El bot distingue 2 tipos de administradores: los GM y los moderadores.

Solo el GM puede:

  1. Abrir y cerrar el día.
  2. Terminar la partida.

Tanto los moderadores como el GM pueden:

  1. Votar y desvotar tantas veces como quieran, sin límites. Todos sus votos aparecen como votos de GM.
  2. Usar alias de voto.
  3. Reemplazar jugadores.
  4. Pedir recuentos.

Abrir el día

Solo el GM puede hacerlo. Esto es una decisión de diseño y eficiencia que no va a cambiarse en un futuro próximo. El bot reconoce encabezados, que se formulan en nueva línea y con un único corchete. En concreto:

# Día X
## Jugadores vivos
Texto de roleo y fluff

Esta es la estructura de un día básico. El bot considera que el día empieza cuando en el post más reciente del GM donde aparece el encabezado

# Día

CUIDADO CON LAS TILDES. Este bot es grammar nazi con los GM.

La lista de jugadores es la primera lista ordenada (numerada) que aparezca en el post donde se abre el día. Por estética y por mi real ánimo, esta lista debe tener enlaces al ISO de cada jugador. Por ejemplo:

## Jugadores vivos
1. [NOMBRE DE JUGADOR](HILO?u=NOMBRE DE JUGADOR)
1. [Sinso](https://www.mediavida.com/foro/mafia/mafia-darkraptor-tumba-horrores-659291?u=Sinso)
1. [sorakabanana](https://www.mediavida.com/foro/mafia/mafia-darkraptor-tumba-horrores-659291?u=sorakabanana)

Cerrar el día

Es exactamente igual que para abrir el día, solo que en este caso escribiremos:

# Final del día X

De nuevo, ojo a la tilde. Para el final del día no es necesario poner la lista de jugadores vivos.

Abrir y cerrar noche

Al bot se la bufa fuerte lo que se escriba una vez se cierre el día, así que podéis poner todo el texto de roleo y mensajes que queráis durante las noches. Al bot le da igual.

Cerrar la partida

Este encabezado cerrará la instancia del bot, así como los historiales y el log de errores. Para facilitarnos la vida y ahorrar recursos del VPS, cierra la partida cuando termine. Para ello:

# Final de la partida

texto de roleo, ganadores y fluff aquí abajo.

Votar y desvotar

Los GM pueden emitir tantos votos como quieran. Por ahora, cada GM/mod es responsable de sus propios votos, por lo que solo él que emite el voto puede retirarlo. Esto posiblemente que cambie en el futuro.

Votar con alias

Voto: DarkRaptor como cuervo
Voto: samusamu como regla

Un voto emitido con la palabra clave como hará que el votante cambie de GM a cuervo o regla en estos casos concretos. Toda palabra es válida. A efectos de desvoto, estos votos se siguen atribuyendo al GM que los emitió, así que deberá desvotar.

Reemplazar jugadores

Reemplazar jugadores es muy sencillo y ya no hace falta que me pidáis que edite los permisos. A partir de ahora:

### Reemplazo: SamaWoodo por Vespers

Esto hará que el bot copie los permisos de SamaWoodo y añada una entrada idéntica para el jugador Vespers. Acto seguido, se eliminará al jugador de la lista interna de jugadores vivos. IMPORTANTE: Es recomendable pero no imprescindible que editéis la lista de jugadores vivos para no confundir a los jugadores.

Modkill o eliminación forzosa de jugadores

### Modkill: SamaWoodo

Esta orden elimina al jugador de la partida, dejando de procesar votos hacia su persona o solicitudes en el hilo de juego. La mayoría se reduce en 1 para acomodarse al hecho de que hay un jugador menos. Recuerda que el bot por si solo no puede desvelar el obituario de nadie, por lo que deberá ser el GM el encargado de hacerlo.

Recuentos

Hay 2 clases de recuento:

### Recuento
### Recuento hasta #523

El primer comando hará que el bot cuente desde el inicio del día hasta el último mensaje del barrido. El segundo tipo de recuento contará desde el inicio del día hasta el post que indiquéis. Realmente los corchetes para indicar el número del mensaje son accesorios, pero es bastante cómodo para saber qué mensaje estás citando tho. Los recuentos no van a la cola de mensajes del bot, sino que se postean en cuanto se resuelve la acción.

Congelar votos

### Congelar
o 
### Congelar SamaWoodo

Un jugador congelado no puede desvotar o mover el voto a otro jugador, si había votado en el momento en el que se le congela. Si no se especifica una víctima concreta, se asume que se congelan los votos de todos los jugadores vivos.

Lynch or your lose

### Lylo

En el momento en el que el bot lee la siguiente expresión, los jugadores no podrán desvotar. Es decir, los votos emitidos son permanentes hasta el final del día.

9
AddeL1749

Que alguien le de CT y MV premium a este caballero.

PD: te queremos dark.

1 1 respuesta
Psicotropica

@darkraptor mi más sincera enhorabuena! Menudo currazo te has pegado, eres la leche <3

leyvytah

#4 dile a los mods que contacten con la administración

n3krO

Eres el puto amo Dark.

@Thrazz dale un CT a este hombre. Yo creo que Jiub seria el CT perfecto.

5
raul_ct

¡Hola! Vengo a proponer un cambio, concretamente aquí, en "Mensajes"

Cambiaría, o mejoraría mensajes por algo más descriptivo por ejemplo "ID Mensaje", y añadiría un enlace al post donde vota, para que sea más facil el contexto.

Para sacar el enlace es coger el redondeo hacia abajo del ID de mensaje+1. por ejemplo, si estamos buscando este voto en concreto:

https://www.mediavida.com/foro/mafia/partida-bienvenidos-ano-3000-futurama-by-psico-666765/2#46

Partiendo del id del voto, que es 46

46/30=1,43333333333
Redondeamos y sumamos 1 --> 2

Y todo eso lo unimos
urlpartida+pag+idmensaje

Nota: el número de la página es aceptado como 1, asi que no hace falta quitarlo

1 1 respuesta
raul_ct

PD, ya se que es un castaña de explicación, pero yatusabeh lo que quiero decir

DarkRaptor

#8
La razón por la que no he querido añadir el corchete a los mensajes, por ejemplo #8 es para que no les salte cita, no se si me explico. No se si sacando el enlace del mensaje como tú dices pasa, thou :thinking:

raul_ct

#10
#10

Creo que no

1 respuesta
DarkRaptor

#11
Hecho. En la siguiente versión lo tendremos tal que así:

Historial de votos de n3krO

JugadorVotosVotado en
SamaWoodo1536
raul_ct1559
6 2 respuestas
raul_ct

#12 the funcking master of the universe

1 respuesta
DarkRaptor

#13
Va a tardar un mes mínimo de todas formas. Hay que arreglar algún bug menor de 1.0 y unas cuantas cosillas críticas que terminar antes de meter una versión nueva.

samusamu

Qué bug?

1 respuesta
Soraghatsu

#12 si pones yo que se #536 en un spoiler llega como cita?

a esto me refiero

536
2 respuestas
DarkRaptor

#15
Lo tienes en el GitHub. He cerrado hoy el issue. No afecta a ninguna partida en juego.

#16
No parece

n3krO

#16 No llega pero tampoco puedes darle click xD

spoiler
1 respuesta
DarkRaptor

#18
Creo que la solución de los enlaces que propuso Raúl funciona y evita las notificaciones. La he desplegado en la partida de novatos con buen resultado, así que en un par de semanitas la tenemos disponible para el resto de partidas. Hay más novedades pero son top secret :new_moon_with_face:

1 respuesta
n3krO
#19DarkRaptor:

Hay más novedades pero son top secret

No estan en github en un branch ni nada? :new_moon_with_face:

1 respuesta
DarkRaptor

#20
Ponte a buscar x'D

1 respuesta
Tranc0s

#21 modkill y congelar votos?

2
18 días después
DarkRaptor

Bueno, tal y como comenté en la taberna, os comento lo ocurrido durante el final del día 1 en la partida de @samusamu : Bienvenidos a Disneyland 2.0.

En primer lugar, el fallo del bot no afectó ni a la tabla de votos, ni al historial de votos ni a los recuentos automáticos. Todo funcionó como debía. El problema apareció al solicitar recuentos manuales hasta X post. Se debió a un motivo muy sencillo:

El bot hace un subset de la vote count quedándose con el estado de la misma hasta el post que se solicita. ¿Problema? Los desvotos. Los desvotos eliminan directamente una fila de dicha tabla y se procesan (si son válidos) en el momento en el que se desvota. Debido a que @samusamu pidió el recuento después (en nº de post) del jugador que desvotó, la tabla subset contenía todos los votos hasta el post solicitado, PERO no revirtió los desvotos. Es algo bastante sencillo que se arregla mejorando la mecánica del desvoto y no limitándonos a borrar la fila, pero como causó bastante revuelo lo comento por aquí.

@samusamu tiene los registros que se habían generado hasta ese momento y puede verificar que fue un error puramente visual.

Un saludo.

4 1 respuesta
samusamu

#23 Si.

19 días después
DarkRaptor

Ayer actualicé el bot y fusioné con la rama master algunos cambios que ya estaban en pruebas desde el mes pasado. En resumen, ahora los GM pueden avisar al bot para que en Lylo solo se pueda votar una vez (como en los campeonatos) y los votos se pueden congelar. He modificado la documentación para reflejar los cambios.

La actualización tocha la quiero hacer en marzo, según el tiempo que tenga.

1
leyvytah

espero que la actualizacion tenga un widget de conteo de palabras y estadisticas relacionadas con ello.

raul_ct

Y un programa escrito en visual basic que usando deep learning pueda sintetizar posts de usuarios

resumen 25

4
20 días después
DarkRaptor

Acerca de las configuraciones del bot

De un tiempo a esta parte me están llegando las configs del bot muy tarde, es decir, con la partida ya empezada o con apertura prevista en unas horas. Tened en cuenta que estaré unos meses mirando MV de forma esporádica, por lo que es posible que no lea los PM hasta pasadas 24-48h y por lo tanto, estéis hasta 1 día de juego completo sin bot.

La solución es sencilla: mandadme las configs. con 48h de antelación y yo me comprometo a tenerlo todo listo. Si me las mandáis más tarde es seguro que empezaréis la partida sin bot. No hay alternativas ahora mismo, por lo que tendréis que aceptarlo.

Un saludo.

4
1 mes después
DarkRaptor

Importante

Desde ahora y hasta nuevo aviso @Sesshoumaru1 gestionará todos los aspectos relacionados con el bot. Espero que esto sea un cambio temporal y que dentro de poco pueda retomar yo esta parte. Para configurar partidas y eso, hablad con él.

1
DarkRaptor

He arreglado un bug algo estúpido que hacía que los jugadores reemplazados siguieran sumando de cara al cálculo de la mayoría. Ya no hace falta que hagáis modkill al reemplazar. Cualquier duda, bug etc... lo podéis comentar por aquí o mandad un MP a @Sesshoumaru1

2 1 respuesta

Usuarios habituales

  • DarkRaptor
  • CrS-
  • raul_ct
  • leyvytah
  • samusamu
  • n3krO
  • AddeL1749