@@ -179,7 +179,7 @@ async def get_random_welcome_message(
179179 async def _perform_induction (
180180 self ,
181181 ctx : "TeXBotApplicationContext" ,
182- induction_member : discord .Member ,
182+ induction_member : discord .Member | discord . User ,
183183 * ,
184184 silent : bool ,
185185 ) -> None :
@@ -188,9 +188,21 @@ async def _perform_induction(
188188 main_guild : discord .Guild = self .bot .main_guild
189189 guest_role : discord .Role = await self .bot .guest_role
190190
191+ main_guild_member : discord .Member | None = main_guild .get_member (induction_member .id )
192+ if not main_guild_member :
193+ await ctx .respond (
194+ (
195+ ":information_source: No changes made. User cannot be inducted "
196+ "because they have left the server "
197+ ":information_source:"
198+ ),
199+ ephemeral = True ,
200+ )
201+ return
202+
191203 await ctx .defer (ephemeral = True )
192204 async with ctx .typing ():
193- logger .debug ("Inducting member %s, silent=%s" , induction_member , silent )
205+ logger .debug ("Inducting member %s, silent=%s" , main_guild_member , silent )
194206
195207 INDUCT_AUDIT_MESSAGE : Final [str ] = (
196208 f'{ ctx .user } used TeX Bot slash-command: "/induct"'
@@ -200,13 +212,13 @@ async def _perform_induction(
200212 main_guild .text_channels , name = "introductions"
201213 )
202214
203- if induction_member .bot :
215+ if main_guild_member .bot :
204216 await self .command_send_error (
205217 ctx , message = "Member cannot be inducted because they are a bot."
206218 )
207219 return
208220
209- if guest_role in induction_member .roles :
221+ if guest_role in main_guild_member .roles :
210222 await ctx .respond (
211223 content = (
212224 ":information_source: No changes made. "
@@ -218,25 +230,25 @@ async def _perform_induction(
218230
219231 if not silent :
220232 await (await self .bot .general_channel ).send (
221- f"{ await self .get_random_welcome_message (induction_member )} :tada:\n "
233+ f"{ await self .get_random_welcome_message (main_guild_member )} :tada:\n "
222234 f"Remember to grab your roles in {
223235 await self .bot .get_mention_string (self .bot .roles_channel )
224236 } and say hello to everyone here! :wave:"
225237 )
226238
227- await induction_member .add_roles (guest_role , reason = INDUCT_AUDIT_MESSAGE )
239+ await main_guild_member .add_roles (guest_role , reason = INDUCT_AUDIT_MESSAGE )
228240
229241 news_role : discord .Role | None = discord .utils .get (main_guild .roles , name = "News" )
230- if news_role and news_role not in induction_member .roles :
231- await induction_member .add_roles (news_role , reason = INDUCT_AUDIT_MESSAGE )
242+ if news_role and news_role not in main_guild_member .roles :
243+ await main_guild_member .add_roles (news_role , reason = INDUCT_AUDIT_MESSAGE )
232244
233245 try :
234246 applicant_role : discord .Role = await ctx .bot .applicant_role
235247 except ApplicantRoleDoesNotExistError :
236248 pass
237249 else :
238- if applicant_role in induction_member .roles :
239- await induction_member .remove_roles (
250+ if applicant_role in main_guild_member .roles :
251+ await main_guild_member .remove_roles (
240252 applicant_role , reason = INDUCT_AUDIT_MESSAGE
241253 )
242254
@@ -247,7 +259,7 @@ async def _perform_induction(
247259 if intro_channel :
248260 recent_message : discord .Message
249261 for recent_message in await intro_channel .history (limit = 30 ).flatten ():
250- if recent_message .author .id == induction_member .id :
262+ if recent_message .author .id == main_guild_member .id :
251263 try :
252264 if tex_emoji :
253265 await recent_message .add_reaction (tex_emoji )
@@ -366,19 +378,7 @@ async def non_silent_user_induct(
366378 Therefore, it will induct a given member into your group's Discord guild
367379 by giving them the "Guest" role.
368380 """
369- main_guild_member : discord .Member | None = self .bot .main_guild .get_member (member .id )
370- if not main_guild_member :
371- await ctx .respond (
372- (
373- ":information_source: No changes made. User cannot be inducted "
374- "because they have left the server "
375- ":information_source:"
376- ),
377- ephemeral = True ,
378- )
379- return
380-
381- await self ._perform_induction (ctx , main_guild_member , silent = False )
381+ await self ._perform_induction (ctx , member , silent = False )
382382
383383 @discord .user_command (name = "Silently Induct User" )
384384 @CommandChecks .check_interaction_user_has_committee_role
@@ -394,19 +394,7 @@ async def silent_user_induct(
394394 Therefore, it will induct a given member into your group's Discord guild
395395 by giving them the "Guest" role, only without broadcasting a welcome message.
396396 """
397- main_guild_member : discord .Member | None = self .bot .main_guild .get_member (member .id )
398- if not main_guild_member :
399- await ctx .respond (
400- (
401- ":information_source: No changes made. User cannot be inducted "
402- "because they have left the server "
403- ":information_source:"
404- ),
405- ephemeral = True ,
406- )
407- return
408-
409- await self ._perform_induction (ctx , main_guild_member , silent = True )
397+ await self ._perform_induction (ctx , member , silent = True )
410398
411399 @discord .message_command (name = "Induct Message Author" )
412400 @CommandChecks .check_interaction_user_has_committee_role
0 commit comments