1616 fetch_community_group_members_count ,
1717 is_id_a_community_group_member ,
1818)
19+ from utils .tex_bot import TeXBot
1920
2021if TYPE_CHECKING :
2122 from collections .abc import Sequence
6162class MakeMemberBaseCog (TeXBotBaseCog ):
6263 """Base cog class for make member interactions."""
6364
64- async def _perform_make_member (
65+ async def perform_make_member (
6566 self , user : discord .User | discord .Member , raw_group_member_id : str
66- ) -> tuple [ bool , str ] :
67+ ) -> str :
6768 """Perform the actions to make a user a member."""
6869 member_role : discord .Role = await self .bot .member_role
6970 discord_member : discord .Member = await self .bot .get_main_guild_member (user )
@@ -73,32 +74,33 @@ async def _perform_make_member(
7374 )
7475
7576 if not re .fullmatch (r"\A\d{7}\Z" , raw_group_member_id ):
76- return False , INVALID_GROUP_MEMBER_ID_MESSAGE
77+ return INVALID_GROUP_MEMBER_ID_MESSAGE
7778
7879 try :
7980 group_member_id : int = int (raw_group_member_id )
8081 except ValueError :
81- return False , INVALID_GROUP_MEMBER_ID_MESSAGE
82+ return INVALID_GROUP_MEMBER_ID_MESSAGE
8283
8384 if member_role in discord_member .roles :
8485 return (
85- False ,
86- (
87- ":information_source: No changes made. "
88- "You're already a member - why are you trying this again? "
89- ":information_source:"
90- ),
86+ ":information_source: No changes made. "
87+ "You're already a member - why are you trying this again? "
88+ ":information_source:"
9189 )
9290
9391 if await GroupMadeMember .objects .filter (
9492 hashed_group_member_id = GroupMadeMember .hash_group_member_id (
9593 group_member_id , self .bot .group_member_id_type
9694 )
9795 ).aexists ():
98- return False , "This student ID has already been used."
96+ return (
97+ ":information_source: This student ID has already been used. "
98+ "Please contact a committee member if you think this is a mistake."
99+ " :information_source:"
100+ )
99101
100102 if not await is_id_a_community_group_member (member_id = group_member_id ):
101- return False , (
103+ return (
102104 f"You must be a member of { self .bot .group_full_name } "
103105 "to use this command.\n "
104106 f"The provided { _GROUP_MEMBER_ID_ARGUMENT_NAME } must match "
@@ -151,7 +153,7 @@ async def _perform_make_member(
151153 reason = f"{ discord_member } used TeX-Bot to become a member." ,
152154 )
153155
154- return True , " Successfully made you a member!"
156+ return ":information_source: Successfully made you a member!"
155157
156158
157159class MakeMemberCommandCog (MakeMemberBaseCog ):
@@ -205,8 +207,8 @@ async def make_member(
205207 """
206208 await ctx .defer (ephemeral = True )
207209
208- with ctx .typing ():
209- _ , message = await self ._perform_make_member (
210+ async with ctx .typing ():
211+ message = await self .perform_make_member (
210212 user = ctx .user , raw_group_member_id = raw_group_member_id
211213 )
212214
@@ -232,13 +234,13 @@ async def member_count(self, ctx: "TeXBotApplicationContext") -> None:
232234 )
233235
234236
235- class MakeMemberModalActual (Modal , MakeMemberBaseCog ):
237+ class MakeMemberModalActual (Modal ):
236238 """A discord.Modal containing a the input box for make member user interaction."""
237239
238240 @override
239241 def __init__ (self , bot : "TeXBot" ) -> None :
240242 super ().__init__ (title = "Make Member Modal" )
241- self .bot = bot
243+ self .bot : TeXBot = bot
242244 self .add_item (
243245 discord .ui .InputText (
244246 label = "Student ID" ,
@@ -271,7 +273,21 @@ async def callback(self, interaction: discord.Interaction) -> None:
271273
272274 await interaction .response .defer (ephemeral = True )
273275
274- _ , message = await self ._perform_make_member (
276+ cog : discord .Cog | None = self .bot .get_cog ("MakeMemberCommandCog" )
277+ if not cog or not isinstance (cog , MakeMemberCommandCog ):
278+ await interaction .followup .send (
279+ content = "Something went wrong, contact a committee member if this persists." ,
280+ ephemeral = True ,
281+ )
282+ logger .error (
283+ "MakeMemberModal could not find MakeMemberCommandCog in bot's cogs. "
284+ "Make sure MakeMemberCommandCog is loaded. "
285+ "Current cogs: %s" ,
286+ list (self .bot .cogs .keys ()),
287+ )
288+ return
289+
290+ message = await cog .perform_make_member (
275291 user = interaction .user , raw_group_member_id = raw_student_id
276292 )
277293
0 commit comments