【问题标题】:discord.js - fetchMessage doesn't give a valid outputdiscord.js - fetchMessage 没有给出有效的输出
【发布时间】:2020-01-02 22:16:28
【问题描述】:

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

(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 世界的新手,可能我的错误很简单,但这是我自己找不到解决方案的时候之一。提前致谢。

【问题讨论】:

    标签: javascript discord discord.js


    【解决方案1】:

    错误表明您正在尝试发送空消息,这是有道理的,因为fetchMessage 返回Promise。您正确地使用.then() 来获得结果,但是当Promise 解决并且您已经获得结果并将其分配给temp 时,message.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)
            })
    }
    

    【讨论】:

    • 在某些情况下,这实际上并不能解决错误。例如,如果消息包含丰富的嵌入或附件并且没有实际内容,则 API 将返回相同的错误。
    猜你喜欢
    • 2020-11-07
    • 2013-02-21
    • 2011-05-19
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    • 2019-09-07
    • 1970-01-01
    相关资源
    最近更新 更多