mirror of
				https://gitlab.com/ddorn/tfjm-discord-bot.git
				synced 2025-11-04 14:32:20 +01:00 
			
		
		
		
	✨ + 📝 team add memmbre command
This commit is contained in:
		@@ -1,4 +1,5 @@
 | 
				
			|||||||
from collections import namedtuple
 | 
					from collections import namedtuple
 | 
				
			||||||
 | 
					from typing import List, Tuple
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import discord
 | 
					import discord
 | 
				
			||||||
from discord.ext import commands
 | 
					from discord.ext import commands
 | 
				
			||||||
@@ -24,12 +25,36 @@ class TeamsCog(Cog, name="Teams"):
 | 
				
			|||||||
        ]
 | 
					        ]
 | 
				
			||||||
        return teams
 | 
					        return teams
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def teams_for(self, member) -> List[Tuple[Team, discord.Role]]:
 | 
				
			||||||
 | 
					        """Return a list of pairs (role, team) corresponding to the teams of the member"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        teams = []
 | 
				
			||||||
 | 
					        for role in member.roles:
 | 
				
			||||||
 | 
					            team = get(self.teams, trigram=role.name)
 | 
				
			||||||
 | 
					            if team:
 | 
				
			||||||
 | 
					                teams.append((team, role))
 | 
				
			||||||
 | 
					        return teams
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @group(name="team")
 | 
					    @group(name="team")
 | 
				
			||||||
    async def team(self, ctx):
 | 
					    async def team(self, ctx):
 | 
				
			||||||
        """Groupe de commandes pour la gestion des équipes."""
 | 
					        """Groupe de commandes pour la gestion des équipes."""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @team.command(name="create")
 | 
					    @team.command(name="create")
 | 
				
			||||||
    async def create_team(self, ctx: Context, trigram, team_secret):
 | 
					    async def create_team(self, ctx: Context, trigram, team_secret):
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        Permet aux capitaines de créer leur equipes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Pour utiliser cette commande, il faut ton trigram et ton code
 | 
				
			||||||
 | 
					        d'équipe. Tu peux ensuite écrire `!team create TRIGRAM SECRET`
 | 
				
			||||||
 | 
					        en gradant le point d'éclamation et en remplaçant `TRIGRAM` et
 | 
				
			||||||
 | 
					        `SECRET` par les bonnes valeurs. Le message que tu envoie sera
 | 
				
			||||||
 | 
					        immédiatement supprimé pour pas que d'autres voient ton secret,
 | 
				
			||||||
 | 
					        donc ne t'inquiète pas si il disparait.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Exemple:
 | 
				
			||||||
 | 
					            `!team create FOX abq23j`
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        await ctx.message.delete()
 | 
					        await ctx.message.delete()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        team: Team = get(self.teams, trigram=trigram)
 | 
					        team: Team = get(self.teams, trigram=trigram)
 | 
				
			||||||
@@ -48,7 +73,7 @@ class TeamsCog(Cog, name="Teams"):
 | 
				
			|||||||
                f"{ctx.author.mention}: l'équipe {trigram} "
 | 
					                f"{ctx.author.mention}: l'équipe {trigram} "
 | 
				
			||||||
                f"existe déjà. Tu peux demander a ton capitaine "
 | 
					                f"existe déjà. Tu peux demander a ton capitaine "
 | 
				
			||||||
                f"{captain.mention} de t'ajouter à l'équipe avec "
 | 
					                f"{captain.mention} de t'ajouter à l'équipe avec "
 | 
				
			||||||
                f"`!team add {ctx.author.mention}`"
 | 
					                f"`!team add {ctx.author.name}`"
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
        elif team_secret != team.secret:
 | 
					        elif team_secret != team.secret:
 | 
				
			||||||
            await ctx.send(
 | 
					            await ctx.send(
 | 
				
			||||||
@@ -74,6 +99,48 @@ class TeamsCog(Cog, name="Teams"):
 | 
				
			|||||||
                f"est {ctx.author.mention}"
 | 
					                f"est {ctx.author.mention}"
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @team.command(name="add")
 | 
				
			||||||
 | 
					    @commands.has_role(Role.CAPTAIN)
 | 
				
			||||||
 | 
					    async def team_add(self, ctx, member: discord.Member):
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        Ajoute un membre a ton équipe.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Commande réservée aux capitaines pour ajouter un
 | 
				
			||||||
 | 
					        membre dans leur équipe. Cela permet juste de donner
 | 
				
			||||||
 | 
					        les bons roles pour que les bonnes *channels* soient
 | 
				
			||||||
 | 
					        accessibles.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Exemple:
 | 
				
			||||||
 | 
					            `!team add @Jean-Mich-Much`
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        author_teams = self.teams_for(ctx.author)
 | 
				
			||||||
 | 
					        member_teams = self.teams_for(member)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if member_teams:
 | 
				
			||||||
 | 
					            await ctx.send(
 | 
				
			||||||
 | 
					                f"{member.mention} est déjà dans une équipe "
 | 
				
			||||||
 | 
					                f"et ne peut pas être dans deux à la fois."
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					        elif len(author_teams) > 1:
 | 
				
			||||||
 | 
					            await ctx.send(
 | 
				
			||||||
 | 
					                f"Tu est dans plusieurs équipes, je ne sais "
 | 
				
			||||||
 | 
					                f"pas où l'ajouter. Il faut demander à un organisateur "
 | 
				
			||||||
 | 
					                f"de le faire."
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            the_team = author_teams[0]
 | 
				
			||||||
 | 
					            tournoi = get(ctx.guild.roles, name=the_team[0].tournoi)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            await member.add_roles(
 | 
				
			||||||
 | 
					                the_team[1],
 | 
				
			||||||
 | 
					                tournoi,
 | 
				
			||||||
 | 
					                reason=f"{ctx.author.name} l'a ajouté à son équipe",
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					            await ctx.send(
 | 
				
			||||||
 | 
					                f"{member.mention} à été ajouté dans l'équipe {the_team[1].mention}"
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def setup(bot: Bot):
 | 
					def setup(bot: Bot):
 | 
				
			||||||
    bot.add_cog(TeamsCog())
 | 
					    bot.add_cog(TeamsCog())
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user