Skip to content

Commit 02ec97a

Browse files
Refactor
1 parent ca77db2 commit 02ec97a

1 file changed

Lines changed: 25 additions & 37 deletions

File tree

cogs/induct.py

Lines changed: 25 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)