javascript Discord Bot可以响应DM?

lmyy7pcs  于 2023-05-12  发布在  Java
关注(0)|答案(1)|浏览(115)

我有一个简单的机器人:

const Discord = require('discord.js');
const client = new Discord.Client({
  intents: [
    Discord.GatewayIntentBits.Guilds,
    Discord.GatewayIntentBits.GuildMessages,
    Discord.GatewayIntentBits.DirectMessages,
  ],
});
client.on('ready', () => {
  console.log(`Logged in as ${client.user.tag}!`);
});

client.on('messageCreate', (message) => {
  if (message.author.bot) return; // Ignore messages from bots
  message.channel.send('Hello');
});

// login code here

我希望机器人响应与“你好”,它收到的每一个DM。现在,它只能成功地对它所在的服务器中的任何消息进行“hello”响应。
我该怎么做?我有“消息内容意图”权限在我的设置页面切换,所以我不知道我错过了什么。

jexiocij

jexiocij1#

如果你想创建一个只支持DM的机器人,你可以检查channel.type并忽略任何不是DM的东西。您可以在discord.js v14中使用ChannelType.DM枚举。
DM通道可以不缓存,因此您还需要添加Channel部分:

const client = new Discord.Client({
  intents: [
    Discord.GatewayIntentBits.Guilds,
    Discord.GatewayIntentBits.GuildMessages,
    Discord.GatewayIntentBits.DirectMessages,
  ],
  partials: [Discord.Partials.Channel],
});

client.on('messageCreate', (message) => {
  if (message.channel.type !== ChannelType.DM || message.author.bot) 
    return;

  message.channel.send('Hello');
});

相关问题