es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error de rango no capturado [MESSAGE_CONTENT_TYPE]: El contenido del mensaje debe ser una cadena no vacía.

Estoy intentando crear un chatbot gpt3 pero sigo obteniendo este error en Discord.js v11.

[Uncaught RangeError [MESSAGECONTENTTYPE]: El contenido del mensaje debe ser una cadena no vacía.]

client.on("messageCreate", function (message) {
    if (message.author.bot) return;
    prompt += <code>Tú: ${String(message.content)}\n</code>;
    (async () => {
        const gptResponse = await openai.complete({
            engine: 'davinci',
            prompt: prompt,
            maxTokens: 60,
            temperature: 0.3,
            topP: 0.3,
            presencePenalty: 0,
            frequencyPenalty: 0.5,
            bestOf: 1,
            n: 1,
            stream: false,
            stop: ['\n', '\n\n']
        });
        message.reply(String(gptResponse.data.choices[0].text.substring(5)));
        prompt += <code>${gptResponse.data.choices[0].text}\n</code>;
    })();
});
client.login(process.env.BOT_TOKEN);
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error [Uncaught RangeError [MESSAGE_CONTENT_TYPE]: Message content must be a non-empty string.] indica que el message.content que se está pasando al constructor String() está vacío o nulo. Esto puede estar ocurriendo porque el objeto message que se está pasando al controlador de evento messageCreate no tiene una propiedad content, o la propiedad content es inválida.

    Para resolver este problema, es posible que desee agregar una condición para asegurarse de que la propiedad content no esté vacía o nula antes de pasarla al constructor String(). Una posible solución es agregar una declaración if como esta:

    client.on("messageCreate", function (message) {
        if (message.author.bot) return;
        if (!message.content) return; // agregar esta línea
        prompt += `Tú: ${String(message.content)}\n`;
        // ... resto del código
    });
    

    Esto verificará si message.content es falsy (es decir, vacío, nulo o indefinido) y, si es así, retornará temprano sin ejecutar el resto del código. De esta manera, puede evitar pasar una cadena vacía o nula al constructor String() y evitar que se lance el mensaje de error.

    Tenga en cuenta que esta es solo una solución posible y puede haber otras razones por las cuales la propiedad content está vacía o nula. Consulte la documentación del objeto message en la API de Discord.js v11 para obtener una mejor comprensión de sus propiedades y métodos. Además, considere actualizar a una versión más reciente de Discord.js, ya que la v11 está desactualizada y ya no tiene soporte.

Comments are closed.