如何让discord bot发送抓取的消息?

时间:2021-01-21 07:52:33

标签: javascript discord puppeteer

我想制作一个发送抓取消息的不和谐机器人。 我希望它发送消息,但它给了我一个错误:

<块引用>

throw new DiscordAPIError(request.path, data, request.method, res.status); DiscordAPIError:无法发送空消息

我尝试使用 message.channel.send();但它似乎不起作用。 代码:

let data = await page.evaluate(() => {
            let Name = document.querySelector('div[id="title"]').innerText;
            let Description = document.querySelector('div[id="content"]').innerText;
            return {
                Name,
                Description
            }
        });
        console.log(data);
        message.channel.send(data);
        debugger;
        await browser.close();

1 个答案:

答案 0 :(得分:0)

问题是你不应该直接发送字典。虽然 message.channel.send 只接受 StringResolvableAPIMessage,但 data 作为字典两者都不是。有关详细信息,请参阅 documentation

相反,您可以先将 data 转换为字符串。以下是其中一种解决方案。

// Convert using JSON.stringify
message.channel.send(JSON.stringify(data));

完整代码示例(我在 https://example.com 上尝试过,因此有不同的查询):

let data = await page.evaluate(() => {
    let Name = document.querySelector('h1').innerText;
    let Description = document.querySelector('p').innerText;
    return {
        Name,
        Description
    }
});
console.log(data);
message.channel.send(JSON.stringify(data));

机器人发送的消息,没有抛出错误:

{"Name":"Example Domain","Description":"This domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission."}

如果您希望得到不同的消息,只需确保您传递给 message.channel.send 的参数是可接受的,否则可能会引发错误。