{
  "schemaVersion": "1.0",
  "path": "/guias/bots-discord/bot-discord-enviar-mensagem-dm-automatica",
  "url": "https://streethosting.com.br/guias/bots-discord/bot-discord-enviar-mensagem-dm-automatica",
  "markdownUrl": "https://streethosting.com.br/guias/bots-discord/bot-discord-enviar-mensagem-dm-automatica.md",
  "jsonUrl": "https://streethosting.com.br/guias/bots-discord/bot-discord-enviar-mensagem-dm-automatica.json",
  "title": "Como fazer o bot Discord enviar DM automática para membros",
  "description": "Configure o bot Discord para enviar mensagens diretas (DM) automáticas para membros: ao entrar no servidor, ao receber um cargo ou em resposta a um comando específico.",
  "category": "bots-discord",
  "topics": [
    "automacao"
  ],
  "difficulty": "intermediario",
  "datePublished": "2026-06-18",
  "dateModified": "2026-06-18",
  "readingMinutes": 3,
  "h1": "Bot Discord enviando DM automática: como configurar",
  "excerpt": "DMs automáticas são úteis para boas-vindas privadas, confirmação de compras e notificações importantes. Veja como implementar com discord.js e lidar corretamente com erros de DM fechado.",
  "author": "Equipe StreetHosting",
  "wordCount": 523,
  "categoryLabel": "Bots Discord",
  "topicLabels": [
    "Automação e webhooks"
  ],
  "primaryKeyword": "bot discord enviar mensagem dm automatica",
  "secondaryKeywords": [
    "discord bot dm usuario javascript",
    "bot discord direct message automatico",
    "discord.js enviar dm membro"
  ],
  "toc": [
    {
      "id": "quando-usar-dm",
      "label": "Quando usar DM automática"
    },
    {
      "id": "enviar-dm-nodejs",
      "label": "Enviar DM com discord.js"
    },
    {
      "id": "dm-ao-entrar",
      "label": "DM ao entrar no servidor"
    },
    {
      "id": "dm-por-cargo",
      "label": "DM ao receber um cargo"
    },
    {
      "id": "tratar-erros",
      "label": "Tratar erros de DM fechado"
    }
  ],
  "faqs": [
    {
      "question": "O bot pode enviar DM para qualquer usuário no Discord?",
      "answer": "O bot só pode enviar DM para usuários que compartilhem pelo menos um servidor com ele. Além disso, o usuário pode ter as DMs de servidores desativadas nas configurações de privacidade do Discord, o que vai gerar um erro ao tentar enviar."
    },
    {
      "question": "Como saber se o usuário tem DM desativada?",
      "answer": "Não é possível verificar antes de tentar. A forma correta é tentar enviar a DM e capturar o erro com try/catch. O código de erro 50007 ('Cannot send messages to this user') indica que o DM está fechado."
    },
    {
      "question": "Posso enviar DM em massa para todos os membros do servidor?",
      "answer": "Tecnicamente sim, mas o Discord limita fortemente essa prática. Enviar muitas DMs rapidamente pode levar o bot a ser banido por spam. Nunca envie DMs em massa sem consentimento explícito dos usuários."
    },
    {
      "question": "Como enviar embed via DM no Discord?",
      "answer": "A mesma sintaxe de embed que funciona em canais funciona em DMs. Use user.send({ embeds: [embed] }) com um EmbedBuilder configurado. O limite de tamanho de embed se aplica igualmente."
    }
  ],
  "howToSteps": [],
  "relatedProducts": [
    "https://streethosting.com.br/bots"
  ],
  "relatedGuides": [
    "https://streethosting.com.br/guias/bots-discord/bot-discord-boas-vindas-mensagem-automatica",
    "https://streethosting.com.br/guias/bots-discord/criar-bot-discord-slash-commands",
    "https://streethosting.com.br/guias/bots-discord/hospedagem-bot-discord-24-7"
  ],
  "content": {
    "format": "markdown",
    "body": "> **Resposta rápida**\n>\n> Para enviar DM com discord.js, use `await member.send(\"mensagem\")` ou `await user.send(\"mensagem\")`. Sempre envolva em `try/catch` para tratar usuários com DM fechado sem quebrar o bot.\n\n## Quando usar DM automática\n\nDMs automáticas são úteis em situações específicas onde uma mensagem privada faz mais sentido do que uma notificação pública:\n\n- Boas-vindas privadas com instruções detalhadas ao entrar no servidor\n- Confirmação de compra de cargo VIP ou assinatura\n- Notificação de punição (aviso, mute, ban temporário)\n- Alerta de evento exclusivo para membros de um grupo específico\n- Resultado de formulário ou inscrição submetida\n\n> **Atenção**\n>\n> Não use DMs automáticas para fins de marketing ou propaganda sem consentimento. O Discord considera isso spam e pode banir o bot. Use DMs apenas para informações diretamente relacionadas ao servidor e ações do usuário.\n\n## Enviar DM com discord.js\n\nNo discord.js, você pode enviar DM via um objeto *User* ou um *GuildMember*. O método é o mesmo nos dois casos:\n\n```\n// Via GuildMember (dentro de um servidor)\nawait member.send('Olá! Esta é uma DM automática.');\n\n// Via User (fora do contexto de servidor)\nconst user = await client.users.fetch('ID_DO_USUARIO');\nawait user.send('Olá! Esta é uma DM automática.');\n```\n\n> **Dica**\n>\n> Prefira sempre usar `member.send()` quando estiver dentro do contexto de um servidor. É mais direto e não precisa buscar o usuário separadamente.\n\n## DM ao entrar no servidor\n\nCombinando com o evento `guildMemberAdd`, envie uma DM de boas-vindas privada ao mesmo tempo que a mensagem pública no canal:\n\n```\nclient.on('guildMemberAdd', async (member) => {\n  try {\n    await member.send(\n      `Bem-vindo(a) ao servidor, ${member.user.username}!\\n` +\n      'Leia as regras em #regras antes de interagir.\\n' +\n      'Se tiver dúvidas, abra um ticket em #suporte.'\n    );\n  } catch (err) {\n    console.log(`Não foi possível enviar DM para ${member.user.tag}: ${err.message}`);\n  }\n});\n```\n\n## DM ao receber um cargo\n\nPara enviar DM quando um membro recebe um cargo específico, escute o evento `guildMemberUpdate`:\n\n```\nconst ID_CARGO_VIP = '123456789012345678';\n\nclient.on('guildMemberUpdate', async (oldMember, newMember) => {\n  const temCargoNovo = !oldMember.roles.cache.has(ID_CARGO_VIP)\n    && newMember.roles.cache.has(ID_CARGO_VIP);\n\n  if (!temCargoNovo) return;\n\n  try {\n    await newMember.send('Parabéns! Você agora é VIP no servidor.');\n  } catch (err) {\n    console.log('Erro ao enviar DM:', err.message);\n  }\n});\n```\n\n## Tratar erros de DM fechado\n\nMuitos usuários desativam DMs de servidores nas configurações de privacidade do Discord. Sem tratamento de erro, o bot vai quebrar (throw) ao tentar enviar. Sempre use try/catch:\n\n```\ntry {\n  await member.send('Mensagem importante');\n} catch (err) {\n  if (err.code === 50007) {\n    // DM desativada pelo usuário — falha silenciosa é esperada\n    console.log(`DM fechada para ${member.user.tag}`);\n  } else {\n    // Erro inesperado — registre para investigação\n    console.error('Erro inesperado ao enviar DM:', err);\n  }\n}\n```\n\nO código de erro **50007** significa \"Cannot send messages to this user\". Trate isso como uma falha esperada e silenciosa, não como um erro crítico do bot.\n\nPara o bot funcionar 24 horas enviando DMs e notificações, ele precisa estar hospedado em produção. Veja como [hospedar bot Discord 24/7](https://streethosting.com.br/guias/bots-discord/hospedagem-bot-discord-24-7)."
  }
}
