×
// ==UserScript==
// @name Show's the groups creator and user info.
// @namespace http://tampermonkey.net/
// @version 1.7
// @description Shows group creator and user info on VRChat
// @author Jake Krofne & VT
// @match https://vrchat.com/home/group/*
// @match https://vrchat.com/home/user/*
// @grant none
// ==/UserScript==
(function () {
'use strict';
// Fetch data from the API and handle response
function fetchData(url, callback) {
fetch(url)
.then(response => {
if (!response.ok) throw new Error('Network response was not ok');
return response.json();
})
.then(callback)
.catch(() => {});
}
// Function to inject the owner ID link
function injectOwnerId(groupId) {
fetchData(`https://vrchat.com/api/1/groups/${groupId}?includeRoles=true&purpose=group`, (data) => {
const ownerId = data.ownerId;
if (ownerId) {
const ownerLink = document.createElement('a');
ownerLink.href = `https://vrchat.com/home/user/${ownerId}`;
ownerLink.textContent = `Owner: ${ownerId}`;
ownerLink.style.cssText = 'color: white; margin-left: 10px;';
const targetDiv = document.querySelector('.css-1no6rdg.e1kortvj4');
if (targetDiv && !document.querySelector('.ownerId-link')) {
ownerLink.classList.add('ownerId-link');
targetDiv.appendChild(ownerLink);
}
}
});
}
// Function to inject the join date into the user profile
function injectJoinDate(userId) {
fetchData(`https://vrchat.com/api/1/users/${userId}`, (data) => {
const joinDate = data.date_joined;
if (joinDate && !document.querySelector('.join-date')) {
const joinDateElement = document.createElement('p');
joinDateElement.textContent = `Joined on: ${joinDate}`;
joinDateElement.className = 'join-date';
joinDateElement.style.cssText = 'color: white; margin: 5px 0 0 2px; font-size: 16px;';
const targetDiv = document.querySelector('.tw-flex.tw-flex-col.md\\:tw-flex-row.tw-py-9');
if (targetDiv) targetDiv.appendChild(joinDateElement);
}
});
}
// MutationObserver to detect changes in the DOM
const observer = new MutationObserver(() => {
const currentPath = window.location.pathname;
if (currentPath.includes('/group/')) {
injectOwnerId(currentPath.split('/').pop());
} else if (currentPath.includes('/user/')) {
injectJoinDate(currentPath.split('/').pop());
}
});
// Start observing the document
observer.observe(document.body, { childList: true, subtree: true });
})();
// If nothing shows refresh the page
×
import tkinter as tk
from tkinter import messagebox
import requests
def get_user_id(username):
url = f"https://users.roblox.com/v1/usernames/users"
payload = {"usernames": [username], "excludeBannedUsers": False}
response = requests.post(url, json=payload)
if response.status_code == 200:
data = response.json()
if data["data"]:
return data["data"][0]["id"]
else:
return None
else:
return None
def check_friendship(user1, user2):
user1_id = get_user_id(user1)
user2_id = get_user_id(user2)
if not user1_id or not user2_id:
return False
url = f"https://friends.roblox.com/v1/users/{user1_id}/friends"
response = requests.get(url)
if response.status_code == 200:
friends = response.json()["data"]
for friend in friends:
if friend["id"] == user2_id:
return True
return False
def check_friend():
user1 = entry_user1.get()
user2 = entry_user2.get()
if check_friendship(user1, user2):
messagebox.showinfo("Result", f"{user1} has {user2} added as a friend, They're Teaming.")
else:
messagebox.showinfo("Result", f"{user1} does not have {user2} added as a friend.")
root = tk.Tk()
root.title("MM2 Teamer Check")
root.geometry("400x250")
root.config(bg="#D9EAF7")
title_label = tk.Label(root, text="MM2 Teamer Check", font=("Helvetica", 18, "bold"), bg="#D9EAF7", fg="#333")
title_label.pack(pady=10)
frame_user1 = tk.Frame(root, bg="#D9EAF7")
frame_user1.pack(pady=10)
tk.Label(frame_user1, text="Suspected Teamer:", bg="#D9EAF7", fg="#333", font=("Arial", 12)).pack(side=tk.LEFT)
entry_user1 = tk.Entry(frame_user1, width=20, font=("Arial", 12))
entry_user1.pack(side=tk.LEFT, padx=10)
frame_user2 = tk.Frame(root, bg="#D9EAF7")
frame_user2.pack(pady=10)
tk.Label(frame_user2, text="Possible Teammate:", bg="#D9EAF7", fg="#333", font=("Arial", 12)).pack(side=tk.LEFT)
entry_user2 = tk.Entry(frame_user2, width=20, font=("Arial", 12))
entry_user2.pack(side=tk.LEFT, padx=10)
check_button = tk.Button(root, text="Check", command=check_friend, font=("Arial", 12, "bold"), bg="#4CAF50", fg="white", width=15)
check_button.pack(pady=20)
root.mainloop()
×
// ==UserScript==
// @name Redeem on Epic for Twitter
// @namespace http://tampermonkey.net/
// @version 1.0
// @description select your context and right click to see the redeem button. Saves time!
// @author Jake Krofne
// @match https://x.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
// Function to create context menu item
function createContextMenu(event) {
// Check if some text is selected
const selectedText = window.getSelection().toString().trim();
if (selectedText) {
// Remove existing custom context menu if any
const existingMenu = document.getElementById('redeem-on-epic');
if (existingMenu) existingMenu.remove();
// Create new menu item
const menuItem = document.createElement('div');
menuItem.id = 'redeem-on-epic';
menuItem.style.position = 'fixed';
menuItem.style.top = `${event.clientY}px`;
menuItem.style.left = `${event.clientX}px`;
menuItem.style.backgroundColor = '#f1f1f1';
menuItem.style.border = '1px solid #ccc';
menuItem.style.padding = '8px';
menuItem.style.zIndex = '10000';
menuItem.style.cursor = 'pointer';
menuItem.innerText = 'Redeem on Epic';
// Add click listener to menu item
menuItem.addEventListener('click', function() {
const epicRedeemUrl = 'https://www.epicgames.com/store/en-US/redeem';
const code = encodeURIComponent(selectedText);
window.open(`${epicRedeemUrl}?code=${code}`, '_blank');
menuItem.remove(); // Remove the menu item after click
});
// Append the menu item to the body
document.body.appendChild(menuItem);
// Remove the menu when clicking anywhere else
document.addEventListener('click', function() {
if (menuItem) menuItem.remove();
}, { once: true });
}
}
// Add event listener for right-click
document.addEventListener('contextmenu', function(event) {
// Prevent the default context menu from showing
event.preventDefault();
createContextMenu(event);
});
})();