[mod-perdu] Ajout de la localisation (pense à faire un pipenv update)

This commit is contained in:
Louis Chauvet 2020-04-09 15:07:34 +02:00
parent 8329adead7
commit 9f29e13938
Signed by: fomys
GPG Key ID: 1ECA046A9615ABA0
3 changed files with 32 additions and 7 deletions

View File

@ -12,6 +12,7 @@ aiofile = "*"
toml = "*" toml = "*"
"discord.py" = {version = "*",extras = ["voice",]} "discord.py" = {version = "*",extras = ["voice",]}
matplotlib = "*" matplotlib = "*"
humanize = "*"
[dev-packages] [dev-packages]

View File

@ -2,12 +2,14 @@
import asyncio import asyncio
import importlib import importlib
import json import json
import locale
import logging import logging
import logging.config import logging.config
import os import os
from typing import Dict from typing import Dict
import discord import discord
import humanize
from packaging.version import Version from packaging.version import Version
from config.FileSystem import FSConfig from config.FileSystem import FSConfig
@ -238,7 +240,10 @@ class LBI(discord.Client):
self.modules = {} self.modules = {}
self.config = config self.config = config
self.config.init( self.config.init(
{"modules": ["modules", "errors"], "prefix": "%", "admin_roles": [], "admin_users": [], "main_guild": 0}) {"modules": ["modules", "errors"], "prefix": "%", "admin_roles": [], "admin_users": [], "main_guild": 0,
"locale": "fr_FR.utf8"})
locale.setlocale(locale.LC_TIME, self.config.locale)
humanize.i18n.activate(self.config.locale)
self.load_modules() self.load_modules()
@modules_edit @modules_edit

View File

@ -2,6 +2,7 @@ import datetime
import time import time
import discord import discord
import humanize
import matplotlib.pyplot as np import matplotlib.pyplot as np
import utils.emojis import utils.emojis
@ -94,9 +95,14 @@ class MainClass(BaseClassPython):
async def com_all(self, message: discord.Message, args, kwargs): async def com_all(self, message: discord.Message, args, kwargs):
# Get all stats # Get all stats
top = self.get_top() top = self.get_top()
intervales = [sum(list(zip(*top[i][1]))[1], datetime.timedelta(0)) / len(top[i][1]) for i in range(len(top))]
embed_description = "\n".join( embed_description = "\n".join(
f"{utils.emojis.write_with_number(i)} : <@{top[i][0]}> a **perdu {len(top[i][1])} fois** depuis la" f"{utils.emojis.write_with_number(i)} : <@{top[i][0]}> a **perdu {len(top[i][1])} fois** depuis la"
f" création du salon à en moyenne **{sum(list(zip(*top[i][1]))[1], datetime.timedelta(0)) / len(top[i][1])} heures d'intervalle.**" f" création du salon à en moyenne **"
f"{(str(intervales[i].days) + ' jours et' if intervales[i].days else '')} "
f"{str(int(intervales[i].total_seconds() % (24 * 3600) // 3600)) + ':' if intervales[i].total_seconds() > 3600 else ''}"
f"{int((intervales[i].total_seconds() % 3600) // 60)} "
f"{'heures' if intervales[i].total_seconds() > 3600 else 'minutes'} d'intervalle.**"
for i in range(len(top)) for i in range(len(top))
)[:2000] )[:2000]
await message.channel.send(embed=discord.Embed(title="G-Perdu - Tableau des scores", await message.channel.send(embed=discord.Embed(title="G-Perdu - Tableau des scores",
@ -141,19 +147,27 @@ class MainClass(BaseClassPython):
if "history" in args: if "history" in args:
since = datetime.datetime(year=1, month=1, day=1) since = datetime.datetime(year=1, month=1, day=1)
debut_message = "la création du salon"
top = 5
if "s" in [k[0] for k in kwargs]: if "s" in [k[0] for k in kwargs]:
try: try:
d = [k[1] for k in kwargs if k[0] == "s"][0] d = [k[1] for k in kwargs if k[0] == "s"][0]
since = datetime.datetime.now() - datetime.timedelta(days=float(d)) since = datetime.datetime.now() - datetime.timedelta(days=float(d))
debut_message = humanize.naturalday(since.date(), format='le %d %b')
except ValueError:
pass
if "t" in [k[0] for k in kwargs]:
try:
top = int([k[1] for k in kwargs if k[0] == "t"][0])
except ValueError: except ValueError:
pass pass
# Si mention, alors uniquement les mentions # Si mention, alors uniquement les mentions
if message.mentions: if message.mentions:
top = self.get_top(since=since, top = self.get_top(since=since,
only_users=[mention.id for mention in message.mentions] + [message.author.id]) only_users=[mention.id for mention in message.mentions])
else: else:
# TOP 5 + auteur # TOP 5 + auteur
top = self.get_top(since=since, top=5, with_user=[message.author.id]) top = self.get_top(since=since, top=top, with_user=[message.author.id])
new_top = {} new_top = {}
for t in top: for t in top:
c = 0 c = 0
@ -170,7 +184,7 @@ class MainClass(BaseClassPython):
np.xlabel("Temps", fontsize=30) np.xlabel("Temps", fontsize=30)
np.ylabel("Score", fontsize=30) np.ylabel("Score", fontsize=30)
np.legend(fontsize=20) np.legend(fontsize=20)
np.title("Évolution du nombre de perdu au cours du temps.", fontsize=40) np.title(f"Évolution du nombre de perdu au cours du temps depuis {debut_message}.", fontsize=35)
file_name = f"/tmp/{time.time()}.png" file_name = f"/tmp/{time.time()}.png"
np.savefig(file_name, bbox_inches='tight') np.savefig(file_name, bbox_inches='tight')
await message.channel.send(file=discord.File(file_name)) await message.channel.send(file=discord.File(file_name))
@ -185,9 +199,14 @@ class MainClass(BaseClassPython):
except ValueError: except ValueError:
pass pass
top = self.get_top(10, since) top = self.get_top(10, since)
intervales = [sum(list(zip(*top[i][1]))[1], datetime.timedelta(0)) / len(top[i][1]) for i in range(len(top))]
embed_description = "\n".join( embed_description = "\n".join(
f"{utils.emojis.write_with_number(i)} : <@{top[i][0]}> a **perdu {len(top[i][1])} fois** depuis la" f"{utils.emojis.write_with_number(i)} : <@{top[i][0]}> a **perdu {len(top[i][1])} fois** depuis "
f" création du salon à en moyenne **{sum(list(zip(*top[i][1]))[1], datetime.timedelta(0)) / len(top[i][1])} heures d'intervalle.**" f"{humanize.naturalday(since.date(), format='le %d %b')} à en moyenne **"
f"{(str(intervales[i].days) + ' jours et' if intervales[i].days else '')} "
f"{str(int(intervales[i].total_seconds() % (24 * 3600) // 3600)) + ':' if intervales[i].total_seconds() > 3600 else ''}"
f"{int((intervales[i].total_seconds() % 3600) // 60)} "
f"{'heures' if intervales[i].total_seconds() > 3600 else 'minutes'} d'intervalle.**"
for i in range(len(top)) for i in range(len(top))
)[:2000] )[:2000]
await message.channel.send(embed=discord.Embed(title="G-Perdu - Tableau des scores", await message.channel.send(embed=discord.Embed(title="G-Perdu - Tableau des scores",