Skip to content

Commit 649667f

Browse files
Refactor for status enum
1 parent c269ba3 commit 649667f

1 file changed

Lines changed: 17 additions & 8 deletions

File tree

cogs/make_member.py

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import logging
44
import re
5+
from enum import auto, Enum
56
from typing import TYPE_CHECKING, override
67

78
import discord
@@ -58,12 +59,20 @@
5859
)
5960

6061

62+
class MakeMemberStatus(Enum):
63+
"""An Enum representing the possible statuses of a make member attempt."""
64+
65+
SUCCESS = auto()
66+
ERROR = auto()
67+
INFO = auto()
68+
69+
6170
class MakeMemberBaseCog(TeXBotBaseCog):
6271
"""Base cog class for make member interactions."""
6372

6473
async def perform_make_member(
6574
self, user: discord.User | discord.Member, raw_group_member_id: str
66-
) -> tuple[bool, str]:
75+
) -> tuple[MakeMemberStatus, str]:
6776
"""Perform the actions to make a user a member."""
6877
member_role: discord.Role = await self.bot.member_role
6978
discord_member: discord.Member = await self.bot.get_main_guild_member(user)
@@ -73,16 +82,16 @@ async def perform_make_member(
7382
)
7483

7584
if not re.fullmatch(r"\A\d{7}\Z", raw_group_member_id):
76-
return False, INVALID_GROUP_MEMBER_ID_MESSAGE
85+
return MakeMemberStatus.ERROR, INVALID_GROUP_MEMBER_ID_MESSAGE
7786

7887
try:
7988
group_member_id: int = int(raw_group_member_id)
8089
except ValueError:
81-
return False, INVALID_GROUP_MEMBER_ID_MESSAGE
90+
return MakeMemberStatus.ERROR, INVALID_GROUP_MEMBER_ID_MESSAGE
8291

8392
if member_role in discord_member.roles:
8493
return (
85-
False,
94+
MakeMemberStatus.INFO,
8695
":information_source: No changes made. "
8796
"You're already a member - why are you trying this again? "
8897
":information_source:",
@@ -94,15 +103,15 @@ async def perform_make_member(
94103
)
95104
).aexists():
96105
return (
97-
False,
106+
MakeMemberStatus.INFO,
98107
":information_source: This student ID has already been used. "
99108
"Please contact a committee member if you think this is a mistake."
100109
" :information_source:",
101110
)
102111

103112
if not await is_id_a_community_group_member(member_id=group_member_id):
104113
return (
105-
False,
114+
MakeMemberStatus.INFO,
106115
f"You must be a member of {self.bot.group_full_name} "
107116
"to use this command.\n"
108117
f"The provided {_GROUP_MEMBER_ID_ARGUMENT_NAME} must match "
@@ -155,7 +164,7 @@ async def perform_make_member(
155164
reason=f"{discord_member} used TeX-Bot to become a member.",
156165
)
157166

158-
return True, ":information_source: Successfully made you a member!"
167+
return MakeMemberStatus.SUCCESS, ":information_source: Successfully made you a member!"
159168

160169

161170
class MakeMemberCommandCog(MakeMemberBaseCog):
@@ -214,7 +223,7 @@ async def make_member(
214223
user=ctx.user, raw_group_member_id=raw_group_member_id
215224
)
216225

217-
if not status:
226+
if status == MakeMemberStatus.ERROR:
218227
await self.command_send_error(ctx=ctx, message=message)
219228
return
220229

0 commit comments

Comments
 (0)