如何使自助机器人加入服务器?

时间:2019-08-16 13:23:42

标签: javascript discord discord.js

我希望我的自助机器人通过使用/ summon [invite]之类的命令通过邀请加入服务器。

我尝试使用接受邀请功能,但是似乎没有用。

client.accept_invite()

它不返回任何错误或任何东西。

6 个答案:

答案 0 :(得分:4)

在Discord应用程序的“网络”选项卡中快速浏览,显示了尝试加入服务器时发出的请求。您可以手动使用此请求尝试加入服务器。

您可以通过向https://discordapp.com/api/v6/invites/dank?inputValue=SERVER_JOIN_STR&with_counts=true发送GET请求,来使python机器人加入服务器。

还必须将授权标头设置为令牌。一个例子如下:

import requests
requests.post("https://discordapp.com/api/v6/invites/SERVER_JOIN_STR",headers={'authorization':'TOKEN'})

编辑:我很笨,它是POST请求而不是GET

记住要遵守道德规范,并希望能有所帮助。

答案 1 :(得分:1)

您不能,没有方法可以在Client对象下接受任何邀请。

我想这是设计使然,原因是答案here之一的注释中指出了这一点。

  

...因为这将使漫游器“随机”加入行会。只要漫游器可以访问邀请链接,它就可以接受并进入任何公会。即使具有基本的阅读消息权限,这也意味着该行会中的所有对话现在都可以在不知不觉中被记录下来...

TLDR;防止恶意使用机器人。

示例:
一个机器人创建者制造了10个机器人,并使用accept_invite方法邀请它们进入受害者服务器。然后将它们全部编码,以在目标服务器的每次聊天中开始发送垃圾邮件。

答案 2 :(得分:1)

您必须提出一个XMLHttp请求,标题为authorization,与咖啡不符。看起来像这样:

const x = new XMLHttpRequest();
x.open('POST', 'https://discordapp.com/api/v6/invites/invitecode');
x.setRequestHeader('Authorization', 'user-token');
x.send();

但是,由于CORS不能使用cross site scripting(XSS),因此无法正常工作。 基本上,您必须从URL https://discordapp.com执行此操作。 npm模块Puppeteer擅长于此。

现在,在使用Puppeteer时,您的代码应如下所示:

const puppeteer = require('puppeteer');

const invite = async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.goto('https://discordapp.com/');
    await page.evaluate(async () => {
        const x = new XMLHttpRequest();
        x.open('POST', 'https://discordapp.com/api/v6/invites/invitecode');
        x.setRequestHeader('Authorization', 'user-token');
        x.send();
    });
   //Maybe good idea to close browser after executing
};
invite();

答案 3 :(得分:0)

client.acceptInvite(invite_code)

答案 4 :(得分:0)

关于 XMLHttp 的事情,这里有一个我用来在外部(从任何站点)调用它的函数,以及你为自动加入服务器所做的事情。

function discordAPI(authToken,apiEndpoint,JSONparams,type="GET") {
var xhr=new XMLHttpRequest()
xhr.open(type,"https://discord.com/api/v8"+apiEndpoint,true)
xhr.setRequestHeader('Content-Type','application/json')
xhr.setRequestHeader('Authorization',authToken)
xhr.send(JSON.stringify(JSONparams))}

使用它自动加入: discordAPI("your token here","/invites/your invite code here","","POST")

答案 5 :(得分:-2)

这里

const axios = require('axios').default
        axios({
            method: 'POST',
            url: `https://discord.com/api/invite/${invite}`,//invite here 
            headers:  
            {
            'Authorization': token //user token here
            }
        })