简体   繁体   中英

Discord.js get user DM & log message

I want that my bot to log messages from a specific ID or if its not possible to log all DM messages and send to a discord server channel. If specific ID sends 'Hello!', the bot will send 'Hello!' to the specified channel id.

If you have all required intents enabled, you can simply listen for messageCreate ( message for DiscordJS v12 and older) and check for the channel type your message is coming from. For example:

const { Client, Intents } = require('discord.js');

// Initializing your client
const client = new Client({
  intents: [
    // Intent for catching direct messages
    Intents.DIRECT_MESSAGES,
    // Intents for interacting with guilds
    Intents.GUILDS,
    Intents.GUILD_MESSAGES
  ]
});

// Subscribe to the messages creation event
client.on('messageCreate', async (message) => {
  // Here you check for channel type
  // We only need direct messages here, so skip other messages
  if (message.channel.type !== 'DM')
    return;
  
  // Now we need guild where we need to log these messages
  // Note: It's better for you to fetch this guild once and store somewhere
  // and do not fetch it on every new received message
  const targetGuild = await client.guilds.fetch('YOUR GUILD ID');

  // Here you getting the channel from the list of the guild channels
  const targetLoggingChannel = await targetGuild.channels.fetch('LOGGING CHANNEL ID');
  
  // Sending content of the message to the target channel
  // You can also cover the message into embed with some additional
  // information about sender or time this message was sent
  await targetLoggingChannel.send(message.content);
});

// Authorizing
client.login('TOKEN HERE');

This is very minimal example of how to log messages from the DMs of the bot to some channel on any guild you want. You should also check for logging channel and guild existence to prevent errors. Also make sure that bot can send messages to the target channel.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM