我正在用 JavaScript 编写一个 Discord 机器人。 我尝试制作在私信中工作的命令,但是当我在私信中执行命令时,机器人没有响应(就好像它没有检测到在 DM 中发送的消息一样)。这会阻止脚本的进度。
我在机器人启动时设置意图。
const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
GatewayIntentBits.DirectMessages
]
});
我尝试了“if (message.channel.type === 'DM')”
client.on('messageCreate', async message => {
if (message.channel.type === 'DM' && message.content === '-hi') {
try {
await message.channel.send(':white_check_mark: | You have enabled the `-hi` command in server mode.');
} catch (error) {
console.error('error :', error);
}
}
});
我也尝试过“if (!message.guild)”
client.on('messageCreate', async message => {
if (!message.guild && message.content === '-hi') {
try {
const user = message.author;
await user.send(':white_check_mark: | You have enabled the `-hi` command in server mode.');
} catch (error) {
console.error('error :', error);
}
}
});
您需要在您的意图中包含部分内容。
const client = new Client({
intents: [
...
],
partials: [
Partials.Channel
]
})
您可以点击此处阅读有关部分的更多信息。