我正在做一个学习木偶师和不和机器人的小项目,我认为将两者结合起来,制作一个奇怪的机器人会很有趣,它本质上是一个机器人,但却是一个普通用户。我已经设置了命令处理程序等,并创建了一个"邀请"命令,该命令接受人员提供的一个参数(服务器邀请的代码(,并使用它来自动邀请自己。
例如输入不一致:<prefix>invite 78uHjkaf
这个半成品。不是。它第一次会起作用,但再也不会起作用了,我必须重新开始。我一直试图添加一个page.close();
,希望它能解决问题,但它根本不起作用。我如何才能使这项工作持续且可重复使用?-请注意,我的命令处理程序运行良好。整个问题位于以下代码中。(我希望(
半可靠。
if (command === "invite") {
const invite = async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://discordapp.com/');
let [link] = args;
await page.evaluate(async ({link}) => {
const x = new XMLHttpRequest();
x.open(`POST`, `https://discordapp.com/api/v6/invites/` + `${link}`);
x.setRequestHeader('Authorization', 'my token');
x.send();
},{link});
};
invite();
}
根本不起作用。
if (command === "invite") {
const invite = async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://discordapp.com/');
let [link] = args;
await page.evaluate(async ({link}) => {
const x = new XMLHttpRequest();
x.open(`POST`, `https://discordapp.com/api/v6/invites/` + `${link}`);
x.setRequestHeader('Authorization', 'my token');
x.send();
},{link});
await page.close();
};
invite();
}
我真的被难住了。
更新。由于某种原因,发生了变化
x.open(`POST`, `https://discordapp.com/api/v6/invites/` + `${link}`);
至
x.open(`POST`, `https://discordapp.com/api/v6/invites/${link}`);
解决了不可靠的问题。添加一个关闭页面仍然会杀死它。我觉得应该加上这个吗?
为什么要使用Puppeter?使用Discord私有API更容易。
const fetch = require('node-fetch'); // npm install node-fetch
if (command === "invite") {
const [code] = args; // should only be the code, not full URL (8KqbkST, not https://discord.gg/8KqbkST)
fetch(`https://discord.com/api/v8/invites/${code}`, {
method: 'POST',
headers: { 'authorization': 'YOUR USER TOKEN' },
body: JSON.stringify({
code,
new_member: true
})
});
}
顺便说一句,这是Discord T.O.S完全禁止的,你不应该将其用于大规模使用,例如同时加入许多服务器(因为这是禁止的,而且这种行为在Discord上非常痛苦(。
100%使用此选项const fetch=require('node-fetch'(;//npm安装节点获取
如果(命令=="邀请"({const[code]=args;//应该只是代码,而不是完整的URL(8KqbkST,而不是https://discord.gg/8KqbkST)获取(https://discord.com/api/v8/invites/${code}
{方法:"POST",headers:{"authorization":"YOUR USER TOKEN"},正文:JSON.stringify({密码new_member:true})});}