🔍 /
🧭 Guia

Perguntas já respondidas

Dúvidas comuns sobre Variáveis, Components V2, Comandos e outros pontos do Logic Script — antes de abrir um chamado, dá uma olhada aqui.

Preciso criar a variável no site antes de usar db.set()?

Não é obrigatório — db.set(), db.user(u).set() e db.guild().set() gravam o valor mesmo numa chave nova, na hora. Mas essa chave fica "solta": não aparece no Menu de Variáveis, no seletor do Logic Nodes/Builder, nem no histórico de alterações. O recomendado é cadastrar em Painel do servidor → Logic Engine → Variáveis primeiro, com nome/tipo/escopo/valor inicial/descrição, e só então usar db.get("nome") no script. Veja o guia Banco de dados.

Qual é a diferença entre let/const e o db?

let/const só existem enquanto aquele bloco (on ... end) está rodando — somem assim que o script termina. db (e db.user()/db.guild()) persiste no banco de dados e continua lá na próxima vez que o script rodar, inclusive em execuções de outros scripts. Veja Variáveis e Banco de dados.

Por que Container():setAccentColor(...) dá erro de sintaxe?

Porque o Logic Script não usa : pra chamar método — isso é sintaxe de Lua. No Logic Script é sempre com ponto: Container().setAccentColor(...). O : só aparece dentro de objetos, tipo { chave: valor }. Veja Componentes V2.

Posso usar content ou embeds junto com componentsV2: true?

Não — é uma regra do próprio Discord: com componentsV2: true a mensagem não pode ter content nem embeds. Todo texto precisa virar um TextDisplay() dentro dos componentes.

O Logic Script suporta comandos de barra (/comando)?

Não. on command("nome", message, args) reage a comandos por prefixo (ex.: !nome), não aos comandos de barra nativos do Discord. Comandos de barra da Ayami (como /biblioteca) são recursos fixos do bot, fora do Logic Script.

Como recebo um argumento que tem espaço, tipo um texto entre aspas?

Não recebe automaticamente — a separação de args é só por espaço em branco, sem tratamento de aspas. !avisar "boa tarde" vira dois argumentos ("boa e tarde", aspas incluídas). Se precisar do texto inteiro, junte os argumentos manualmente com join(args._, " ") (veja o exemplo em Trabalhando com canais).

Como funciona o cooldown()?

cooldown(chave, tempo) retorna true na primeira vez (e já marca o cooldown) e false enquanto o tempo não passou. Use uma chave que identifique o usuário (ex.: "diario-" .. message.author.id) pra não misturar o cooldown de uma pessoa com o de outra. Veja Comandos.

Meu script não roda / o comando não responde, o que eu confiro primeiro?

  • O nome do comando bate exatamente com o que foi digitado (comparação é case-insensitive, mas o resto do texto não)?
  • O prefixo do servidor é o mesmo que você está digitando no Discord (veja PREFIX)?
  • Tem algum end ou parêntese faltando? Erro de sintaxe impede o script inteiro de rodar, não só aquele comando.
  • Veja o console de logs do script e os Possíveis erros do evento command.

Existe limite de execução? Meu while true do ... end pode travar o bot?

Não trava o bot, mas o Logic Script tem um limite de passos por execução — um loop que nunca termina é interrompido e a execução marcada como timeout nos logs. Sempre garanta uma condição de saída em while/for. Veja Limites.

Qual a diferença entre db.user() e db.guild()?

db.user(user) guarda um valor por usuário dentro do servidor (ex.: saldo de moedas de cada um). db.guild() guarda um valor único pro servidor inteiro (ex.: canal de boas-vindas configurado). O db sem escopo é global ao servidor também, mas pensado pra chaves soltas/rápidas — prefira db.user()/db.guild() pra não colidir dados entre usuários.

Páginas relacionadas