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.Onde estão os dados
Seção intitulada “Onde estão os dados”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.
Funções
Seção intitulada “Funções”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 }}.
O que pode ser guardado
Seção intitulada “O que pode ser guardado”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 }}Limites
Seção intitulada “Limites”| 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.
Testar código que guarda coisas
Seção intitulada “Testar código que guarda coisas”!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.
Padrões
Seção intitulada “Padrões”Um contador
Seção intitulada “Um contador”{{ $total := dbIncr "hugs" 1 }}{{ .User.Mention }} deu um abraço. Abraços dados neste servidor: **{{ $total }}**.Pontos para cada membro, com um ranking
Seção intitulada “Pontos para cada membro, com um ranking”{{ $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 }}Um intervalo para cada membro
Seção intitulada “Um intervalo para cada membro”{{ 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 }}.Uma lista
Seção intitulada “Uma lista”{{ $list := or (dbGet "todo") (cslice) }}{{ dbSet "todo" (append $list .RawArgs) }}Adicionado. A lista tem {{ add (len $list) 1 }} itens.