首页 > 解决方案 > 如何使用来自不同文件的 EmbedMessage?

问题描述

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

不用担心我发送的变量在此看起来额外,但我只提供了相关代码以希望减少混淆。

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

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

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

[object Object]test

我不知道这里发生了什么。我不能在不同的文件中建立一个 EmbedMessage 然后将它发送回我的机器人吗?还是我忽略了什么?

index.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);           
}

标签: javascriptdiscord.js

解决方案


我不确定您在哪里遇到“无法发送空消息”错误,我无法在本地重现它。但是,这里有几个问题:

首先,您正在使用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(它是一个对象)转换为字符串(因为您试图将“测试”附加到它)。


推荐阅读