Como Criar um Bot de Boas-Vindas no Discord com Geração de Imagem de Fundo
🔍 WiseChecker

Como Criar um Bot de Boas-Vindas no Discord com Geração de Imagem de Fundo

Você quer um bot de boas-vindas no Discord que receba novos membros com uma imagem personalizada mostrando o nome de usuário e um fundo customizado. Mensagens de texto comuns não têm impacto visual e passam despercebidas em servidores movimentados. Um bot que gera uma imagem na hora requer uma conta de bot, um ambiente de hospedagem e algumas bibliotecas Python. Este artigo explica como criar um bot de boas-vindas no Discord usando Python, a biblioteca discord.py e Pillow para geração de imagens.

O bot escutará a entrada de novos membros em um servidor e criará uma imagem de boas-vindas com o nome do membro e o ícone do servidor. A imagem é salva temporariamente e enviada para o canal de boas-vindas. Você precisará de conhecimento básico de Python, um token de bot do Discord e um servidor onde tenha permissão Gerenciar Servidor para convidar o bot.

Principais Pontos: Crie um Bot de Boas-Vindas no Discord com Geração de Imagem

  • Biblioteca discord.py e discord.Intents: Você deve ativar a intent de Membros tanto no Portal do Desenvolvedor do Discord quanto no código do bot para receber eventos de novos membros.
  • Pillow (PIL) e io.BytesIO: Use Pillow para desenhar texto e colar imagens, depois salve o resultado em um buffer de bytes para evitar escrever arquivos temporários no disco.
  • Manipulador de evento on_member_join: O bot aciona a geração da imagem e envia a imagem de boas-vindas como um anexo de arquivo do Discord dentro deste evento.

ADVERTISEMENT

Como Funciona o Bot de Boas-Vindas do Discord

O bot de boas-vindas usa o evento on_member_join do discord.py. Quando um novo membro entra em qualquer servidor onde o bot está presente, o evento é disparado. O bot então executa uma função que cria uma imagem de fundo, adiciona texto com o nome do membro e, opcionalmente, sobrepõe o ícone do servidor. A imagem final é salva em um buffer de bytes usando io.BytesIO do Python e enviada como discord.File para um canal de boas-vindas designado.

A geração de imagem depende do Pillow, um fork da Python Imaging Library. Você precisará instalá-lo com pip install Pillow. O bot também requer a biblioteca discord.py versão 2.0 ou superior, instalada com pip install discord.py. Para hospedagem, você pode executar o bot em sua máquina local, um Raspberry Pi ou uma plataforma em nuvem como Replit, Heroku ou um VPS. O bot deve ser convidado com o escopo bot e as permissões Enviar Mensagens e Anexar Arquivos.

Pré-requisitos

Antes de escrever o código, prepare o seguinte:

  • Um aplicativo Discord e token de bot do Portal do Desenvolvedor do Discord
  • Python 3.8 ou superior instalado em sua máquina ou host
  • Servidor Discord onde você tenha permissão Gerenciar Servidor para convidar bots
  • Um arquivo de imagem de fundo (ex.: welcome_bg.png) colocado na mesma pasta do script do bot

Passos para Construir o Bot de Boas-Vindas

  1. Crie um Aplicativo e Bot no Discord
    Acesse o Portal do Desenvolvedor do Discord e clique em New Application. Dê um nome, vá até a aba Bot. Clique em Add Bot e confirme. Na seção Privileged Gateway Intents, ative Server Members Intent e Message Content Intent. Copie o token do bot e salve-o com segurança.
  2. Convide o Bot para seu Servidor
    No Portal do Desenvolvedor, vá em OAuth2 > URL Generator. Selecione o escopo bot. Em Bot Permissions, marque Send Messages, Attach Files e Read Message History. Copie a URL gerada, abra no navegador e selecione seu servidor para convidar o bot.
  3. Instale as Bibliotecas Python Necessárias
    Abra um terminal ou prompt de comando e execute:
    pip install discord.py Pillow
    Se estiver no Linux, talvez seja necessário instalar python3-pil ou python3-pillow via gerenciador de pacotes.
  4. Escreva o Script do Bot
    Crie um novo arquivo chamado welcome_bot.py. Use o código abaixo como modelo. Substitua YOUR_BOT_TOKEN pelo token real que você copiou. Substitua também YOUR_WELCOME_CHANNEL_ID pelo ID do canal onde deseja que a imagem de boas-vindas apareça. Para obter o ID de um canal, ative o Modo Desenvolvedor no Discord (Configurações do Usuário > Avançado > Modo Desenvolvedor), clique com o botão direito no canal e selecione Copiar ID.
    import discord
    from discord.ext import commands
    from PIL import Image, ImageDraw, ImageFont
    import io

    intents = discord.Intents.default()
    intents.members = True
    bot = commands.Bot(command_prefix='!', intents=intents)

    WELCOME_CHANNEL_ID = 123456789012345678 # Substitua pelo ID do seu canal
    BACKGROUND_PATH = 'welcome_bg.png'

    @bot.event
    async def on_ready():
    print(f'{bot.user} conectou ao Discord!')

    @bot.event
    async def on_member_join(member):
    channel = bot.get_channel(WELCOME_CHANNEL_ID)
    if channel is None:
    return
    # Abrir imagem de fundo
    bg = Image.open(BACKGROUND_PATH).convert('RGBA')
    draw = ImageDraw.Draw(bg)
    # Carregar uma fonte (ajuste o caminho ou use a padrão)
    try:
    font = ImageFont.truetype('arial.ttf', 60)
    except IOError:
    font = ImageFont.load_default()
    # Adicionar texto de boas-vindas
    text = f'Bem-vindo, {member.name}!'
    text_bbox = draw.textbbox((0, 0), text, font=font)
    text_width = text_bbox[2] - text_bbox[0]
    text_height = text_bbox[3] - text_bbox[1]
    x = (bg.width - text_width) // 2
    y = bg.height - text_height - 50
    draw.text((x, y), text, fill='white', font=font)
    # Salvar em buffer de bytes
    with io.BytesIO() as image_binary:
    bg.save(image_binary, 'PNG')
    image_binary.seek(0)
    await channel.send(file=discord.File(fp=image_binary, filename='welcome.png'))

    bot.run('YOUR_BOT_TOKEN')
  5. Execute o Bot
    No terminal, navegue até a pasta que contém welcome_bot.py e sua imagem de fundo. Execute:
    python welcome_bot.py
    Você deve ver uma mensagem como NomeDoBot conectou ao Discord!. Agora teste fazendo um novo membro entrar no servidor, ou use o comando !join se você adicionou um. O bot deve enviar a imagem de boas-vindas para o canal designado.

ADVERTISEMENT

Problemas Comuns e Como Evitá-los

O Bot Não Responde a Novos Membros

A causa mais comum é a falta da intent de Membros. Verifique se Server Members Intent está ativado no Portal do Desenvolvedor do Discord, nas configurações do seu bot. Confirme também que você definiu intents.members = True no seu script. Sem isso, o evento on_member_join nunca será disparado.

A Imagem de Boas-Vindas Aparece em Branco ou Quebrada

Isso geralmente acontece quando o caminho do arquivo de imagem de fundo está incorreto ou o arquivo está faltando. Certifique-se de que welcome_bg.png está no mesmo diretório do seu script. Se você usar um nome ou caminho diferente, atualize a variável BACKGROUND_PATH. Verifique também se a imagem é um arquivo PNG ou JPEG válido.

O Texto Aparece Cortado ou Desalinhado

A posição do texto é calculada usando as dimensões da imagem. Se sua imagem de fundo tiver uma proporção incomum, ajuste os cálculos de x e y. Você também pode usar textbbox para obter o tamanho exato do texto e centralizá-lo corretamente. Se o arquivo de fonte não for encontrado, o bot usa a fonte padrão do Pillow, que pode ser muito pequena. Instale uma fonte TrueType como Arial ou use um caminho de fonte do sistema que exista no seu host.

O Bot Falha ao Iniciar com Erros de Permissão

Certifique-se de que o token do bot está correto e que você não incluiu espaços extras ou aspas acidentalmente. Se estiver hospedando em uma plataforma como Replit, armazene o token como uma variável de ambiente em vez de codificá-lo. Verifique também se o bot tem as permissões Send Messages e Attach Files no servidor. Você pode verificar isso clicando com o botão direito no servidor, selecionando Server Settings > Roles, e garantindo que o cargo do bot tenha essas permissões.

Métodos de Geração de Imagem: Pillow vs Canvas API vs Serviço Externo

Item Pillow (Local) Canvas API (Node.js) Serviço Externo (Imgflip)
Descrição Biblioteca Python para processamento de imagens Biblioteca Node.js para geração de imagens no servidor API de terceiros que gera imagens sob demanda
Linguagem Python JavaScript / TypeScript Qualquer linguagem com requisições HTTP
Configuração Instalar com pip Instalar com npm Cadastrar para obter chave de API
Personalização Controle total sobre texto, fontes, camadas Controle total, similar ao HTML Canvas Limitado a templates
Latência Baixa (roda no seu host) Baixa (roda no seu host) Média (requisição de rede)
Custo Gratuito Gratuito Plano gratuito com marca d’água
Melhor para Sobreposições simples de texto em fundos estáticos Gráficos complexos, animações Protótipos rápidos sem codificar lógica de imagem

Pillow é a escolha mais simples para um bot Python no Discord. Não requer chamadas de rede externas e oferece controle total sobre a saída. Se você prefere JavaScript, a Canvas API oferece flexibilidade similar. Serviços externos são mais rápidos de configurar, mas limitam suas opções de design e adicionam dependência de terceiros.

Seu novo bot de boas-vindas receberá cada membro com uma imagem personalizada que os faz se sentir reconhecidos. Após o bot estar funcionando, considere adicionar recursos extras como um fundo aleatório de uma pasta, mensagens específicas para cada servidor ou um comando para visualizar a imagem de boas-vindas. Para personalização avançada, explore as funções de desenho do Pillow para adicionar formas, gradientes ou avatares de usuário ao cartão de boas-vindas.

ADVERTISEMENT