Skip to content

Commit bb889b1

Browse files
Improve things
1 parent db141dc commit bb889b1

1 file changed

Lines changed: 34 additions & 18 deletions

File tree

cogs/make_member.py

Lines changed: 34 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
fetch_community_group_members_count,
1717
is_id_a_community_group_member,
1818
)
19+
from utils.tex_bot import TeXBot
1920

2021
if TYPE_CHECKING:
2122
from collections.abc import Sequence
@@ -61,9 +62,9 @@
6162
class 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

157159
class 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

Comments
 (0)