Pular para o conteúdo

Dados guardados

Um comando pode lembrar coisas: um contador, uma pontuação, um ranking, um intervalo, uma lista. O que ele guarda fica até ser removido (ou até expirar), e todos os comandos do servidor podem lê-lo.

{{ $uses := dbIncr "uses" 1 }}
Este comando já foi usado {{ $uses }} vezes.

Cada servidor tem o seu próprio espaço. Nenhum servidor pode ler o que outro guardou. Dentro de um servidor, os dados são:

  • Do servidor: um valor para o servidor inteiro, por exemplo "uses".
  • De um membro: um valor para cada pessoa, por exemplo os pontos de cada membro. Dê o ID do usuário como último argumento.

As chaves são texto de 1 a 100 letras, números, ., _, : ou -. Um ID de usuário é texto, entre aspas.

Função O que faz
dbSet chave valor Guarda um valor. dbSet chave valor "idUsuario" o guarda para um membro
dbSetExpire chave valor segundos O mesmo, e some depois desse tempo (de 1 segundo a um ano). Também recebe "idUsuario" no final
dbGet chave O valor, ou nil se não houver. dbGet chave "idUsuario" para um membro
dbDel chave Remove. dbDel chave "idUsuario" para um membro
dbIncr chave quantidade Soma a um número e devolve o número novo. Começa de 0 se ainda não houver nada. Use uma quantidade negativa para subtrair. Duas pessoas que usem ao mesmo tempo nunca perdem uma contagem. dbIncr chave quantidade "idUsuario" para um membro
dbTop chave quantidade Os membros com o número mais alto nessa chave, do maior para o menor, até 25. Cada um é um mapa com UserID e Value
dbKeys prefixo As chaves do servidor que começam com o prefixo, até 100. dbKeys prefixo "idUsuario" para um membro. Sem prefixo dá todas

dbIncr devolve o número novo, então ele o imprime. Quando você não quiser que seja impresso, guarde-o em uma variável: {{ $ignored := dbIncr "uses" 1 }}.

Texto, números, true e false, listas e mapas, com listas e mapas dentro deles (até 6 níveis). Um embed ou uma mensagem feita com cembed ou complexMessage não pode ser guardada. Depois de guardado, um valor volta como estava.

{{ dbSet "profile" (sdict "color" "pink" "tags" (cslice "a" "b")) .User.ID }}
{{ (dbGet "profile" .User.ID).color }}
Limite Valor
Valores por servidor 500
Tamanho de um valor 4000 caracteres depois de guardado
Leituras e escritas por uso de um comando 25
Tamanho de uma chave 100 caracteres
dbTop até 25 membros

Quando um servidor está cheio, um valor que já existe ainda pode mudar, mas uma chave nova é recusada até que algo seja removido. Os valores expirados deixam de contar na hora, e são apagados do banco de dados a cada hora.

!customcommand codetest mantém o que o código guarda somente até o fim desse teste. Testar nunca muda os dados que o seu servidor tem guardados.

{{ $total := dbIncr "hugs" 1 }}
{{ .User.Mention }} deu um abraço. Abraços dados neste servidor: **{{ $total }}**.
{{ $action := "top" }}{{ if .Args }}{{ $action = index .Args 0 }}{{ end }}
{{ if eq $action "add" }}
{{ $points := dbIncr "points" 10 .User.ID }}
Você tem **{{ $points }}** pontos.
{{ else }}
{{ range $i, $entry := dbTop "points" 5 }}{{ add $i 1 }}. {{ mentionUser $entry.UserID }}: {{ $entry.Value }}
{{ end }}
{{ end }}
{{ if dbGet "daily" .User.ID }}Você já resgatou hoje. Volte mais tarde.{{ return }}{{ end }}
{{ dbSetExpire "daily" true 86400 .User.ID }}
{{ $coins := dbIncr "coins" 100 .User.ID }}
Você resgatou 100 moedas. Você tem {{ $coins }}.
{{ $list := or (dbGet "todo") (cslice) }}
{{ dbSet "todo" (append $list .RawArgs) }}
Adicionado. A lista tem {{ add (len $list) 1 }} itens.