From 68c1bbb657b5e508026f61f087b9a59c8a52a439 Mon Sep 17 00:00:00 2001 From: Malarne <34847642+Malarne@users.noreply.github.com> Date: Sat, 9 Feb 2019 18:29:17 +0100 Subject: [PATCH] Add `[p]levelerset defaultbackground` command (issue #23) New command missing translation for now --- Leveler/leveler.py | 13 ++++++++++++- Leveler/userprofile.py | 18 ++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/Leveler/leveler.py b/Leveler/leveler.py index 1324e0a..16c8f28 100644 --- a/Leveler/leveler.py +++ b/Leveler/leveler.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- - +import re from redbot.core import checks, Config import discord from redbot.core import commands @@ -566,3 +566,14 @@ async def setxp(self, ctx, xp:int, member:discord.Member=None): await self.profiles._set_exp(member, xp) await ctx.send(member.name +_("'s XP set to ") + str(xp)) + @levelerset.command() + @checks.mod_or_permissions(manage_messages=True) + async def defaultbackground(self, ctx, url): + """Allow you to set a default background for your server members.""" + bg = re.findall(r"(?:http\:|https\:)?\/\/.*\.(?:png|jpg|gif)", url) + if not bg: + await ctx.send(_("Please give a direct link to an image on format png, jpg or gif !")) + else: + background = bg[0] + await self.profiles._set_guild_background(ctx.guild, background) + await ctx.send(f"Default background set to {background}.") diff --git a/Leveler/userprofile.py b/Leveler/userprofile.py index d21af00..a02d3d2 100644 --- a/Leveler/userprofile.py +++ b/Leveler/userprofile.py @@ -28,6 +28,24 @@ def __init__(self): self.data.register_member(**default_member) self.data.register_guild(**default_guild) + async def update_all_members( + self, + config: Config, + guild: discord.Guild, + entries: dict, + ): + base_group = config._get_base_group(config.MEMBER, str(guild.id)) + async with base_group() as all_members: + to_update = {k: v for k, v in all_members.items()} + for m in guild.members: + mid = str(m.id) + to_update[mid] = to_update.get(mid, {}) + to_update[mid].update(entries) + all_members.update(to_update) + + async def _set_guild_background(self, guild, bg): + await self.update_all_members(self.data, guild, {"background": bg}) + async def _give_exp(self, member, exp): current = await self.data.member(member).exp() await self.data.member(member).exp.set(current + exp)