Como Criar um Bot de Verificação do Discord com Etapa de E-mail ou Telefone
🔍 WiseChecker

Como Criar um Bot de Verificação do Discord com Etapa de E-mail ou Telefone

Você quer adicionar uma etapa de verificação por e-mail ou telefone ao seu servidor do Discord para que novos membros confirmem sua identidade antes de terem acesso completo. Sem essa etapa, bots e spammers podem entrar e causar problemas. Um bot de verificação pode enviar um código único para o e-mail ou telefone do usuário e só conceder cargos após o código ser inserido. Este artigo explica como criar um bot de verificação do Discord usando Python que exige uma etapa de verificação por e-mail ou telefone.

Principais Conclusões: Criando um Bot de Verificação do Discord com E-mail ou Telefone

  • Biblioteca discord.py: A biblioteca Python que permite que seu bot interaja com servidores e eventos do Discord.
  • Servidor SMTP ou API Twilio: O serviço externo que envia o e-mail de verificação ou SMS com o código para o usuário.
  • Configurações do Servidor > Cargos > Gerenciar Permissões: A área do servidor do Discord onde você configura o cargo de não verificado e o cargo de verificado.

ADVERTISEMENT

O que o Bot de Verificação Faz e o que Você Precisa Antes de Criá-lo

Um bot de verificação automatiza o processo de confirmar a identidade de um novo membro usando um endereço de e-mail ou número de telefone. Quando um usuário entra, o bot envia um código único para o método de contato fornecido. O usuário então digita o código em um canal do Discord, e o bot concede um cargo de verificado que desbloqueia o resto do servidor.

Antes de começar a programar, você precisa dos seguintes pré-requisitos:

  • Uma conta no Discord e um servidor onde você tenha permissões de administrador.
  • Um aplicativo do Discord e um token de bot criados no Portal do Desenvolvedor do Discord.
  • Python 3.8 ou superior instalado no seu computador ou servidor de hospedagem.
  • A biblioteca discord.py instalada via pip.
  • Para verificação por e-mail: acesso a um servidor SMTP (Gmail, Outlook ou um serviço de e-mail personalizado).
  • Para verificação por telefone: uma conta Twilio com capacidade de SMS e um número de telefone remetente verificado.

Como Funciona o Fluxo de Verificação

O bot escuta a entrada de novos membros no servidor. Quando um membro entra, o bot envia uma mensagem privada pedindo o e-mail ou número de telefone. O usuário responde com as informações de contato. O bot gera um código aleatório de 6 dígitos e o envia para esse método de contato via e-mail ou SMS. O usuário então digita o código no canal privado. Se o código corresponder, o bot atribui um cargo de verificado e remove o cargo de não verificado.

Passos para Criar o Bot de Verificação

Siga estes passos para criar um bot de verificação funcional. O exemplo usa verificação por e-mail, mas você pode adaptá-lo para SMS substituindo a função de envio de e-mail pela API do Twilio.

  1. Crie um Aplicativo e Bot do Discord
    Acesse o Portal do Desenvolvedor do Discord em discord.com/developers/applications. Clique em “New Application” e dê um nome. No menu à esquerda, clique em “Bot” e depois em “Add Bot”. Copie o token do bot. Em “OAuth2” > “URL Generator”, selecione o escopo “bot” e as permissões “Send Messages”, “Manage Roles” e “Read Message History”. Use a URL gerada para convidar o bot para o seu servidor.
  2. Configure o Ambiente Python
    Abra um terminal e execute pip install discord.py para instalar a biblioteca. Se você planeja enviar e-mails, instale smtplib (integrado) ou yagmail para integração mais fácil com Gmail. Para SMS, instale twilio com pip install twilio.
  3. Escreva o Código do Bot
    Crie um novo arquivo Python chamado verification_bot.py. Comece com a estrutura básica do bot:
    import discord
    from discord.ext import commands
    import smtplib
    import random
    import string
    
    intents = discord.Intents.default()
    intents.members = True
    bot = commands.Bot(command_prefix='!', intents=intents)
    
    @bot.event
    async def on_ready():
        print(f'Logado como {bot.user}')
    
    bot.run('SEU_TOKEN_DO_BOT')

    Substitua SEU_TOKEN_DO_BOT pelo token do Portal do Desenvolvedor.

  4. Adicione o Comando de Verificação
    Adicione um comando que inicia o processo de verificação. Por exemplo, !verify email ou !verify phone. O bot pedirá as informações de contato em uma DM. Use este código:
    @bot.command()
    async def verify(ctx, method: str):
        if method.lower() not in ['email', 'phone']:
            await ctx.send('Por favor, especifique email ou phone.')
            return
        await ctx.author.send(f'Por favor, informe seu endereço de {method}:')
        def check(m):
            return m.author == ctx.author and isinstance(m.channel, discord.DMChannel)
        msg = await bot.wait_for('message', check=check)
        contact = msg.content
        # Gera um código de 6 dígitos
        code = ''.join(random.choices(string.digits, k=6))
        # Armazena o código em um dicionário (use banco de dados em produção)
        verification_codes[ctx.author.id] = code
        # Envia o código
        if method.lower() == 'email':
            send_email(contact, code)
        else:
            send_sms(contact, code)
        await ctx.author.send('Um código de verificação foi enviado. Por favor, responda com o código.')
        msg_code = await bot.wait_for('message', check=check)
        if msg_code.content == code:
            role = discord.utils.get(ctx.guild.roles, name='Verificado')
            await ctx.author.add_roles(role)
            await ctx.author.send('Verificação bem-sucedida!')
        else:
            await ctx.author.send('Código incorreto. Tente novamente.')
  5. Implemente a Função de Envio de E-mail
    Adicione uma função que envia um e-mail usando SMTP. Para Gmail, você precisa de uma senha de aplicativo. Exemplo:
    def send_email(to_email, code):
        from_email = 'seu_email@gmail.com'
        password = 'sua_senha_de_app'
        subject = 'Seu Código de Verificação do Discord'
        body = f'Seu código de verificação é: {code}'
        message = f'Subject: {subject}\n\n{body}'
        server = smtplib.SMTP('smtp.gmail.com', 587)
        server.starttls()
        server.login(from_email, password)
        server.sendmail(from_email, to_email, message)
        server.quit()
  6. Implemente a Função de Envio de SMS (Opcional)
    Se você usar Twilio, adicione esta função:
    from twilio.rest import Client
    
    def send_sms(to_phone, code):
        account_sid = 'seu_account_sid'
        auth_token = 'seu_auth_token'
        client = Client(account_sid, auth_token)
        message = client.messages.create(
            body=f'Seu código de verificação do Discord é: {code}',
            from_='+1234567890',
            to=to_phone
        )
  7. Configure os Cargos do Servidor
    No seu servidor do Discord, crie dois cargos: “Não Verificado” e “Verificado”. Defina o cargo “Não Verificado” sem permissões para ver canais, exceto um único canal de verificação. Defina o cargo “Verificado” com acesso a todos os canais. Certifique-se de que o bot tenha a permissão “Gerenciar Cargos” e que seu cargo esteja acima de ambos os cargos na hierarquia.
  8. Execute o Bot
    Salve o arquivo e execute-o com python verification_bot.py. O bot deve ficar online. Teste fazendo um novo membro usar o comando !verify email.

ADVERTISEMENT

Erros Comuns e Limitações

O Bot Não Consegue Enviar Mensagens Diretas para Novos Membros

O Discord pode bloquear DMs de bots se o usuário tiver configurações de privacidade que permitem apenas que amigos enviem DMs. Para contornar isso, use um canal de verificação dedicado onde os usuários possam digitar comandos em vez de depender de DMs.

Falha no Envio de E-mail ou SMS

O e-mail pode cair no spam ou o SMS pode ser bloqueado pelas operadoras. Sempre teste com um e-mail ou número de telefone real. Para e-mail, use um serviço como SendGrid para melhor entrega. Para SMS, certifique-se de que seu número Twilio esteja verificado e tenha créditos suficientes.

Expiração do Código e Segurança

O exemplo armazena códigos em um dicionário Python, que é reiniciado quando o bot é reiniciado. Em produção, use um banco de dados como SQLite ou Redis. Adicione um temporizador de expiração do código (por exemplo, 5 minutos) para evitar reutilização. Nunca registre ou exponha os códigos de verificação.

Item Verificação por E-mail Verificação por Telefone (SMS)
Custo Gratuito com SMTP (Gmail tem limites) Pago por SMS via Twilio
Velocidade de Entrega Segundos a minutos Geralmente em segundos
Privacidade do Usuário E-mail pode ser compartilhado com terceiros Número de telefone é mais sensível
Complexidade de Configuração Requer credenciais SMTP Requer conta Twilio

Agora você tem um bot de verificação do Discord funcional que pode verificar usuários via e-mail ou telefone. Em seguida, considere adicionar um banco de dados para armazenar códigos de verificação de forma persistente e implementar limitação de taxa para evitar abusos. Para proteção avançada, integre uma etapa de CAPTCHA antes do envio do código para reduzir ainda mais registros de bots.

ADVERTISEMENT