You've already forked NitroSniper
mirror of
https://github.com/neoarz/NitroSniper.git
synced 2025-12-25 03:00:13 +01:00
68 lines
1.8 KiB
TypeScript
68 lines
1.8 KiB
TypeScript
/*
|
|
Made with ❤️ by neoarz
|
|
I am not responsible for any damage caused by this plugin; use at your own risk
|
|
Vencord does not endorse/support this plugin (Works with Equicord as well)
|
|
dm @neoarz if u need help or have any questions
|
|
https://github.com/neoarz/NitroSniper
|
|
*/
|
|
|
|
import { Devs } from "@utils/constants";
|
|
import { Logger } from "@utils/Logger";
|
|
import definePlugin from "@utils/types";
|
|
import { findByPropsLazy } from "@webpack";
|
|
|
|
const logger = new Logger("NitroSniper");
|
|
const GiftActions = findByPropsLazy("redeemGiftCode");
|
|
|
|
let startTime = 0;
|
|
let claiming = false;
|
|
const codeQueue: string[] = [];
|
|
|
|
function processQueue() {
|
|
if (claiming || !codeQueue.length) return;
|
|
|
|
claiming = true;
|
|
const code = codeQueue.shift()!;
|
|
|
|
GiftActions.redeemGiftCode({
|
|
code,
|
|
onRedeemed: () => {
|
|
logger.log(`Successfully redeemed code: ${code}`);
|
|
claiming = false;
|
|
processQueue();
|
|
},
|
|
onError: (err: Error) => {
|
|
logger.error(`Failed to redeem code: ${code}`, err);
|
|
claiming = false;
|
|
processQueue();
|
|
}
|
|
});
|
|
}
|
|
|
|
export default definePlugin({
|
|
name: "NitroSniper",
|
|
description: "Automatically redeems Nitro gift links sent in chat",
|
|
authors: [Devs.neoarz],
|
|
|
|
start() {
|
|
startTime = Date.now();
|
|
codeQueue.length = 0;
|
|
claiming = false;
|
|
},
|
|
|
|
flux: {
|
|
MESSAGE_CREATE({ message }) {
|
|
if (!message.content) return;
|
|
|
|
const match = message.content.match(/(?:discord\.gift\/|discord\.com\/gifts?\/)([a-zA-Z0-9]{16,24})/);
|
|
if (!match) return;
|
|
|
|
if (new Date(message.timestamp).getTime() < startTime) return;
|
|
|
|
codeQueue.push(match[1]);
|
|
processQueue();
|
|
}
|
|
}
|
|
});
|
|
|