edit eval msg + add FINALISTE and hug visual improvements

This commit is contained in:
ddorn 2020-05-19 10:11:50 +02:00
parent cc8b7a9949
commit 6d1560ceaa
3 changed files with 63 additions and 18 deletions

View File

@ -21,7 +21,7 @@ from ptpython.repl import embed
from src.constants import * from src.constants import *
from src.core import CustomBot from src.core import CustomBot
from src.errors import TfjmError from src.errors import TfjmError
from src.utils import fg from src.utils import fg, french_join
COGS_SHORTCUTS = { COGS_SHORTCUTS = {
"bt": "src.base_tirage", "bt": "src.base_tirage",
@ -136,10 +136,22 @@ class DevCog(Cog, name="Dev tools"):
# noinspection PyUnreachableCode # noinspection PyUnreachableCode
@command(name="setup") @command(name="setup")
@has_role(Role.DEV) @has_role(Role.DEV)
async def setup_roles(self, ctx): async def setup_roles(self, ctx: Context, *teams: discord.Role):
""" """
(dev) Commande temporaire pour setup le serveur. (dev) Commande temporaire pour setup le serveur.
""" """
return
finalist = get(ctx.guild.roles, name=Role.FINALISTE)
assert finalist
for t in teams:
m: discord.Member
for m in t.members:
await m.add_roles(finalist)
await ctx.send(
f"{french_join(t.mention for t in teams)} ont été ajouté en finale !"
)
return return
guild: discord.Guild = ctx.guild guild: discord.Guild = ctx.guild
@ -213,12 +225,10 @@ class DevCog(Cog, name="Dev tools"):
await channel.delete_messages(to_delete) await channel.delete_messages(to_delete)
await ctx.message.delete() await ctx.message.delete()
@command(name="eval", aliases=["e"]) def eval(self, msg: Message) -> discord.Embed:
@is_owner() guild: discord.Guild = msg.guild
async def eval_cmd(self, ctx: Context): roles = guild.roles
"""""" members = guild.members
msg: Message = ctx.message
guild: discord.Guild = ctx.guild
query = re.match(RE_QUERY, msg.content).group("query") query = re.match(RE_QUERY, msg.content).group("query")
@ -258,7 +268,36 @@ class DevCog(Cog, name="Dev tools"):
embed = discord.Embed(title="Result", color=discord.Colour.green()) embed = discord.Embed(title="Result", color=discord.Colour.green())
embed.add_field(name="Query", value=f"```py\n{query}```", inline=False) embed.add_field(name="Query", value=f"```py\n{query}```", inline=False)
embed.add_field(name="Value", value=f"```py\n{out.read()}```", inline=False) embed.add_field(name="Value", value=f"```py\n{out.read()}```", inline=False)
await ctx.send(embed=embed) embed.set_footer(text="You may edit your message.")
return embed
@command(name="eval", aliases=["e"])
@is_owner()
async def eval_cmd(self, ctx: Context):
""""""
embed = self.eval(ctx.message)
resp = await ctx.send(embed=embed)
def check(before, after):
return after.id == ctx.message.id
while True:
try:
before, after = await self.bot.wait_for(
"message_edit", check=check, timeout=600
)
except asyncio.TimeoutError:
break
embed = self.eval(after)
await resp.edit(embed=embed)
# Remove the "You may edit your message"
embed.set_footer()
try:
await resp.edit(embed=embed)
except discord.NotFound:
pass
@Cog.listener() @Cog.listener()
async def on_message(self, msg: Message): async def on_message(self, msg: Message):

View File

@ -8,6 +8,7 @@ import urllib
from collections import defaultdict, Counter from collections import defaultdict, Counter
from dataclasses import dataclass, field from dataclasses import dataclass, field
from functools import partial from functools import partial
from math import log
from operator import attrgetter, itemgetter from operator import attrgetter, itemgetter
from time import time from time import time
from typing import List, Set, Union from typing import List, Set, Union
@ -393,7 +394,7 @@ class MiscCog(Cog, name="Divers"):
async def send_hugs_stats_for(self, ctx: Context, who: Member): async def send_hugs_stats_for(self, ctx: Context, who: Member):
embed = discord.Embed( embed = discord.Embed(
title=f"Calins de {who.display_name}", color=discord.Colour.magenta() title=f"Câlins de {who.display_name}", color=discord.Colour.magenta()
) )
given = self.hugs_given(ctx, who.id) given = self.hugs_given(ctx, who.id)
@ -401,16 +402,19 @@ class MiscCog(Cog, name="Divers"):
auto = self.auto_hugs(ctx, who.id) auto = self.auto_hugs(ctx, who.id)
cut = [h for h in given if "coupé en deux" in h.text] cut = [h for h in given if "coupé en deux" in h.text]
infos = { infos = {
"Câlins donnés": len(given), "Câlins donnés": (len(given), 1),
"Câlins reçus": len(received), "Câlins reçus": (len(received), 1),
"Personnes câlinées": len(set(h.hugged for h in given)), "Personnes câlinées": (len(set(h.hugged for h in given)), 20),
"Câliné par": len(set(h.hugger for h in received)), "Câliné par": (len(set(h.hugger for h in received)), 30),
"Auto-câlins": len(auto), "Auto-câlins": ((len(auto)), 3),
"Coupé en deux": len(cut), "Morceaux": (len(cut), 30),
} }
for f, v in infos.items(): for f, (v, h_factor) in infos.items():
embed.add_field(name=f, value=f"{v} {self.heart_for_stat(v)}") heart = self.heart_for_stat(v * h_factor)
if f == "Morceaux":
v = 2 ** v
embed.add_field(name=f, value=f"{v} {heart}")
await ctx.send(embed=embed) await ctx.send(embed=embed)

View File

@ -62,6 +62,7 @@ TOURNOIS = [
"Tours", "Tours",
"Bordeaux-Nancy", "Bordeaux-Nancy",
"Rennes", "Rennes",
"Finale",
] ]
@ -73,6 +74,7 @@ class Role:
JURY = tuple(f"Jury {t}" for t in TOURNOIS) JURY = tuple(f"Jury {t}" for t in TOURNOIS)
BENEVOLE = "Bénévole" BENEVOLE = "Bénévole"
CAPTAIN = "Capitaine" CAPTAIN = "Capitaine"
FINALISTE = "Finaliste"
PARTICIPANT = "Participant" PARTICIPANT = "Participant"
TOURIST = "Touriste" TOURIST = "Touriste"
PRETRESSE_CALINS = "Grande prêtresse des câlins" PRETRESSE_CALINS = "Grande prêtresse des câlins"