Bot de geração de imagens com IA para Discord: bots gratuitos e como criar o seu

Quer um bot do Discord que transforme prompts de texto em imagens com IA sem mensalidade? Este artigo separa as opções gratuitas pelo funcionamento real, mostra quanto cada uma custa em tempo de fila e limites, e cria seu próprio bot de comando de barra com código funcional.

Bot de geração de imagens com IA para Discord: bots gratuitos e como criar o seu
Cristian Da Conceicao
Fundador do Picasso IA

Digite /imagine a lighthouse at dawn em um canal de chat, espere uns dez segundos, e uma imagem pronta aparece na thread para todos reagirem. Essa é toda a graça de um bot de geração de imagens com IA para Discord: sem aba do navegador, sem formulário de cadastro, sem app extra. O problema é que os bots mais conhecidos cobram mensalidade, e os gratuitos vêm com filas, limites diários ou um desligamento repentino. Este artigo separa as opções gratuitas pelo funcionamento real, mostra quanto cada uma custa em tempo de espera e, em seguida, cria seu próprio bot em menos de 100 linhas de JavaScript.

💡 Resposta rápida: O caminho gratuito mais fácil é um bot comunitário que usa GPUs de voluntários. O caminho mais confiável é um bot que você hospeda sozinho, e o código abaixo é curto o bastante para terminar de uma vez.

O que os bots de imagem do Discord fazem de fato

Um bot de imagem do Discord é um pequeno programa com três tarefas: escutar um comando, enviar seu texto para um modelo de imagem e publicar o resultado de volta no canal. O bot quase não faz trabalho pesado. O trabalho real acontece em uma GPU em outro lugar, e é por isso que um bot pode rodar em um notebook, em um mini PC sobrando ou no servidor em nuvem mais barato.

Homem de moletom cinza-carvão olhando uma janela de chat onde um bot acabou de postar a foto de um nascer do sol

Como funciona um comando de barra

Todo bot moderno segue o mesmo ciclo, e entendê-lo uma vez facilita o resto deste artigo:

  1. Um membro digita /imagine e preenche um prompt.
  2. O Discord envia uma interação ao seu bot e espera uma resposta em até 3 segundos.
  3. O bot responde com um estado de "pensando", chamado de resposta adiada, que dá até 15 minutos.
  4. O bot chama um modelo de imagem e espera o trabalho terminar.
  5. O bot edita a resposta e anexa a imagem pronta.

A etapa 3 é onde a maioria das primeiras tentativas falha. Gerar uma imagem leva mais de três segundos, então um bot que pula a resposta adiada mostra "O aplicativo não respondeu" e a imagem chega para ninguém.

Vista de cima de um diagrama em caderno, conversa no celular e café sobre uma mesa de carvalho

Por que o Discord combina com arte com IA

O chat acaba sendo um lar surpreendentemente bom para a geração de imagens:

  • Feed compartilhado. Todo mundo vê cada prompt, então as pessoas copiam o que funciona e melhoram a partir disso.
  • Retorno instantâneo. Reações e respostas mostram quais resultados agradaram.
  • Permissões embutidas. Cargos decidem quem pode gerar, e canais mantêm os experimentos longe das conversas sérias.
  • Pensado para o celular. Os membros criam imagens pelo celular sem instalar nada novo.

Vista de baixo ângulo de uma mesa de quarto com dois monitores mostrando um chat de fotos geradas e código

💡 Dica: Dê ao bot um canal próprio. Spam de imagens em um chat geral é o jeito mais rápido de irritar uma comunidade.

Bots gratuitos de imagem para Discord comparados

"Gratuito" tem significados diferentes dependendo de quem paga a GPU. A tabela agrupa os principais tipos por essa única pergunta.

Tipo de botQuem paga a GPUEspera típicaPrincipal pegadinha
Rede de GPUs comunitáriaVoluntários que doam capacidade ociosaDe segundos a vários minutosPrioridade na fila, escolha limitada de modelos
Bots de teste gratuitoO dono do bot, até os créditos acabaremRápidaOs créditos acabam e depois vem o paywall
Código aberto hospedado por vocêVocêDepende da sua GPU ou APIVocê mantém tudo
Bots pagos carro-chefeSua assinaturaRápidaMensalidade

Preços e limites mudam com frequência, então confira a página do próprio bot antes de convidá-lo para seu servidor.

Quatro amigos rindo em volta de um monitor em uma sala de estar iluminada

Bots de GPU comunitária

O Stable Horde, hoje também chamado de AI Horde, é o exemplo mais conhecido. Voluntários compartilham placas de vídeo, e qualquer pessoa pode pedir imagens do Stable Diffusion sem custo. A prioridade é controlada por pontos chamados kudos, que você ganha emprestando tempo de GPU, então pedidos de usuários com menos pontos esperam mais. Bots comunitários construídos sobre essa rede são o mais próximo de um bot de arte com IA para Discord realmente gratuito, com uma contrapartida: a velocidade depende de quantos voluntários estão online.

Bots de teste gratuito

Muitos bots oferecem algumas gerações grátis e depois pedem pagamento. Eles funcionam bem para testar um estilo, mas verifique três sinais de alerta antes de adicionar um deles a um servidor:

  • Nenhuma atualização há meses.
  • Nenhum dono claro nem canal de suporte.
  • Um pedido de permissão que o bot não tem motivo para precisar, como Administrador.

Um bot que só publica imagens precisa de Enviar Mensagens e Anexar Arquivos. Nada além disso.

Por que o Midjourney cobra

O Midjourney começou como um bot do Discord e popularizou o formato. Cada imagem consome minutos reais de GPU, e um bot de chat não tem espaço de anúncios para pagar essa conta, então o custo cai sobre o usuário. É também por isso que bots gratuitos de longa duração tendem a ser pequenos, mantidos pela comunidade ou apoiados por outro negócio.

Como criar o seu próprio bot

Criar o seu elimina a fila e o paywall. Você escolhe o modelo, os limites e as regras. Você precisa do Node.js 20.6 ou mais recente, de uma conta do Discord que possa adicionar bots a um servidor e de um token de API de um provedor de imagens. O código abaixo usa a API do PicassoIA porque o fluxo é simples: criar uma predição, consultar o status e baixar o arquivo.

Close das mãos de uma mulher digitando em um notebook com editor de código em um café

Crie o aplicativo no Discord

  1. Abra o Discord Developer Portal e clique em New Application.
  2. Na aba Bot, redefina o token e copie-o uma vez. Trate-o como uma senha.
  3. Em OAuth2, marque os escopos bot e applications.commands, depois marque as permissões Enviar Mensagens e Anexar Arquivos.
  4. Abra a URL gerada e adicione o bot a um servidor de teste.
  5. Ative o Modo de Desenvolvedor nas configurações do Discord, depois copie o ID do seu servidor e o ID do aplicativo.

Salve os valores em um arquivo .env ao lado do seu código:

DISCORD_TOKEN=your-bot-token
CLIENT_ID=your-application-id
GUILD_ID=your-test-server-id
PICASSOIA_TOKEN=your-picassoia-api-token

Depois execute npm init -y e npm install discord.js, e adicione "type": "module" a package.json.

💡 Dica: Comandos de barra não exigem intents privilegiados, então você pula a aprovação de Message Content que bots de comandos de texto precisam solicitar.

Registre o comando de barra

Crie register.js. Ele informa ao Discord que /imagine existe, com um prompt obrigatório e uma proporção opcional:

import { REST, Routes, SlashCommandBuilder } from "discord.js";

const imagine = new SlashCommandBuilder()
  .setName("imagine")
  .setDescription("Make an image from a text prompt")
  .addStringOption((o) =>
    o.setName("prompt").setDescription("What to picture").setRequired(true).setMaxLength(500)
  )
  .addStringOption((o) =>
    o.setName("ratio").setDescription("Image shape").addChoices(
      { name: "Square", value: "1:1" },
      { name: "Wide", value: "16:9" },
      { name: "Tall", value: "9:16" }
    )
  );

const rest = new REST().setToken(process.env.DISCORD_TOKEN);
await rest.put(
  Routes.applicationGuildCommands(process.env.CLIENT_ID, process.env.GUILD_ID),
  { body: [imagine.toJSON()] }
);
console.log("Command registered");

Execute uma vez com node --env-file=.env register.js. Comandos registrados para um único servidor aparecem na hora, enquanto comandos globais podem demorar para aparecer, então teste primeiro em um servidor só.

Escreva o manipulador de imagem

Crie bot.js. Este é o bot inteiro:

import { Client, GatewayIntentBits, AttachmentBuilder } from "discord.js";

const API = "https://api.picassoia.com/v1";
const headers = {
  Authorization: `Bearer ${process.env.PICASSOIA_TOKEN}`,
  "Content-Type": "application/json",
};
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));

async function generateImage(prompt, aspectRatio) {
  const create = await fetch(`${API}/models/picassoia/picassoia-image/predictions`, {
    method: "POST",
    headers,
    body: JSON.stringify({ input: { prompt, aspect_ratio: aspectRatio } }),
  });
  if (!create.ok) throw new Error(`Create failed with status ${create.status}`);

  let prediction = await create.json();
  while (["starting", "processing"].includes(prediction.status)) {
    await sleep(2000);
    const poll = await fetch(`${API}/predictions/${prediction.id}`, { headers });
    prediction = await poll.json();
  }
  if (prediction.status !== "succeeded") throw new Error(`Prediction ${prediction.status}`);
  return prediction.output[0];
}

const client = new Client({ intents: [GatewayIntentBits.Guilds] });

client.on("interactionCreate", async (interaction) => {
  if (!interaction.isChatInputCommand() || interaction.commandName !== "imagine") return;

  const prompt = interaction.options.getString("prompt", true);
  const ratio = interaction.options.getString("ratio") ?? "1:1";
  await interaction.deferReply();

  try {
    const imageUrl = await generateImage(prompt, ratio);
    const file = Buffer.from(await (await fetch(imageUrl)).arrayBuffer());
    await interaction.editReply({
      content: `**${interaction.user.username}:** ${prompt.slice(0, 300)}`,
      files: [new AttachmentBuilder(file, { name: "image.jpg" })],
      allowedMentions: { parse: [] },
    });
  } catch (error) {
    console.error(error);
    await interaction.editReply("That one failed. Try again in a minute.");
  }
});

client.login(process.env.DISCORD_TOKEN);

Inicie com node --env-file=.env bot.js, digite /imagine no seu servidor de teste, e uma imagem deve aparecer em poucos segundos. Quatro detalhes merecem atenção:

  • deferReply() responde dentro da janela de 3 segundos, e então o trabalho real ganha 15 minutos.
  • O laço de consulta verifica a cada 2 segundos e para quando o status deixa de ser starting e processing.
  • allowedMentions: { parse: [] } impede que um prompt contendo @everyone marque o servidor inteiro.
  • Reenviar o arquivo mantém a imagem no canal como um anexo normal do Discord.

Use o Flux 2 Pro no PicassoIA

Antes de fixar qualquer coisa no código, teste sua formulação em uma página de modelo. O Flux 2 Pro é um bom lugar para verificar se um estilo de prompt gera resultados nítidos e fotográficos, e o mesmo prompt pode então ir direto para o seu bot.

Mulher de camisa jeans comparando fotografias impressas sobre uma mesa comprida

Escolha um modelo para a tarefa

ModeloBoa escolha para um comando de bot
Flux 2 ProCenas fotográficas e retratos
Seedream 4.5Arte limpa e polida, e edições
GPT Image 2Prompts longos e textos legíveis nas imagens
Nano Banana 2Rascunhos rápidos e edições de imagem
Imagen 4Cenas do cotidiano nítidas e realistas
PicassoIA ImageO modelo que o bot acima chama pela API

Teste um prompt passo a passo

  1. Abra a página do Flux 2 Pro no PicassoIA.
  2. Digite o prompt exato que um membro enviaria para /imagine.
  3. Escolha a proporção que você pretende oferecer: quadrada, larga ou alta.
  4. Gere, observe o resultado e mude um detalhe da redação por vez.
  5. Repita até três tentativas seguidas ficarem certas, depois salve essa redação como exemplo na sua mensagem de /help.

Algumas dicas de parâmetros para o próprio bot:

  • Ofereça só as três proporções acima. Menos opções significam menos resultados confusos.
  • Peça uma imagem por comando. As respostas no chat ficam rápidas e o arquivo fica pequeno, já que o Discord limita os anexos a cerca de 10 MB em um servidor padrão.
  • Use saída em JPG para o chat. Ela sobe mais rápido que PNG.
  • Adicione um número seed opcional para que os amigos possam reproduzir os resultados uns dos outros.

💡 Nota sobre planos: A página da API lista as predições como isentas de créditos por enquanto e pede o plano Infinite. Confira a página da API do PicassoIA para os termos atuais antes de construir sobre ela.

Quando as imagens funcionarem, o mesmo padrão alimenta outros comandos. Um comando /edit pode chamar o PicassoIA Image Editor Pro, e um comando /animate pode usar um modelo de vídeo como o Seedance 2.0. Vídeo demora mais, então a resposta adiada importa ainda mais ali.

Mantenha o bot rápido e seguro

Um bot que funciona bem para você sozinho ainda pode cair quando vinte membros o usarem ao mesmo tempo.

Tempos de espera e limites de fila

A API do PicassoIA permite 5 predições em fila ou em execução por conta, compartilhadas entre todos os seus tokens. Acompanhe esse número no bot e dê a cada usuário um breve tempo de espera:

const COOLDOWN_MS = 20_000;
const MAX_IN_FLIGHT = 5;
const lastUse = new Map();
let inFlight = 0;

function checkLimits(userId) {
  const wait = (lastUse.get(userId) ?? 0) + COOLDOWN_MS - Date.now();
  if (wait > 0) return `Slow down, try again in ${Math.ceil(wait / 1000)}s.`;
  if (inFlight >= MAX_IN_FLIGHT) return "The queue is full. Try again in a minute.";
  return null;
}

No manipulador, chame checkLimits antes de deferReply(). Se ele retornar texto, envie como resposta privada (adicione MessageFlags à sua importação do discord.js e use flags: MessageFlags.Ephemeral). Caso contrário, defina lastUse, some um em inFlight e subtraia um em um bloco finally depois que o trabalho terminar.

Mesa com uma lista de verificação escrita à mão, conversa no celular e um cadeado de latão sobre um caderno

Regras de conteúdo para o seu servidor

Um bot de imagem publica o que o modelo gera a partir do que as pessoas digitam, então defina as regras antes do lançamento:

  • Limite onde ele funciona. Restrinja /imagine a um canal ou a um cargo nas configurações de comandos do servidor.
  • Respeite canais com restrição de idade. Conteúdo adulto pertence apenas a canais que o Discord marca como restritos por idade, e as regras próprias do provedor do modelo continuam valendo.
  • Registre os prompts em privado. Publique cada prompt e o ID do usuário em um canal somente para moderadores.
  • Filtre abusos óbvios. Rejeite prompts que batam com uma lista curta de termos proibidos antes de chegarem ao modelo.
  • Bloqueie menções em massa. Mantenha allowedMentions desativado para o texto dos usuários.

Onde hospedar o bot

Como o modelo roda em outro lugar, o bot em si precisa de muito pouca CPU e memória. Um servidor de 1 GB é mais que suficiente.

Pequeno mini PC preto sobre uma prateleira de madeira com um cabo ethernet conectado

Mini PC ou servidor em nuvem

OpçãoCustoDisponibilidadeCuidados
Notebook que você já temGrátisSó enquanto estiver ligadoO bot fica offline quando você fecha a tampa
Mini PC em casaUm pequeno acréscimo na conta de luzTão boa quanto sua internetReinicializações do roteador de casa
Servidor pequeno em nuvemAlguns dólares por mêsMuito altaVocê cuida das atualizações
Camadas gratuitas de hospedagemGrátisCostuma entrar em modo de espera após inatividadeO bot some da lista de membros

Qualquer que seja a escolha, rode o bot sob um gerenciador de processos como pm2 ou systemd para que ele reinicie após uma falha, e mantenha o arquivo .env fora do controle de versão.

Prompts que funcionam no chat

Os membros vão digitar prompts curtos e vagos. Seu trabalho é fazer prompts curtos funcionarem e mostrar às pessoas como é um prompt melhor.

Escreva prompts como um briefing fotográfico

Um padrão confiável é assunto, cenário, luz, lente. Fixe um exemplo no canal:

Prompt fracoPrompt mais forte
um cachorroum golden retriever em uma praia molhada ao nascer do sol, ângulo baixo, foto 35mm, contraluz suave
centro antigouma cidade portuária enevoada ao amanhecer, barcos de pesca, paralelepípedos molhados, foto 35mm
caféuma xícara de cerâmica com café sobre uma mesa de carvalho gasta, luz de janela vinda da esquerda, macro 85mm

Deixe um modelo de linguagem expandir os prompts

Para prompts curtos, adicione uma etapa de reescrita: envie o texto do membro a um modelo de chat com a instrução "Reescreva isto como um briefing fotográfico de uma frase, com assunto, cenário, luz e lente", e depois passe o resultado ao modelo de imagem. Teste a instrução manualmente antes. Cole-a no Gemini 3.5 Flash ou no Claude Sonnet 5 do PicassoIA e leia a saída antes de ligá-la ao bot. Mostre o prompt reescrito na resposta para que os membros vejam como o resultado foi feito.

Faça sua primeira imagem hoje

Agora você tem o mapa completo: bots comunitários gratuitos para diversão rápida, bots de teste para experimentar e um pequeno bot hospedado por você quando quiser controle. A forma mais rápida de descobrir quais prompts seu servidor vai adorar é testá-los antes mesmo do bot existir.

Homem sorridente em um café segurando um celular que mostra a foto gerada de uma montanha

Abra o Flux 2 Pro ou o Seedream 4.5 no PicassoIA, digite três prompts que sua comunidade realmente enviaria e salve os melhores resultados como exemplos na sua mensagem de /help. Depois pegue o código acima, adicione o comando /imagine e convide seus amigos. Quando quiser mais opções, explore todos os modelos de imagem, vídeo e linguagem em picassoia.com/en/all-models e troque pelo que melhor se encaixar no seu servidor.

Compartilhe este artigo

Escolha seu idioma