Début des courses de cheveaux

This commit is contained in:
attilavs2 2025-05-12 20:42:05 +02:00
parent 0d2d1fe52a
commit 6a7452c528
2 changed files with 115 additions and 11 deletions

BIN
.ecoplus.py.swn Normal file

Binary file not shown.

View file

@ -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