// ==UserScript==
// @name ChessNitro Web
// @namespace http://tampermonkey.net/
// @version 1.0.1
// @description Shows Discord Nitro Code from chess.com username
// @author kpxyy
// @match https://www.chess.com/*
// @grant none
// @require https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js
// @license the-unlicense
// @downloadURL https://update.greasyfork.icu/scripts/507455/ChessNitro%20Web.user.js
// @updateURL https://update.greasyfork.icu/scripts/507455/ChessNitro%20Web.meta.js
// ==/UserScript==
(function() {
'use strict';
var $div = $('
' +
'
ChessNitro Web\n
' +
'
' + '
' +
'').appendTo('body');
var $usernameInput = $('').appendTo($div);
var $searchButton = $('').appendTo($div);
$div.append('
');
$div.append('
');
var $opponentButton = $('').appendTo($div);
var $profileButton = $('').appendTo($div);
$opponentButton.on('click', function() {
var username = $('.user-username-component.user-username-white.user-username-link.user-tagline-username').first().text();
$usernameInput.val(username);
});
$profileButton.on('click', function() {
if (!window.location.pathname.includes('/member/')) return;
var username = window.location.pathname.replace('/member/', '')
$usernameInput.val(username);
});
var dragging = false;
var offset = {x: 0, y: 0};
$div.on('mousedown', function(e) {
dragging = true;
offset = {
x: $div.offset().left - e.clientX,
y: $div.offset().top - e.clientY
};
});
$(document).on('mousemove', function(e) {
if (dragging) {
$div.offset({
left: e.clientX + offset.x,
top: e.clientY + offset.y
});
}
});
$(document).on('mouseup', function(e) {
dragging = false;
});
$searchButton.on('click', function() {
var username = $usernameInput.val();
if (username) {
fetch(`https://www.chess.com/callback/user/popup/${username}`, {
"headers": {
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:130.0) Gecko/20100101 Firefox/130.0",
"Accept": "*/*",
"Accept-Language": "en-GB"
},
"referrer": `https://www.chess.com/member/${username}`,
"method": "GET"
}).then(response => response.json()).then(data => {
let body = JSON.stringify({
userUuid: data.uuid,
campaignId: "4daf403e-66eb-11ef-96ab-ad0a069940ce"
});
fetch("https://www.chess.com/rpc/chesscom.partnership_offer_codes.v1.PartnershipOfferCodesService/RetrieveOfferCode", {
body: body,
method: "POST",
headers: {
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:130.0) Gecko/20100101 Firefox/130.0",
"Accept": "*/*",
"Accept-Language": "en-GB",
"Content-Type": "application/json"
}
}).then(response => {
if (response.status != 200) {
alert(`Unable to get nitro code. Status: ${response.status}`);
return;
}
return response.json();
}).then(nitroCode => {
if (nitroCode.codeValue) {
alert(`https://discord.com/billing/promotions/${nitroCode.codeValue}`);
}
});
});
}
});
})();