webhok
Version:
An under-maintenance webhook client for discord to assist you into sending requests to webhooks.
78 lines (77 loc) • 3.45 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.webhookClient = void 0;
const axios_1 = __importDefault(require("axios"));
const helper_1 = require("./helper");
var webhookClient;
(function (webhookClient) {
class WebhookController {
options;
constructor(options) {
this.options = options;
}
async executeWebhook(url, data) {
return new Promise(async (resolve, reject) => {
await axios_1.default.post(url, data, {
headers: {
"Content-Type": "application/json",
"User-Agent": "EasyWebhook_V1"
},
responseType: "json"
}).then((response) => {
if (response.status === 204) {
resolve({
response: {
data: {
message: "Successfully sent",
payloadType: data.embeds == undefined || null ? "content" : "Embed",
input: JSON.stringify(data)
}
} /* Soontm */
});
}
}).catch((errorResponse) => {
const errorData = errorResponse.response?.data;
/* Just to be safe */
if (errorData.retry_after && errorResponse.response?.headers?.["x-ratelimit-reset-after"] && errorResponse.status == 429) {
/* We know the individual is ratelimited 50% */
reject({
error: {
data: {
message: errorData.message,
ratelimitType: !errorData.global ? "Local" : "Global",
duration: helper_1.Helper.formatTime(errorResponse.response?.headers?.["x-ratelimit-reset-after"])
}
}
});
/* We know the individual is ratelimited 100% */
}
else if (errorData.code !== undefined && errorData.code === 0 && errorData.message.includes("blocked")) {
reject({
error: {
data: {
message: errorData.message,
ratelimitType: "Global + Aggressive (IP Ban mode)",
duration: "Unknown"
}
}
});
}
else {
reject({
error: {
data: {
message: errorData.message,
}
}
});
}
});
});
}
}
webhookClient.WebhookController = WebhookController;
})(webhookClient || (exports.webhookClient = webhookClient = {}));