From 6a7452c5287e6bb22fa78f9a74a20fec0115c144 Mon Sep 17 00:00:00 2001 From: attilavs2 Date: Mon, 12 May 2025 20:42:05 +0200 Subject: [PATCH] =?UTF-8?q?D=C3=A9but=20des=20courses=20de=20cheveaux?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .ecoplus.py.swn | Bin 0 -> 32768 bytes ecoplus.py | 126 +++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 115 insertions(+), 11 deletions(-) create mode 100644 .ecoplus.py.swn diff --git a/.ecoplus.py.swn b/.ecoplus.py.swn new file mode 100644 index 0000000000000000000000000000000000000000..7e613a9137ee329489965ccab645f5117974ff50 GIT binary patch literal 32768 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 literal 0 HcmV?d00001 diff --git a/ecoplus.py b/ecoplus.py index 5840b46..19a2693 100644 --- a/ecoplus.py +++ b/ecoplus.py @@ -3,6 +3,7 @@ import random import datetime import time import threading +import asyncio import discord import sqlite3 @@ -20,7 +21,7 @@ intents.message_content = True intents.members = True intents.moderation = True -client = discord.Client(intents=intents, activity=discord.Game(name='En train de niquer des mères')) +client = discord.Client(intents=intents, activity=discord.Game(name='En train de parier aux courses')) interface.client = client @@ -29,12 +30,6 @@ import forgejo database = sqlite3.connect(sys.argv[2]) cursor = database.cursor() -#try: -# cursor.execute("CREATE TABLE casino (id INT PRIMARY KEY, cash INT)") -# database.commit() -#except: -# print("La table existe déja") - guilds = [] globals()["gmembers"] = {} @@ -210,11 +205,11 @@ async def leaderboard(message): uid = int(message.author.id) gid = int(message.guild.id) lb = None - result = cursor.execute(f"SELECT * FROM tab_{gid} ORDER BY cash DESC").fetchall() + result = cursor.execute(f"SELECT * FROM tab_{gid} ORDER BY cash DESC LIMIT 10").fetchall() msgstr = "## ===== Leaderboard =====\n" i = 0 rlen = len(result) - while i < 10 and i < rlen: + while i < rlen: uid = result[i][0] ucash = result[i][1] msgstr += " "+str(i+1)+f". <@{uid}> - {ucash}$\n" @@ -242,11 +237,13 @@ async def transfer(message): return amnt = 0 try: - amnt = int(split[2]) + amnt = int(split[-1]) except: - await message.reply("Quantité non valide") + await message.reply(f"Quantité non valide (`{split[2]}`)") return taxamnt = int(round(amnt*0.05)) + if taxamnt < 1: + taxamnt = 1 if amnt + taxamnt > utili[1]: await message.reply("Vous n'avez pas assez d'argent") return @@ -257,6 +254,112 @@ async def transfer(message): database.commit() await message.reply(f"Transfert effectué. Une taxe de 5% ({taxamnt}$) a été prélevée.") +forme_msg = [\ + "n'est pas très en forme",\ + "va bien",\ + "est très remonté",\ + "a laissé des seringues vides dans son box",\ +] + +async def do_course(message): + gid = int(message.guild.id) + nxt_tick = 0 + ret = cursor.execute(f"SELECT * FROM courses WHERE gid={gid}").fetchone() + start_time = ret[1] + elaps_time = time.time()-ret[2] + cetape = ret[3] + while True: + ctime = time.time() + detape = 0 + if ctime < nxt_tick: + await asyncio.sleep(5) + continue + ret = cursor.execute(f"SELECT * FROM courses WHERE gid={gid}").fetchone() + elaps_time = ctime - ret[2] + if elaps_time > 20 and cetape <= 3: + detape = 1 + if elaps_time > 20 and cetape > 3: + detape = 1 + if detape: + cetape+=1 + itime = int(ctime) + cursor.execute(f"UPDATE courses SET date_der={itime},etape={cetape} WHERE gid={gid}") + database.commit() + if cetape < 3: + select = random.randint(1,10) + choice = cursor.execute(f"SELECT * FROM grid_{gid} WHERE n = {select}").fetchone() + msgchoice = 1 + if choice[1] < 6: + msgchoice = 0 + if choice[1] >= 6 and choice[1] < 8: + msgchoice = 1 + if choice[1] >= 8 and choice[1] < 10: + msgchoice = 2 + if choice[1] == 10: + msgchoice = 3 + msg = forme_msg[msgchoice] + print(f"Forme : {choice[2]},{msgchoice}") + await message.channel.send(f"La rumeur court que le cheval n°{select} {msg}") + if cetape == 3: + await message.channel.send("La course a commencé, et les paris sont fermés") + if cetape > 3: + for i in range(10): + chev = cursor.execute(f"SELECT * FROM grid_{gid} WHERE n={i+1}").fetchone() + cpos = chev[2] + chev[1] - random.randint(0,2) + cursor.execute(f"UPDATE grid_{gid} SET pos={cpos} WHERE n={chev[0]}") + grid = cursor.execute(f"SELECT * FROM grid_{gid} ORDER BY pos DESC") + msgstr = "## Grille de la course\n" + gagn = 0 + n = 1 + for chev in grid: + msgstr += f"{n} - n°{chev[0]}, {chev[2]*10}m\n" + n += 1 + if chev[2] >= 50: + gagn = chev[0] + if gagn: + msgstr += f"\nLe numéro {gagn} a remporté la course !" + await message.channel.send(msgstr) + if gagn: + break + nxt_tick += 10 + await asyncio.sleep(5) + + cursor.execute(f"DROP TABLE bets_{gid}") + cursor.execute(f"DROP TABLE grid_{gid}") + database.commit() + print("Tables de course DROP") + +async def course(message): + gid = int(message.guild.id) + uid = int(message.author.id) + cursor.execute(f"CREATE TABLE IF NOT EXISTS courses (gid INT PRIMARY KEY, date INT, date_der INT, etape INT)") + try: + cursor.execute(f"CREATE TABLE bets_{gid} (id INT PRIMARY KEY, pari_n INT, pari_qtt INT)") + cursor.execute(f"CREATE TABLE grid_{gid} (n INT PRIMARY KEY, speed INT, pos INT)") + except: + await message.reply("Une course est déja en cours") + return + ctime = int(time.time()) + cursor.execute(f"INSERT OR REPLACE INTO courses (gid, date, date_der, etape) VALUES ({gid},{ctime},{ctime},0)") + grid=[] + for i in range(10): + grid.append(i+1) + while grid: + n = random.choice(grid) + grid.remove(n) + speed = 4 + random.randint(0,3) + random.randint(0,3) + cursor.execute(f"INSERT INTO grid_{gid} (n,speed,pos) VALUES ({n},{speed},0)") + database.commit() + await message.channel.send( + f"### Course de chevaux lancée par <@{uid}>\n"\ + "Vous avez 10min pour placer vos paris avec ?bet"\ + ) + + await do_course(message) + +async def bet(message): + pass + async def casino_aide(message): await message.channel.send("Commandes du casino Eco+\n"\ "?init : initialiser votre portefeuille\n"\ @@ -370,6 +473,7 @@ cmd_dict = {\ "?roll":roll,\ "?transfer":transfer,\ "?casino":casino_aide,\ + "?course":course,\ } @client.event