Nouveaux défis
This commit is contained in:
parent
0f82a8aa7a
commit
61f8215a4a
18
bot.py
18
bot.py
@ -37,7 +37,7 @@ CANTONS = {
|
||||
"SH": "Schaffhouse",
|
||||
"SO": "Soleure",
|
||||
"SZ": "Schwytz",
|
||||
"TH": "Thurgovie",
|
||||
"TG": "Thurgovie",
|
||||
"TI": "Tessin",
|
||||
"UR": "Uri",
|
||||
"VD": "Vaud",
|
||||
@ -49,7 +49,7 @@ CANTONS = {
|
||||
EQUIPES = ["rouge", "vert"]
|
||||
|
||||
CodeCanton = Literal["AG", "AI", "AR", "BE", "BL", "BS", "FR", "GE", "GL", "GR", "JU", "LU", "NE",
|
||||
"NW", "OW", "SG", "SH", "SO", "SZ", "TH", "TI", "UR", "VD", "VS", "ZG", "ZH"]
|
||||
"NW", "OW", "SG", "SH", "SO", "SZ", "TG", "TI", "UR", "VD", "VS", "ZG", "ZH"]
|
||||
Couleur = Literal["rouge", "vert"]
|
||||
|
||||
|
||||
@ -97,7 +97,7 @@ def generer_carte():
|
||||
cairosvg.svg2png(url='map.svg', write_to='map.png')
|
||||
|
||||
|
||||
@bot.command()
|
||||
@bot.command(brief="Affche la carte des cantons capturés.")
|
||||
async def carte(ctx: commands.Context):
|
||||
rouges = list(canton_code for canton_code, canton in data['cantons'].items()
|
||||
if canton['capture'] == "rouge")
|
||||
@ -119,7 +119,7 @@ async def carte(ctx: commands.Context):
|
||||
await ctx.send(message, file=discord.File(f, filename="battle4suisse.png"))
|
||||
|
||||
|
||||
@bot.command()
|
||||
@bot.command(brief=f"Capture un canton pour son équipe : {prefix}capturer CODE_CANTON [EQUIPE]")
|
||||
async def capturer(ctx: commands.Context, canton: CodeCanton, *, couleur: Couleur | None = None):
|
||||
if couleur is None:
|
||||
author_id = ctx.author.id
|
||||
@ -143,7 +143,7 @@ async def capture_error(ctx, error):
|
||||
await ctx.send(str(error))
|
||||
|
||||
|
||||
@bot.command()
|
||||
@bot.command(brief=f"Verrouille un canton sur la carte pour son équipe : {prefix}verrouiller CODE_CANTON [EQUIPE]")
|
||||
async def verrouiller(ctx: commands.Context, canton: CodeCanton, *, couleur: Couleur | None = None):
|
||||
if couleur is None:
|
||||
author_id = ctx.author.id
|
||||
@ -161,7 +161,7 @@ async def verrouiller(ctx: commands.Context, canton: CodeCanton, *, couleur: Cou
|
||||
return await carte(ctx)
|
||||
|
||||
|
||||
@bot.command()
|
||||
@bot.command(brief=f"Réinitialise l'état de capture d'un canton : {prefix}reset CODE_CANTON")
|
||||
async def reset(ctx: commands.Context, canton: CodeCanton):
|
||||
data['cantons'][canton]['capture'] = None
|
||||
data['cantons'][canton]['verrouille'] = False
|
||||
@ -171,7 +171,7 @@ async def reset(ctx: commands.Context, canton: CodeCanton):
|
||||
return await carte(ctx)
|
||||
|
||||
|
||||
@bot.command()
|
||||
@bot.command(brief=f"Rejoindre une équipe : {prefix}equipe EQUIPE")
|
||||
async def equipe(ctx: commands.Context, couleur: Couleur):
|
||||
author_id = ctx.author.id
|
||||
for membres_equipe in data['equipes'].values():
|
||||
@ -183,12 +183,12 @@ async def equipe(ctx: commands.Context, couleur: Couleur):
|
||||
await ctx.send(f"Équipe {couleur} rejointe")
|
||||
|
||||
|
||||
@bot.command()
|
||||
@bot.command(brief=f"Affiche la liste des noms des défis : {prefix}defis [capture | vol]")
|
||||
async def defis(ctx: commands.Context, *, type_defi: Literal['capture', 'vol'] = "capture"):
|
||||
await ctx.send(f"Liste des défis de {type_defi} :\n" + "\n".join(f"* {defi['id']} : {defi['nom']}" for defi in DEFIS[type_defi]))
|
||||
|
||||
|
||||
@bot.command()
|
||||
@bot.command(brief=f"Affiche la description des défis")
|
||||
async def description(ctx: commands.Context, type_defi: Literal['capture', 'vol'] = "capture", id_defi: int | None = None):
|
||||
defis = DEFIS[type_defi]
|
||||
embeds = []
|
||||
|
86
defis.json
86
defis.json
@ -39,7 +39,7 @@
|
||||
{
|
||||
"id": 7,
|
||||
"nom": "Marcher sur l'eau",
|
||||
"description": "Traverse un cours d'eau d'une rive à l'autre.\n\nLa distance traversée doit être d'au moins un mètre.\nIl n'est pas possible d'emprunter une structure existante pour le traverser, en particulier d'utiliser un pont.",
|
||||
"description": "Traverse un cours d'eau d'une rive à l'autre.\n\nLa distance traversée doit être d'au moins un mètre.\nIl n'est pas possible d'emprunter une structure existante pour le traverser, en particulier d'utiliser un pont.\n\nSi le cours d'eau fait la frontière entre 2 cantons, les deux cantons sont capturés.",
|
||||
"bonus": 1
|
||||
},
|
||||
{
|
||||
@ -191,15 +191,57 @@
|
||||
"nom": "Promotion culturelle",
|
||||
"description": "Prends un flyer dans un lieu culturel, et en fais-en la promotion dans un lieu culturel similaire d'un autre canton.\n\nEn cas de succès du défi, les deux cantons sont capturés.",
|
||||
"bonus": 1
|
||||
},
|
||||
{
|
||||
"id": 33,
|
||||
"nom": "Placement de produit",
|
||||
"description": "Filme une pub de parfum.",
|
||||
"bonus": 0
|
||||
},
|
||||
{
|
||||
"id": 34,
|
||||
"nom": "Polyglote",
|
||||
"description": "Trouve une personne qui parle français, une personne qui parle allemand, une personne qui parle italien.\n\nCes trois personnes ne sont pas nécessairement distinctes.",
|
||||
"bonus": 1
|
||||
},
|
||||
{
|
||||
"id": 35,
|
||||
"nom": "Cabotage",
|
||||
"description": "Dans le même canton, prends un train et descend au prochain arrêt sans changer de canton.",
|
||||
"bonus": 0
|
||||
},
|
||||
{
|
||||
"id": 36,
|
||||
"nom": "Cadeau !",
|
||||
"description": "Offre un cadeau à quelqu'un⋅e.",
|
||||
"bonus": 0
|
||||
},
|
||||
{
|
||||
"id": 37,
|
||||
"nom": "Culture",
|
||||
"description": "Trouve « Astérix chez les Helvètes » ou un livre sur le Nicaragua.",
|
||||
"bonus": 0
|
||||
},
|
||||
{
|
||||
"id": 38,
|
||||
"nom": "Mairiephilie",
|
||||
"description": "Dessine l'administration municipale d'une commune de ton canton devant elle.",
|
||||
"bonus": 0
|
||||
},
|
||||
{
|
||||
"id": 39,
|
||||
"nom": "Sing'in the rain",
|
||||
"description": "Chante « Sing'in the rain » sous la pluie ou sous la neige. S'il neige, remplace « rain » par « snow ».",
|
||||
"bonus": 0
|
||||
},
|
||||
{
|
||||
"id": 40,
|
||||
"nom": "Touch the ~~grass~~ snow",
|
||||
"description": "Touche de la neige naturelle.",
|
||||
"bonus": 1
|
||||
}
|
||||
],
|
||||
"vol": [
|
||||
{
|
||||
"id": 1,
|
||||
"nom": "Au sommet :mountain:",
|
||||
"description": "Photographie le plus de sommets en 15 minutes.",
|
||||
"bonus": 0
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"nom": "Chocolat :chocolate_bar:",
|
||||
@ -224,12 +266,6 @@
|
||||
"description": "Fais dire à un⋅e passant⋅e le mot de ton choix le plus rapidement possible, sans donner le mot ni sa définition exacte.",
|
||||
"bonus": 0
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"nom": "Au plus profond",
|
||||
"description": "Rends-toi à la plus basse altitude possible en 15 minutes.",
|
||||
"bonus": 0
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"nom": "Luxe :money_with_wings:",
|
||||
@ -259,6 +295,30 @@
|
||||
"nom": "Fuis ! :person_running:",
|
||||
"description": "Quitte ton canton le plus rapidement possible.",
|
||||
"bonus": 0
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"nom": "Château-fort :european_castle:",
|
||||
"description": "Trouver la façade la plus imposante en 15 minutes.",
|
||||
"bonus": 0
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"nom": "Cinéphile :cinema:",
|
||||
"description": "Trouve un cinéma le plus rapidement possible.",
|
||||
"bonus": 0
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"nom": "Fièr⋅e :rainbow_flag:",
|
||||
"description": "Trouve un drapeau du parapluie LGBT le plus rapidement possible.\n\nIl ne peut pas être sur toi, ni fabriqué, ni sur un écran.",
|
||||
"bonus": 0
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"nom": "Panneaux",
|
||||
"description": "Trouve le plus le panneaux de signalisation possible en 15 minutes, qui ne sont pas des panneaux indiquant des directions.",
|
||||
"bonus": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user