// be sure to include desired char img as "img.png" in same dir as this script
// npm install @supabase/supabase-js axios lorem-ipsum
// node script.js
const supabase = require("@supabase/supabase-js");
const axios = require("axios");
const fs = require("fs");
const lorem = require("lorem-ipsum");
const loreminstance = new lorem.LoremIpsum({
sentencesPerParagraph: {
max: 8,
min: 4,
},
wordsPerSentence: {
max: 16,
min: 4,
},
});
const YOUR_HANDLE = "hackerknownas4chin";
const spam = async () => {
const client = supabase.createClient(
"https://cvochnalpmpanziphini.supabase.co",
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImN2b2NobmFscG1wYW56aXBoaW5pIiwicm9sZSI6ImFub24iLCJpYXQiOjE2Nzc0NjU0NzgsImV4cCI6MTk5MzA0MTQ3OH0.xK0agdVii9VZCdNplqJEtHwD2-wb53Z9WJDeRAA6V0Q",
{
auth: { persistSession: false },
}
);
// create account
const password = Math.random().toString(36).substring(2, 14);
const result = await client.auth.signUp({
email: `${Math.random().toString(36).substring(2, 14)}@gmail.com`,
password,
});
if (result.error) {
console.log(result.error);
throw new Error("axios error creating account");
}
const { user, session, error } = result.data;
if (error) {
console.log(error);
throw new Error("api error creating account");
}
console.log("username and password", user.email, password);
await client.auth.setSession({
access_token: session.access_token,
refresh_token: session.refresh_token,
});
// set handle
const axiosopts = { headers: { Authorization: `Bearer ${session.access_token}` } };
const handledata = {
about_me: "",
avatar: "",
name: `${YOUR_HANDLE}${Math.random().toString(36).substring(2, 6)}`,
user_name: `${YOUR_HANDLE}${Math.random().toString(36).substring(2, 6)}`,
};
await axios.patch("https://api.venusai.chat/profiles/mine", handledata, { ...axiosopts });
// stage card img
const img = fs.readFileSync("./img.png");
let avatar = "";
const uploadedavatar = await client.storage
.from("bot-avatars")
.upload(`${Math.random().toString(36).substring(2, 14)}.png`, img, { cacheControl: "180", upsert: true });
if (uploadedavatar?.data?.path) {
avatar = uploadedavatar.data.path;
} else {
console.log("Error uploading avatar");
console.log(uploadedavatar.error);
throw new Error("Error uploading avatar " + uploadedavatar.error);
}
console.log("avatar path", avatar);
// create card
const cardbody = getCard(avatar);
const card = await axios.post("https://api.venusai.chat/characters", cardbody, { ...axiosopts });
console.log("card", card.data);
};
(async () => {
while (true) {
const accounts = Array.from({ length: 10 }, () => spam());
try {
const results = await Promise.allSettled(accounts);
results.forEach((result) => {
if (result.status === "rejected") {
console.log(result.reason);
}
});
} catch (e) {
console.log(e);
}
await new Promise((resolve) => setTimeout(resolve, 5000));
}
})();
function getCard(avatarUrl) {
const chara = {
name: loreminstance.generateWords(4),
description: loreminstance.generateWords(10),
tag_ids: [3, 7, 13],
is_public: true,
is_nsfw: false,
personality: loreminstance.generateParagraphs(8),
first_message: loreminstance.generateParagraphs(3),
scenario: "",
example_dialogs: "",
avatar: avatarUrl,
};
chara.name += `${Math.random().toString(36).substring(2, 14)}`;
chara.description += `${Math.random().toString(36).substring(2, 14)}`;
chara.personality += `${Math.random().toString(36).substring(2, 14)}`;
chara.first_message += `${Math.random().toString(36).substring(2, 14)}`;
chara.scenario += `${Math.random().toString(36).substring(2, 14)}`;
return chara;
}