Datos guardados
Un comando puede recordar cosas: un contador, un puntaje, un ranking, un enfriamiento, una lista. Lo que guarda se queda hasta que se elimine (o hasta que caduque), y todos los comandos del servidor pueden leerlo.
{{ $uses := dbIncr "uses" 1 }}Este comando se ha usado {{ $uses }} veces.Dónde están los datos
Sección titulada «Dónde están los datos»Cada servidor tiene su propio espacio. Ningún servidor puede leer lo que guardó otro. Dentro de un servidor, los datos son:
- Del servidor: un valor para todo el servidor, por ejemplo
"uses". - De un miembro: un valor para cada persona, por ejemplo los puntos de cada miembro. Da el ID del usuario como último argumento.
Funciones
Sección titulada «Funciones»Las claves son texto de 1 a 100 letras, números, ., _, : o -. Un ID de usuario es texto, entre comillas.
| Función | Qué hace |
|---|---|
dbSet clave valor |
Guarda un valor. dbSet clave valor "idUsuario" lo guarda para un miembro |
dbSetExpire clave valor segundos |
Lo mismo, y desaparece pasado ese tiempo (de 1 segundo a un año). También recibe "idUsuario" al final |
dbGet clave |
El valor, o nil si no hay. dbGet clave "idUsuario" para un miembro |
dbDel clave |
Lo elimina. dbDel clave "idUsuario" para un miembro |
dbIncr clave cantidad |
Suma a un número y devuelve el número nuevo. Empieza desde 0 si todavía no hay nada. Usa una cantidad negativa para restar. Dos personas que lo usen al mismo tiempo nunca pierden una cuenta. dbIncr clave cantidad "idUsuario" para un miembro |
dbTop clave cantidad |
Los miembros con el número más alto bajo esa clave, de mayor a menor, hasta 25. Cada uno es un mapa con UserID y Value |
dbKeys prefijo |
Las claves del servidor que empiezan con el prefijo, hasta 100. dbKeys prefijo "idUsuario" para un miembro. Sin prefijo da todas |
dbIncr devuelve el número nuevo, así que lo imprime. Cuando no quieras que se imprima, guárdalo en una variable:
{{ $ignored := dbIncr "uses" 1 }}.
Qué se puede guardar
Sección titulada «Qué se puede guardar»Texto, números, true y false, listas y mapas, con listas y mapas dentro de ellos (hasta 6 niveles). Un embed o un mensaje hecho con
cembed o complexMessage no se puede guardar. Una vez guardado, un valor vuelve como estaba.
{{ dbSet "profile" (sdict "color" "pink" "tags" (cslice "a" "b")) .User.ID }}{{ (dbGet "profile" .User.ID).color }}Límites
Sección titulada «Límites»| Límite | Valor |
|---|---|
| Valores por servidor | 500 |
| Tamaño de un valor | 4000 caracteres una vez guardado |
| Lecturas y escrituras por uso de un comando | 25 |
| Longitud de una clave | 100 caracteres |
dbTop |
hasta 25 miembros |
Cuando un servidor está lleno, un valor que ya existe todavía puede cambiar, pero una clave nueva se rechaza hasta que se elimine algo. Los valores caducados dejan de contar al instante, y se borran de la base de datos cada hora.
Probar código que guarda cosas
Sección titulada «Probar código que guarda cosas»!customcommand codetest conserva lo que el código guarda solo hasta el final de esa prueba. Probar nunca cambia los datos que tu
servidor tiene guardados.
Patrones
Sección titulada «Patrones»Un contador
Sección titulada «Un contador»{{ $total := dbIncr "hugs" 1 }}{{ .User.Mention }} dio un abrazo. Abrazos dados en este servidor: **{{ $total }}**.Puntos para cada miembro, con un ranking
Sección titulada «Puntos para cada miembro, con un ranking»{{ $action := "top" }}{{ if .Args }}{{ $action = index .Args 0 }}{{ end }}{{ if eq $action "add" }} {{ $points := dbIncr "points" 10 .User.ID }} Tienes **{{ $points }}** puntos.{{ else }} {{ range $i, $entry := dbTop "points" 5 }}{{ add $i 1 }}. {{ mentionUser $entry.UserID }}: {{ $entry.Value }} {{ end }}{{ end }}Un enfriamiento para cada miembro
Sección titulada «Un enfriamiento para cada miembro»{{ if dbGet "daily" .User.ID }}Ya lo reclamaste hoy. Vuelve más tarde.{{ return }}{{ end }}{{ dbSetExpire "daily" true 86400 .User.ID }}{{ $coins := dbIncr "coins" 100 .User.ID }}Reclamaste 100 monedas. Tienes {{ $coins }}.Una lista
Sección titulada «Una lista»{{ $list := or (dbGet "todo") (cslice) }}{{ dbSet "todo" (append $list .RawArgs) }}Añadido. La lista tiene {{ add (len $list) 1 }} elementos.