【问题标题】:How to make discord bot send scraped message?如何让不和谐机器人发送抓取的消息?
【发布时间】:2021-04-25 14:54:23
【问题描述】:

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

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();

【问题讨论】:

  • console.log("Data",data); 显示每次调用的数据?
  • @mplungjan 很抱歉,但是什么?
  • 你有 console.log(data);你能把它改成 console.log("Data",data);如果控制台中有Data: 行,则说明错误是正确的
  • @mplungjan 是的,我有一个 Data: 行,我该怎么办?
  • 那我不知道

标签: javascript discord puppeteer


【解决方案1】:

问题是您不应该直接发送字典。虽然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 的参数是可接受的,否则可能会引发错误。

【讨论】:

  • 非常感谢!
猜你喜欢
  • 2020-12-26
  • 1970-01-01
  • 2022-11-02
  • 2020-09-13
  • 1970-01-01
  • 2021-08-07
  • 2021-01-19
  • 1970-01-01
  • 2021-04-30
相关资源
最近更新 更多