javascript - 如何使用来自不同文件的 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);
}
解决方案
我不确定您在哪里遇到“无法发送空消息”错误,我无法在本地重现它。但是,这里有几个问题:
首先,您正在使用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(它是一个对象)转换为字符串(因为您试图将“测试”附加到它)。
推荐阅读
- python - 具有柱式变压器和管道的 ML 模型的参数调整
- html - 制作按钮使用动画来取消悬停鼠标
- php - PHP session_start() 和 session_abort() 的行为看起来有些出乎意料
- html - 为什么包裹在锚标签中时图像尺寸会缩小?
- javascript - 从 javascript 录制和上传音频
- flutter - 如何在颤动中用平移、倾斜和缩放值填充 Matrix4?
- javascript - 搜索嵌套的对象数组并返回所有匹配项的完整路径
- xcode - 项目构建成功但预览时出现很多错误
- c# - 当前上下文中不存在名称“修复”
- node.js - cors错误:没有'Access-Control-Allow-Origin'标头apollo-server-express