Discord Webhooks с C ++ - PullRequest
       64

Discord Webhooks с C ++

0 голосов
/ 30 апреля 2020

Итак, я взял на себя задачу делать webhooks в c ++ и хотел просто получить некоторую помощь с запросами на публикацию. Вот код, который у меня есть на данный момент, я хотел отправлять встраивания через почтовые запросы в C ++. Вот мой код вместе с ошибками и все, веб-крючок все еще активен, если вы хотите проверить себя. Я пытаюсь сохранить все целиком, используя библиотеки windows.

#include <winsock2.h>
#include <ws2tcpip.h>
#include <string>

#pragma warning(disable:4996) 
#pragma comment(lib, "ws2_32.lib")

using namespace std;

int Plug(string address, string port, SOCKET* csock) {
    WSADATA WSAData;
    WSAStartup(MAKEWORD(2, 0), &WSAData);

    PADDRINFOA result;
    ADDRINFOA hints;
    ZeroMemory(&hints, sizeof(ADDRINFO));
    hints.ai_family = AF_INET;
    hints.ai_socktype = SOCK_STREAM;
    hints.ai_protocol = IPPROTO_TCP;
    int res = getaddrinfo(address.c_str(), port.c_str(), &hints, &result);
    *csock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if (SOCKET_ERROR == connect(*csock, (SOCKADDR*)result->ai_addr, sizeof(SOCKADDR))) return WSAGetLastError();
    return 0;
}

void Unplug(SOCKET* csock) {
    closesocket(*csock);
    WSACleanup();
}


string PostRequest(string host, string query, string data) {
    string req = "POST " + query + " HTTP/1.1" + "\r\n";
    req += "Host: " + host + "\r\n";
    req += "Content-Type: application/x-www-form-urlencoded\r\n";
    req += "Content-Length: " + to_string(data.length()) + "\r\n";
    req += "Connection: Close";
    req += "\r\n\r\n" + data + "\r\n\r\n";
    SOCKET s;;
    Plug(host, "80", &s);
    Send(&s, req);
    while (GetAvailable(&s) == 0) Sleep(10);
    string result = Receive(&s);
    //if (result.find("\r\n\r\n") == string::npos && DEBUG) return result;
    //if (result.find("\r\n\r\n") == string::npos) return "PR_INVALID_RESPONSE";
    //result = result.substr(result.find("\r\n\r\n") + 4, string::npos);
    Unplug(&s);
    return result;
}
int main() {
    //https://discordapp.com/api/webhooks/705211476553629747/zwzqZMnTTgLtHBm3kc_DvvD71IW9FfE4ur-PQlkgeZhd56cT7UjSJCWI-V8wPiEUWV2w
    std::cout<<PostRequest("162.159.129.233","/api/webhooks/705249405141516360/s8ioXr6IZEeuPnMi1O37CmY3o5pUZcu6ho7aIJdieSAqgGyTXOZjkOZdMNe1uJre6dto","{'embeds': [{'description': '**ERROR**: `TESTSTRING`\n', 'color': 4508791}]}");
}

Однако, когда я делаю запросы на публикацию сообщений, я не могу отправить свой контент и вместо этого возвращает 400. Я попробовал еще несколько вещей но мне интересно, если это мой запрос?

HTTP/1.1 301 Moved Permanently
Cache-Control: max-age=3600
Cf-Ray: 58bd304dec1ff2c0-WAW
Cf-Request-Id: 026a1c84ad0000f2c054113200000001
Date: Thu, 30 Apr 2020 00:36:28 GMT
Expires: Thu, 30 Apr 2020 01:36:28 GMT
Location: MYWEBHOOKURL
Server: cloudflare
Set-Cookie: __cfruid=5adc23f36cce3f0a398b8f9e91429b4349ef9314-1588206988; path=/; domain=.discordapp.com; HttpOnly
Vary: Accept-Encoding
Content-Length: 0
Connection: close

И позвольте мне сказать, что я использую фактический IP-адрес разногласий вместо того, чтобы разрешать его, я в конечном итоге получаю это вместо

HTTP/1.1 403 Forbidden
Cache-Control: max-age=15
Cf-Ray: 58bd37782e6dffbc-WAW
Cf-Request-Id: 026a20ff1a0000ffbcc89df200000001
Content-Type: text/plain; charset=UTF-8
Date: Thu, 30 Apr 2020 00:41:21 GMT
Expires: Thu, 30 Apr 2020 00:41:36 GMT
Server: cloudflare
Set-Cookie: __cfduid=d4cb17401215362929759e2da8110f0e31588207281; expires=Sat, 30-May-20 00:41:21 GMT; path=/; domain=.162.159.129.233; HttpOnly; SameSite=Lax
Vary: Accept-Encoding
Content-Length: 16
Connection: close

error code: 1003

Если у вас есть какие-либо идеи не стесняйтесь опускать их внизу, я давно потерян.

...