Skip to content

Commit cd4971a

Browse files
committed
add auto join
1 parent e784aaf commit cd4971a

5 files changed

Lines changed: 75 additions & 2 deletions

File tree

src/commands/club.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,13 @@ async def create_club(
125125
if Club.filter(Club.sith_id == club.id).exists():
126126
await interaction.followup.send(f"Le club : {club.name} existe déjà...")
127127
else:
128+
guild = interaction.guild
129+
channel_club = utils.get(guild.channels, id=1428320894610309121)
130+
mess = await channel_club.send(
131+
f"Réagi à ce message pour rejoindre le club {club.name}"
132+
)
133+
134+
await mess.add_reaction("✅")
128135
await self.club_service.create_club(club, interaction.guild)
129136
await interaction.followup.send(f"Le club : {club.name} à été créé")
130137

src/commands/role.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
from __future__ import annotations
2+
3+
from typing import TYPE_CHECKING
4+
5+
from discord.ext import commands
6+
7+
from src.client import ClubSchema # noqa TC001
8+
from src.db.models import Club
9+
from src.services.club import ClubService
10+
from src.settings import Settings
11+
12+
if TYPE_CHECKING:
13+
from src.main import AeBot
14+
15+
16+
class RoleCog(commands.GroupCog, group_name="role"):
17+
def __init__(self, bot: AeBot):
18+
self.settings = Settings()
19+
self.club_service = ClubService(bot)
20+
self.bot = bot
21+
22+
@commands.Cog.listener()
23+
async def on_raw_reaction_add(self, payload):
24+
if payload.guild_id is None:
25+
return
26+
27+
guild = self.bot.get_guild(payload.guild_id)
28+
member = guild.get_member(payload.user_id)
29+
channel = self.bot.get_channel(payload.channel_id)
30+
message = await channel.fetch_message(payload.message_id)
31+
emoji = str(payload.emoji)
32+
33+
db_club = Club.get_or_none(Club.message_autorole_id, message.id)
34+
35+
if not db_club:
36+
return
37+
38+
elif emoji != "✅":
39+
await message.remove_reaction(payload.emoji, member)
40+
41+
await self.club_service.add_member(db_club, member)
42+
43+
@commands.Cog.listener()
44+
async def on_raw_reaction_remove(self, payload):
45+
if payload.guild_id is None:
46+
return
47+
48+
guild = self.bot.get_guild(payload.guild_id)
49+
member = guild.get_member(payload.user_id)
50+
channel = self.bot.get_channel(payload.channel_id)
51+
message = await channel.fetch_message(payload.message_id)
52+
emoji = str(payload.emoji)
53+
54+
db_club = Club.get_or_none(Club.message_autorole_id, message.id)
55+
56+
if not db_club or emoji != "✅":
57+
await member.send("nonon")
58+
return
59+
60+
await self.club_service.remove_member(db_club, member, _former=0)

src/db/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ class Club(DbBaseModel):
3636
treasurer_role_id = peewee.IntegerField(unique=True)
3737
member_role_id = peewee.IntegerField(unique=True)
3838
former_member_role_id = peewee.IntegerField(unique=True)
39+
message_autorole_id = peewee.IntegerField(unique=True)
3940

4041

4142
def init():

src/main.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from src.commands.club import ClubCog
1616
from src.commands.misc import MiscCog
1717
from src.commands.news import NewsCog
18+
from src.commands.role import RoleCog
1819
from src.settings import BASE_DIR, Settings
1920

2021
if TYPE_CHECKING:
@@ -38,6 +39,7 @@ async def setup_hook(self):
3839
await self.add_cog(NewsCog(self))
3940
await self.add_cog(AdminCog(self))
4041
await self.add_cog(MiscCog())
42+
await self.add_cog(RoleCog(self))
4143

4244
async def on_ready(self):
4345
await self.wait_until_ready()

src/services/club.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,14 @@ async def add_member(self, club: Club, member: Member):
130130
)
131131
await member.add_roles(role, reason=f"{member.name} joined club {club.name}")
132132

133-
async def remove_member(self, club: Club, member: Member):
133+
async def remove_member(self, club: Club, member: Member, _former=1):
134134
role = utils.get(member.guild.roles, id=club.member_role_id)
135135
former = utils.get(member.guild.roles, id=club.former_member_role_id)
136136
await member.remove_roles(role, reason=f"{member.name} left club {club.name}")
137-
await member.add_roles(former, reason=f"{member.name} left club {club.name}")
137+
if _former == 1:
138+
await member.add_roles(
139+
former, reason=f"{member.name} left club {club.name}"
140+
)
138141

139142
async def handover(
140143
self, club: ClubSchema, new_pres: Member, new_treso: Member, guild: Guild

0 commit comments

Comments
 (0)