Я пытаюсь использовать ChatGPT Api и подключиться к боту разногласий, но получаю эту ошибку. Может ли кто-нибудь показать мне, как это исправить?
Ошибка
ReferenceError: требование не определено в области модуля ES, вы можете использовать импортировать вместо этого Этот файл обрабатывается как модуль ES, потому что он имеет расширение файла «.js» и «C:\Users\jkru0\OneDrive\Desktop\gpt\package.json» содержит «тип»: "модуль". Чтобы рассматривать его как сценарий CommonJS, переименуйте его, чтобы использовать Расширение файла .cjs.
Полный код
import Discord from 'discord.js';
import { ChatGPTAPI } from 'chatgpt';
import readline from 'readline';
const apiKey = 'hidden';
const api = new ChatGPTAPI({ apiKey });
const { Client, Intents } = require('discord.js');
const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] });
let conversationId;
let parentMessageId;
async function sendMessage(message, channel) {
let res = await api.sendMessage(message, {
conversationId: conversationId,
parentMessageId: parentMessageId
});
conversationId = res.conversationId;
parentMessageId = res.id;
console.info('\nBot:', res.text, '\n');
if (channel) {
await channel.send(res.text);
}
}
client.on('ready', () => {
console.info(`Logged in as ${client.user.tag}!`);
});
client.on('message', async (message) => {
if (message.author.bot) return;
if (message.content === 'quit') {
process.exit();
}
await sendMessage(message.content, message.channel);
});
async function main() {
await sendMessage('Hello World!');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
function askQuestion() {
rl.question('\nYou: ', async (question) => {
if (question === 'quit') {
rl.close();
process.exit();
}
await sendMessage(question);
askQuestion();
});
}
askQuestion();
}
client.login('hidden');
main();
Сообщение об ошибке говорит вам, что вы не можете использовать require
в модуле ES, и вместо этого вы должны использовать import
. Однако в вашем коде вы используете операторы require
и import
.
Это просто исправить, заменив require
на import
Пример:
import Discord, { Client, Intents } from 'discord.js';
Полный код:
import Discord, { Client, Intents } from 'discord.js';
import { ChatGPTAPI } from 'chatgpt';
import readline from 'readline';
const apiKey = 'hidden';
const api = new ChatGPTAPI({ apiKey });
const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] });
let conversationId;
let parentMessageId;
async function sendMessage(message, channel) {
let res = await api.sendMessage(message, {
conversationId: conversationId,
parentMessageId: parentMessageId
});
conversationId = res.conversationId;
parentMessageId = res.id;
console.info('\nBot:', res.text, '\n');
if (channel) {
await channel.send(res.text);
}
}
client.on('ready', () => {
console.info(`Logged in as ${client.user.tag}!`);
});
client.on('message', async (message) => {
if (message.author.bot) return;
if (message.content === 'quit') {
process.exit();
}
await sendMessage(message.content, message.channel);
});
async function main() {
await sendMessage('Hello World!');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
function askQuestion() {
rl.question('\nYou: ', async (question) => {
if (question === 'quit') {
rl.close();
process.exit();
}
await sendMessage(question);
askQuestion();
});
}
askQuestion();
}
client.login('hidden');
main();
Какую версию discordJS вы используете?
Теперь я получаю эту ошибку. импортировать Discord, {Клиент, Намерения} из 'discord.js'; ^^^^^^ SyntaxError: Именованный экспорт «Намерения» не найден. Запрошенный модуль «discord.js» является модулем CommonJS, который может не поддерживать все модули module.exports в качестве именованных экспортов. Модули CommonJS всегда можно импортировать с помощью экспорта по умолчанию, например, используя: import pkg from 'discord.js'; const {Клиент, намерения} = pkg; в ModuleJob._instantiate (узел: внутренний/модули/esm/module_job:123:21) в асинхронном ModuleJob.run (узел:внутренний/модули/esm/module_job:189:5) Node.js v19.6.0