您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Userscript that allows you to send your Underwater Map prize results to Discord
// ==UserScript== // @name [GC] - Underwater Map Prizes (Discord Webhook) // @namespace https://gf.qytechs.cn/en/users/1225524-kaitlin // @match https://www.grundos.cafe/games/treasurehunt/redeemmap* // @match https://www.grundos.cafe/games/treasurehunt/?type=underwater // @license MIT // @grant GM_getValue // @grant GM_setValue // @grant GM_registerMenuCommand // @version 1.1 // @author Cupkait // @require https://update.gf.qytechs.cn/scripts/485703/1319674/%5BGC%5D%20-%20Map%20Prizes%20Helper.js // @description Userscript that allows you to send your Underwater Map prize results to Discord // @description via a webhook. Multiple webhooks are supported. If you are in a Discord server // @description and want to use this but aren't sure how, feel free to reach out! NM: Cupkait, Discord DM: kaitlin. // ==/UserScript== // It is not recommended to change the WebHook values below. Instead, click the // menu item that shows up below this script to have it added in the right place! const webHooks = GM_getValue("webHooks", []); GM_registerMenuCommand("Add Webhook", () => { var newWebhook = prompt("Paste one webhook URL to add to your script.\n\nIf you want to add multiple, do the one at a time."); if (newWebhook) { webHooks.push(newWebhook); GM_setValue("webHooks", webHooks); } }); const userNameMatch = /user=(.*?)"/g.exec(document.body.innerHTML); const userName = userNameMatch ? userNameMatch[1] : "A Lucky Neopian"; const itemInfo = getItemsArray(); const prizeImages = $("div.center img"); const imageInfo = prizeImages .map(function () { const fileName = new URL($(this).attr("src")).pathname.split("/").pop(); const correspondingItem = itemInfo.find( (item) => item.fileName.toLowerCase() === fileName.toLowerCase() ); return correspondingItem ? { fileName, fullImgUrl: correspondingItem.fullImgUrl, itemName: correspondingItem.itemName, itemTag: correspondingItem.itemTag, } : null; }) .get(); const filteredImageInfo = imageInfo.filter((item) => item !== null); const aquaticFoodCount = filteredImageInfo.filter( (item) => item.itemTag && item.itemTag.toLowerCase() === "aquaticfood" ).length; const relicPrize = filteredImageInfo.find( (item) => item.itemTag && item.itemTag.toLowerCase() === "relic" ); const relicName = relicPrize ? relicPrize.itemName : null; const specialItem = filteredImageInfo.find( (item) => item.itemTag && item.itemTag.toLowerCase() === "special" ); const brushItem = filteredImageInfo.find( (item) => item.itemTag && item.itemTag.toLowerCase() === "paintbrush" ); const specialItemName = specialItem ? specialItem.itemName : null; const specialItemImage = specialItem ? specialItem.fullImgUrl : null; const brushItemName = brushItem ? brushItem.itemName : null; const brushItemImage = brushItem ? brushItem.fullImgUrl : null; const pointsNumber = parseInt( $("div.center p").eq(2).text().replace(/\D/g, ""), 10 ); const colorMapping = { "Flask of Rainbow Fountain Water": "9295088", "Mysterious Swirly Potion": "16671195", "Irritable Genie-in-a-Bottle": "40341", }; const barColor = colorMapping[specialItemName] || "#FFFFFF"; // Default to white if not found console.log(barColor); const brushfalseParams = { username: "Underwater Map Prize Tracker", embeds: [ { title: `${userName} just gambled on an Underwater Map!`, description: `They received ${aquaticFoodCount} random Aquatic foods, a ${relicName}, and a ${specialItemName}!`, color: barColor, footer: { text: `... and they're ${pointsNumber.toLocaleString()} neopoints richer!`, }, thumbnail: { url: specialItemImage, }, }, ], }; const brushtrueParams = { username: "Underwater Map Prize Tracker", embeds: [ { title: `${userName} just gambled on an Underwater Map!`, description: `They received a ${brushItemName}, a ${specialItemName}, a ${relicName}, and ${aquaticFoodCount} random Aquatic Foods!`, color: barColor, footer: { text: `... and they're ${pointsNumber.toLocaleString()} neopoints richer!`, }, thumbnail: { url: brushItemImage, }, }, ], }; webHooks.forEach((webHook) => { if (aquaticFoodCount === 6) { sendMessage(brushtrueParams, webHook); } else if (aquaticFoodCount === 7) { sendMessage(brushfalseParams, webHook); } else { console.log("Map home page, not turned in."); } }); function sendMessage(params, webhook) { console.log("Webhook triggered."); const request = new XMLHttpRequest(); request.open("POST", webhook); request.setRequestHeader("Content-type", "application/json"); request.send(JSON.stringify(params)); } function addWebhook() { var newWebhook = prompt( "Paste one webhook URL to add to your script.\n\nIf you want to add multiple, do one at a time." ); if (newWebhook) { var webHooks = GM_getValue("webHooks", []); webHooks.push(newWebhook); GM_setValue("webHooks", webHooks); } } if ( window.location.href === "https://www.grundos.cafe/games/treasurehunt/?type=underwater" ) { const buttonArea = document.querySelector(".text-center"); const buttonWrapper = document.createElement("div"); // Create a new div element var addButton = document.createElement("button"); addButton.style.height = "35px" addButton.style.backgroundColor = "Navy" addButton.style.color = "White" addButton.textContent = "Add a webhook URL for Underwater Map Logging"; addButton.addEventListener("click", addWebhook); buttonWrapper.appendChild(addButton); // Append the button to the div buttonArea.appendChild(buttonWrapper); // Append the div to the buttonArea }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址