javascript - 将 Puppeteer 与 Discord 机器人一起使用
问题描述
我和我的朋友一直在开发一个使用 Puppeteer 的 Discord 机器人,Puppeteer 是一个允许无头浏览器自动化的 Node 库。现在,程序登录我们学校的网站,可以显示通过 Discord bot 登录的用户的成绩。最终目标是创建一个机器人,自动向我们班级的服务器发送有关教师发布的新作业的 Discord 通知。这是到目前为止登录过程的一个小示例:
await page.type('#username', username);
await page.click("#recaptcha");
await page.waitForSelector(".googleplus-login", {visible: true});
const newPagePromise = new Promise(x => browser.once('targetcreated', target => x(target.page())));
if (userAgent.includes("Headless")) {
// Headless Browsing
console.log("Headless Mode");
await page.click(".googleplus-login");
const newPage = await newPagePromise;
await newPage.waitForSelector("#Email", {visible: true});
await newPage.type("#Email", username);
await newPage.click("#next");
到目前为止,我们最好的想法是让某些人自愿参加某些课程以在后台运行 Puppeteer,以便制作一个“网络”,由每个人参加的所有各种课程组成。这个“网络”将允许我的计算机每 15 分钟从所有运行 Puppeteer 的计算机中获取数据,并向整个服务器发送通知,告知哪些课程发布了新作业。这个解决方案感觉很笨重,并不适合所有人。
我们的想法还有其他选择吗?最好只在一台计算机上运行?我不介意它是否使用 Puppeteer 以外的东西,只要它使用 Node。
谢谢!
PS:我们学校的网站确实有API,但只对学校IT管理员开放。因此,我们必须通过 Puppeteer 的登录过程,这需要一点时间。
解决方案
推荐阅读
- c++ - C++14 中 lambda 的 std::result_of 限制
- java - Jpa Specification IN Clause onjoined property 未按预期工作
- angular - 在 Angular 中捆绑服务
- postgresql - oid 和 bytea 正在表中创建系统
- rust - 解决 rust 中需要相互引用的特征之间的循环依赖关系
- java - JVM关闭顺序和事务管理?
- database-design - 使用 Data Vault 建模 INFORMATION_SCHEMA
- r - 在 r 中对二元概率模型进行后测?
- java - 如何从 Java 中的 API 获取自定义数据
- odata - 使用 odata-core 将 sap:quickinfo 映射到生成的 Java 实体中