discord.js 消息输入错误

问题描述 投票:0回答:1

我正在使用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, // 채팅 입력 감지

    ],

});

如果您能告诉我导致此错误的原因以及如何修复它,我将不胜感激。

我还想要一种不使用此意图的替代方法。

(这个问题是用机器翻译(从韩语翻译成英语)写的。翻译可能很奇怪。)

自从我开始这个以来,我还没有尝试过任何其他事情。

javascript node.js android-intent discord discord.js
1个回答
0
投票

不是

MessageTyping
,而是
GuildMessageTyping
(如果您需要 DM 输入,则为
DirectMessageTyping
。)

const client = new Client({

    intents: [

        GatewayIntentBits.Guilds,

        GatewayIntentBits.GuildMessages,

        GatewayIntentBits.MessageContent,

        GatewayIntentBits.GuildMembers,

        GatewayIntentBits.GuildMessageTyping, // 채팅 입력 감지

    ],

});
© www.soinside.com 2019 - 2024. All rights reserved.