首页 > 解决方案 > discord.js - fetchMessage 没有给出有效的输出

问题描述

尝试为我的 Discord 创建一个应用程序响应系统,该系统从同一服务器中的预设 Discord 消息中获取信息。目前它吐出一个错误,指出它无法发送空消息:“UnhandledPromiseRejectionWarning:DiscordAPIError:无法发送空消息”

(fetchMessage 必须保存到变量中以供以后编辑)

        if (message.content == '/results') {
            let ttpResultsChannel = client.channels.get("662034469708103690")
            var temp
            ttpResultsChannel.fetchMessage('662034597508546582').then(results => temp = results.content)
            message.channel.send(temp)
        }

这是它应该输出的文本:

179654608371712000{}PASSED{}TestText1{}
514127283636797450{}FAILED{}TextTest6{}

我是 JavaScript 世界的新手,可能我的错误很简单,但这是我自己找不到解决方案的时候之一。提前致谢。

标签: javascriptdiscorddiscord.js

解决方案


该错误表示您正在尝试发送空消息,这是有道理的,因为fetchMessage返回一个Promise. 您正确地使用.then()来获得结果,但是当 Promise 解决并且您已经获得结果并将其分配给 时tempmessage.channel.send()已经执行了。要修复它,您只需将发送内容放入.then()

if (message.content == '/results') {
    let ttpResultsChannel = client.channels.get("662034469708103690")
    var temp
    ttpResultsChannel.fetchMessage('662034597508546582')
        .then(results => {
            temp = results.content
            message.channel.send(temp)
        })
}

推荐阅读