我正在使用discord.js制作一个discord机器人,但是当我使用MessageTyping Intent时,出现错误。
错误:
/home/container/node_modules/discord.js/src/util/BitField.js:174
throw new DiscordjsRangeError(ErrorCodes.BitFieldInvalid, bit);
л
RangeError [BitFieldInvalid]: Invalid bitfield flag or number: undefined.
at Function.resolve.(/home/container/node_modules/discord.js/src/util/BitField.js:17 4:11)
at /home/container/node_modules/discord.js/src/util/BitField.js:168:35 at Array.map (<anonymous>)
at Function.resolve (/home/container/node_modules/discord.js/src/util/BitField.js:16 8:18
at new BitField (/home/container/node_modules/discord.js/src/util/BitField.js:33:38) at new IntentsBitField (/home/container/node_modules/discord.js/src/util/IntentsBitF ield.js:9:1)
at Client._validateOptions (/home/container/node_modules/discord.js/src/client/Clien t.js:531:25)
at new Client (/home/container/node_modules/discord.js/src/client/Client.js:80:10) at file:///home/container/index.js:17:16.
at ModuleJob.run (node:internal/modules/esm/module_job:234:25) { code: 'BitFieldInvalid'
}
使用意图的部分代码。
代码:
if (message.content.startsWith('!핑')) {
try {
// 응답속도 계산
const start = Date.now();
const msg = await message.channel.send('Pong!');
const ping = Date.now() - start;
// 응답속도 임베드
const embed = new EmbedBuilder()
.setTitle('🏓 퐁!')
.setDescription(`현재 봇의 응답속도(ms)는 ${ping} 입니다.`)
.setColor('#FFFF00')
.setTimestamp();
await msg.edit({ content: '', embeds: [embed] });
// 유저가 입력 중일 때
const filter = (m) => m.author.id === message.author.id && m.content;
const collector = message.channel.createMessageCollector({ filter, time: 3000 });
collector.on('collect', async () => {
await msg.channel.send('.....그런데 봇은 왜 핑 퐁이 기본이라는 걸까요...?');
collector.stop(); // 메시지 수집기 중지
});
collector.on('end', () => {
if (collector.collected.size === 0) {
msg.channel.send('.....그런데 봇은 왜 핑 퐁이 기본이라는 걸까요...?');
}
});
} catch (error) {
console.error('!핑 명령어 처리 중 오류 발생:', error);
}
}
});
这是 import 和 gatewayintentbits 之间的代码。
代码:
import 'dotenv/config';
import { Client, GatewayIntentBits, ActivityType, EmbedBuilder } from 'discord.js';
import axios from 'axios';
import fs from 'fs';
import sharp from 'sharp';
import { PNG } from 'pngjs';
import cron from 'node-cron';
// Import pixelmatch dynamically at the start
let pixelmatch;
(async () => {
pixelmatch = (await import('pixelmatch')).default;
})();
const DISCORD_TOKEN = process.env.DISCORD_TOKEN;
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
GatewayIntentBits.GuildMembers,
GatewayIntentBits.MessageTyping, // 채팅 입력 감지
],
});
如果您能告诉我导致此错误的原因以及如何修复它,我将不胜感激。
我还想要一种不使用此意图的替代方法。
(这个问题是用机器翻译(从韩语翻译成英语)写的。翻译可能很奇怪。)
自从我开始这个以来,我还没有尝试过任何其他事情。
不是
MessageTyping
,而是 GuildMessageTyping
(如果您需要 DM 输入,则为 DirectMessageTyping
。)
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
GatewayIntentBits.GuildMembers,
GatewayIntentBits.GuildMessageTyping, // 채팅 입력 감지
],
});