@@ -63,7 +63,7 @@ class MakeMemberBaseCog(TeXBotBaseCog):
6363
6464 async def perform_make_member (
6565 self , user : discord .User | discord .Member , raw_group_member_id : str
66- ) -> str :
66+ ) -> tuple [ bool , str ] :
6767 """Perform the actions to make a user a member."""
6868 member_role : discord .Role = await self .bot .member_role
6969 discord_member : discord .Member = await self .bot .get_main_guild_member (user )
@@ -73,15 +73,16 @@ async def perform_make_member(
7373 )
7474
7575 if not re .fullmatch (r"\A\d{7}\Z" , raw_group_member_id ):
76- return INVALID_GROUP_MEMBER_ID_MESSAGE
76+ return False , INVALID_GROUP_MEMBER_ID_MESSAGE
7777
7878 try :
7979 group_member_id : int = int (raw_group_member_id )
8080 except ValueError :
81- return INVALID_GROUP_MEMBER_ID_MESSAGE
81+ return False , INVALID_GROUP_MEMBER_ID_MESSAGE
8282
8383 if member_role in discord_member .roles :
8484 return (
85+ False ,
8586 ":information_source: No changes made. "
8687 "You're already a member - why are you trying this again? "
8788 ":information_source:"
@@ -93,13 +94,15 @@ async def perform_make_member(
9394 )
9495 ).aexists ():
9596 return (
97+ False ,
9698 ":information_source: This student ID has already been used. "
9799 "Please contact a committee member if you think this is a mistake."
98100 " :information_source:"
99101 )
100102
101103 if not await is_id_a_community_group_member (member_id = group_member_id ):
102104 return (
105+ False ,
103106 f"You must be a member of { self .bot .group_full_name } "
104107 "to use this command.\n "
105108 f"The provided { _GROUP_MEMBER_ID_ARGUMENT_NAME } must match "
@@ -152,7 +155,7 @@ async def perform_make_member(
152155 reason = f"{ discord_member } used TeX-Bot to become a member." ,
153156 )
154157
155- return ":information_source: Successfully made you a member!"
158+ return True , ":information_source: Successfully made you a member!"
156159
157160
158161class MakeMemberCommandCog (MakeMemberBaseCog ):
@@ -207,10 +210,14 @@ async def make_member(
207210 await ctx .defer (ephemeral = True )
208211
209212 async with ctx .typing ():
210- message : str = await self .perform_make_member (
213+ status , message = await self .perform_make_member (
211214 user = ctx .user , raw_group_member_id = raw_group_member_id
212215 )
213216
217+ if not status :
218+ await self .command_send_error (ctx = ctx , message = message )
219+ return
220+
214221 await ctx .followup .send (content = message , ephemeral = True )
215222
216223
@@ -286,7 +293,7 @@ async def callback(self, interaction: discord.Interaction) -> None:
286293 )
287294 return
288295
289- message : str = await cog .perform_make_member (
296+ _ , message = await cog .perform_make_member (
290297 user = interaction .user , raw_group_member_id = raw_student_id
291298 )
292299
0 commit comments