some changes to CC + modified chance of word scramble

this is not finished yet, but I'm committing it because fuck you
This commit is contained in:
Darien Rousseau 2024-03-11 09:39:19 -06:00 committed by GitHub
parent b0aef8b237
commit 1d05f0c2e1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -24,6 +24,23 @@ const db = new sqlite3.Database("./database.db");
// Create table if it doesn't exist // Create table if it doesn't exist
db.run("CREATE TABLE IF NOT EXISTS points (id TEXT, points INTEGER)"); db.run("CREATE TABLE IF NOT EXISTS points (id TEXT, points INTEGER)");
db.run("CREATE TABLE IF NOT EXISTS cooldowns (id TEXT, type TEXT, cooldown TEXT)"); db.run("CREATE TABLE IF NOT EXISTS cooldowns (id TEXT, type TEXT, cooldown TEXT)");
db.run("CREATE TABLE IF NOT EXISTS fpole (id TEXT, fpole INTEGER)");
db.run("CREATE TABLE IF NOT EXISTS rifle (id TEXT, rifle INTEGER)");
db.run("CREATE TABLE IF NOT EXISTS shovel (id TEXT, shovel INTEGER)");
db.run("CREATE TABLE IF NOT EXISTS mine (id TEXT, mine INTEGER)");
db.run("CREATE TABLE IF NOT EXISTS guard (id TEXT, guard INTEGER)");
db.run("CREATE TABLE IF NOT EXISTS debit (id TEXT, debit INTEGER)");
db.run("CREATE TABLE IF NOT EXISTS bait (id TEXT, bait INTEGER)");
db.run("CREATE TABLE IF NOT EXISTS cuffs (id TEXT, cuffs INTEGER)");
db.run("CREATE TABLE IF NOT EXISTS minnow (id TEXT, minnow INTEGER)");
db.run("CREATE TABLE IF NOT EXISTS guppy (id TEXT, guppy INTEGER)");
db.run("CREATE TABLE IF NOT EXISTS carp (id TEXT, carp INTEGER)");
db.run("CREATE TABLE IF NOT EXISTS bass (id TEXT, bass INTEGER)");
db.run("CREATE TABLE IF NOT EXISTS sunfish (id TEXT, sunfish INTEGER)");
db.run("CREATE TABLE IF NOT EXISTS sunfishBite (id TEXT, sunfishBite INTEGER)");
db.run("CREATE TABLE IF NOT EXISTS sturgeon (id TEXT, sturgeon INTEGER)");
db.run("CREATE TABLE IF NOT EXISTS shark (id TEXT, shark INTEGER)");
db.run("CREATE TABLE IF NOT EXISTS squid (id TEXT, squid INTEGER)");
client.on("ready", async () => { client.on("ready", async () => {
console.log(`${colors.cyan("[INFO]")} Logged in as ${colors.green(client.user.tag)}`) console.log(`${colors.cyan("[INFO]")} Logged in as ${colors.green(client.user.tag)}`)
@ -149,6 +166,32 @@ setCooldown = (user, type, cooldown) => {
}); });
} }
// TODO: figure out if this actually works, then make the other functions
checkAndModifyItems = async (user, _type, amount, override) => {
// Check if the user exists, if not, add them to the database
await db.get(`SELECT * FROM ${_type} WHERE id = '${user.id}'`, async (err, row) => {
if (err) {
console.error(`Smthn went wrong: ${err}`);
return false;
}
if (!row) {
await db.run(`INSERT INTO ${_type} (id, ${_type}) VALUES ('${user.id}', ${amount})`);
return amount;
}
if (row) {
if (override) {
await db.run(`UPDATE ${_type} SET ${_type} = ${amount} WHERE id = '${user.id}'`);
return amount;
}
await db.run(`UPDATE ${_type} SET ${_type} = ${row._type + amount} WHERE id = '${user.id}'`);
return row.points + amount;
}
return false;
});
}
var slotResults = {}; var slotResults = {};
client.on("interactionCreate", async interaction => { client.on("interactionCreate", async interaction => {
@ -645,8 +688,8 @@ client.on("interactionCreate", async interaction => {
coin = Math.random() <= 0.5 ? "heads" : "tails"; coin = Math.random() <= 0.5 ? "heads" : "tails";
side = interaction.options.getString("side"); side = interaction.options.getString("side");
outcome = coin == side ? true : false; outcome = coin == side ? true : false;
// If they win, give them the prize, if they lose take up to double the prize away // If they win, give them the prize, if they lose take the prize away
// if they lose inverse the bet and double it // if they lose make the bet negative
if (!outcome) bet = -bet; if (!outcome) bet = -bet;
await checkAndModifyPoints(interaction.user, bet); await checkAndModifyPoints(interaction.user, bet);
setCooldown(interaction.user, "coinflip", config.games.coinflip.cooldown * 60 * 1000) //sanity checks in case they somehow started a coinflip despite having a negative balance setCooldown(interaction.user, "coinflip", config.games.coinflip.cooldown * 60 * 1000) //sanity checks in case they somehow started a coinflip despite having a negative balance
@ -826,6 +869,43 @@ client.on("interactionCreate", async interaction => {
delete wordScrambles[interaction.channel.id]; delete wordScrambles[interaction.channel.id];
}, 30 * 1000); }, 30 * 1000);
break; break;
case "handcuff":
interaction.reply({
embeds: [{
title: "Placeholder",
description: `This does nothing ${config.games.placeholder}`,
color: 0x00ffff
}]
});
break;
case "bait":
interaction.reply({
embeds: [{
title: "Placeholder",
description: `This does nothing ${config.games.placeholder}`,
color: 0x00ffff
}]
});
break;
case "bodyguard":
interaction.reply({
embeds: [{
title: "Placeholder",
description: `This does nothing ${config.games.placeholder}`,
color: 0x00ffff
}]
});
break;
case "panhandle":
interaction.reply({
embeds: [{
title: "Placeholder",
description: `This does nothing ${config.games.placeholder}`,
color: 0x00ffff
}]
});
break;
}; };
}); });
@ -862,17 +942,17 @@ client.on('messageCreate', async message => {
if (curCooldown) { if (curCooldown) {
return; return;
} }
// 1 in 50 chance to start a word scramble // 2.5% chance for scramble
if (Math.floor(Math.random() * 25) == 0) { if (Math.random < 0.025) {
// Start a word scramble // Start a word scramble and clear any vars set by a forced scramble
setCooldown({ id: 0 }, "wordscramble", 5 * 60 * 1000) setCooldown({ id: 0 }, "wordscramble", 5 * 60 * 1000)
override = false override = false
coinamount = 2 coinamount = 1
gameData = wordScramble(override); gameData = wordScramble(override);
wordScrambles[message.channel.id] = { wordScrambles[message.channel.id] = {
word: gameData.word, word: gameData.word,
scrambledWord: gameData.scrambledWord, scrambledWord: gameData.scrambledWord,
amount: 2, amount: 1,
badGuesses: [] badGuesses: []
} }
message.channel.send({ message.channel.send({
@ -936,6 +1016,7 @@ function playGame(gameName) {
difference: 0 difference: 0
}; };
// we know what switch cases are and actually use them, unlike yandev
switch (gameName) { switch (gameName) {
case 'FISHING': case 'FISHING':
if (randomNumber < 40) { if (randomNumber < 40) {