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.
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 Servidorpara 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
- 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. - 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. - 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 instalarpython3-piloupython3-pillowvia gerenciador de pacotes. - Escreva o Script do Bot
Crie um novo arquivo chamadowelcome_bot.py. Use o código abaixo como modelo. SubstituaYOUR_BOT_TOKENpelo token real que você copiou. Substitua tambémYOUR_WELCOME_CHANNEL_IDpelo 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') - Execute o Bot
No terminal, navegue até a pasta que contémwelcome_bot.pye sua imagem de fundo. Execute:python welcome_bot.py
Você deve ver uma mensagem comoNomeDoBot conectou ao Discord!. Agora teste fazendo um novo membro entrar no servidor, ou use o comando!joinse você adicionou um. O bot deve enviar a imagem de boas-vindas para o canal designado.
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.