猿问

如何使用来自不同文件的 EmbedMessage?

我在使用嵌入消息时遇到问题。我在 index.js 下面提供了我的代码,我在其中尝试使用在“globalspeakfunction.js”中创建的函数。


不要担心我发送的变量,它们在这里看起来很特别,但我只提供了相关代码以希望减少混淆。


我在 GlobalSpeakFunction.js 中构建我的 EmbedMessage,然后将其发送到“index.js”中提供的消息通道中。


但是我的控制台返回“无法发送空消息”,当我执行 EmbedMessage 的 console.log 时,它会完美地返回嵌入吗?


我尝试在 send() 函数中的嵌入消息后添加一个字符串“test”,然后它返回


[object Object]test

我不知道这里发生了什么。我是否无法在不同的文件中构建 EmbedMessage,然后将其发送回我的机器人?或者有什么我只是忽略了?


索引.js


const Discord = require('discord.js');

const client = new Discord.Client();

const speak = require('../GlobalSpeakFunction.js');


client.on('message', message => {

    if (message.content.toUpperCase().includes(`test`)){

        speak("778978295059972106", message, "test", "Default");

    }

}

GlobalSpeakFunction.js


const Discord = require("discord.js")


module.exports = function speak(charID, data, message, emotion){

    var EmbedMessage = new Discord.MessageEmbed()

        .setColor('#0099ff')

        .setTitle('title')

        .setURL('https://discord.js.org/')

        .setDescription(message)

        .setThumbnail('https://drive.google.com/file/d/17J90PzTLBR96wTwk_Wl3U06-or6ZjPW2/view')

        .setTimestamp();

    message.channel.send(EmbedMessage);           

}


沧海一幻觉
浏览 88回答 1
1回答

波斯汪

我不确定您在哪里遇到“无法发送空消息”错误,我无法在本地重现。但是,这里有几个问题:首先,您正在使用toUpperCase()on message.content,然后检查它是否包含(小写)“test”。因此,这个 if 语句永远不会执行。其次,函数中参数的顺序speak()是charID, data, message, emotion,但您将它们传递为"778978295059972106", message, "test", "Default"(注意调用函数时如何交换data和)。message第三,该setThumbnail()函数需要直接链接到图像(以文件扩展名结尾的图像,如 .png 或 .jpg)。您提供了一个 Google Drive 链接,该链接另外设置为私有,这使得除您之外的任何人都无法读取。我建议将其上传到图像主机并从那里获取直接链接。此外,[object Object]只是对象的字符串表示形式。JavaScript 尝试将您的 MessageEmbed(它是一个对象)转换为字符串(因为您正试图向其附加“test”)。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答