Compare commits
9
Commits
v1.6.7
...
8fb59ba394
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8fb59ba394 | ||
|
|
7b521893d3 | ||
|
|
19e654aed0 | ||
|
|
0d38bc82c4 | ||
|
|
b64e2471fa | ||
|
|
0b5330f7ca | ||
|
|
4e64eac176 | ||
|
|
c90ddf42c3 | ||
|
|
9109ac53b3 |
@@ -65,7 +65,7 @@ class RecordCog(commands.Cog, name="Record Commands"):
|
|||||||
)
|
)
|
||||||
|
|
||||||
@record.subcommand(description="Record a miscellaneous point for a clan member.")
|
@record.subcommand(description="Record a miscellaneous point for a clan member.")
|
||||||
async def point( # noqa: PLR0913
|
async def point(
|
||||||
self,
|
self,
|
||||||
interaction: nextcord.Interaction,
|
interaction: nextcord.Interaction,
|
||||||
activity: str = nextcord.SlashOption(
|
activity: str = nextcord.SlashOption(
|
||||||
@@ -140,7 +140,9 @@ class RecordCog(commands.Cog, name="Record Commands"):
|
|||||||
self.bot.config.params.event_post_channel_id
|
self.bot.config.params.event_post_channel_id
|
||||||
)
|
)
|
||||||
|
|
||||||
msg = f"<@{interaction.user.id}> has given {recipient_str} points for the {activity} activity. Justification: {justification}." # noqa: E501
|
msg = f"<@{interaction.user.id}> has given {recipient_str} points for the {activity} activity. Justification: {justification}" # noqa: E501
|
||||||
|
if not msg.endswith("."):
|
||||||
|
msg += "."
|
||||||
await event_channel.send(msg)
|
await event_channel.send(msg)
|
||||||
await interaction.response.send_message("Point has been added.", ephemeral=True)
|
await interaction.response.send_message("Point has been added.", ephemeral=True)
|
||||||
|
|
||||||
|
|||||||
+10
-8
@@ -7,7 +7,7 @@ from sqlalchemy import select
|
|||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
from database_setup.sql_data_classes import (
|
from database_setup.sql_data_classes import (
|
||||||
ParticipationPoints,
|
EventPoints,
|
||||||
Presences,
|
Presences,
|
||||||
Votes,
|
Votes,
|
||||||
engine,
|
engine,
|
||||||
@@ -49,14 +49,12 @@ class ViewCog(commands.Cog, name="View Commands"):
|
|||||||
with Session(engine) as session:
|
with Session(engine) as session:
|
||||||
if quarter_name:
|
if quarter_name:
|
||||||
ppdf = pd.read_sql_query(
|
ppdf = pd.read_sql_query(
|
||||||
sql=session.query(ParticipationPoints)
|
sql=session.query(EventPoints).where(EventPoints.Cycle.startswith(quarter_name)).statement,
|
||||||
.where(ParticipationPoints.Cycle.startswith(quarter_name))
|
|
||||||
.statement,
|
|
||||||
con=engine,
|
con=engine,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
ppdf = pd.read_sql_query(
|
ppdf = pd.read_sql_query(
|
||||||
sql=session.query(ParticipationPoints).statement,
|
sql=session.query(EventPoints).statement,
|
||||||
con=engine,
|
con=engine,
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -70,14 +68,18 @@ class ViewCog(commands.Cog, name="View Commands"):
|
|||||||
content += f"**{cycle}**\n"
|
content += f"**{cycle}**\n"
|
||||||
unsorted_all = cycles.get_group(cycle).groupby("DiscordMember")
|
unsorted_all = cycles.get_group(cycle).groupby("DiscordMember")
|
||||||
members = unsorted_all.get_group(name=True)
|
members = unsorted_all.get_group(name=True)
|
||||||
non_members = unsorted_all.get_group(name=False)
|
|
||||||
|
# there can be no non-discord members sometimes.
|
||||||
|
try:
|
||||||
|
sorted_non_members = unsorted_all.get_group(name=False).sort_values(by="UserId")
|
||||||
|
except KeyError:
|
||||||
|
sorted_non_members = None
|
||||||
sorted_members = members.sort_values(
|
sorted_members = members.sort_values(
|
||||||
by="UserId",
|
by="UserId",
|
||||||
key=lambda user_ids: (
|
key=lambda user_ids: (
|
||||||
[interaction.guild.get_member(int(user_id)).display_name.lower() for user_id in user_ids]
|
[interaction.guild.get_member(int(user_id)).display_name.lower() for user_id in user_ids]
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
sorted_non_members = non_members.sort_values(by="UserId")
|
|
||||||
sorted_all = pd.concat([sorted_members, sorted_non_members], ignore_index=True, sort=False)
|
sorted_all = pd.concat([sorted_members, sorted_non_members], ignore_index=True, sort=False)
|
||||||
for row in sorted_all.itertuples():
|
for row in sorted_all.itertuples():
|
||||||
userid = row.UserId
|
userid = row.UserId
|
||||||
@@ -199,7 +201,7 @@ class ViewCog(commands.Cog, name="View Commands"):
|
|||||||
quarter_name (str): String to run autocomplete on.
|
quarter_name (str): String to run autocomplete on.
|
||||||
"""
|
"""
|
||||||
with Session(engine) as session:
|
with Session(engine) as session:
|
||||||
stmt = select(ParticipationPoints.Cycle).distinct()
|
stmt = select(EventPoints.Cycle).distinct()
|
||||||
quarters = session.scalars(stmt)
|
quarters = session.scalars(stmt)
|
||||||
|
|
||||||
# if empty compare string
|
# if empty compare string
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ class DailyLoop(commands.Cog, name="Daily Loop"):
|
|||||||
|
|
||||||
# kandy's 1% chance
|
# kandy's 1% chance
|
||||||
if random.randint(0, 99) == 0: # noqa: S311 isn't cryptography related.
|
if random.randint(0, 99) == 0: # noqa: S311 isn't cryptography related.
|
||||||
birthday_list.append(239547993106284544)
|
birthday_list.append(KANDY)
|
||||||
|
|
||||||
today = datetime.now(tz=UTC).date()
|
today = datetime.now(tz=UTC).date()
|
||||||
birthday = f"{today.month}/{today.day}"
|
birthday = f"{today.month}/{today.day}"
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ CREATE TABLE Presences (
|
|||||||
Presence varchar(100) not null
|
Presence varchar(100) not null
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE ParticipationPoints (
|
CREATE TABLE EventPoints (
|
||||||
Cycle varchar(30) not null,
|
Cycle varchar(30) not null,
|
||||||
UserId varchar(32) not null,
|
UserId varchar(32) not null,
|
||||||
DiscordMember boolean not null,
|
DiscordMember boolean not null,
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ CouncilMembers = Base.classes.CouncilMembers
|
|||||||
ElectionInformation = Base.classes.ElectionInformation
|
ElectionInformation = Base.classes.ElectionInformation
|
||||||
EventPointsLimit = Base.classes.EventPointsLimit
|
EventPointsLimit = Base.classes.EventPointsLimit
|
||||||
Messages = Base.classes.Messages
|
Messages = Base.classes.Messages
|
||||||
ParticipationPoints = Base.classes.ParticipationPoints
|
EventPoints = Base.classes.EventPoints
|
||||||
Presences = Base.classes.Presences
|
Presences = Base.classes.Presences
|
||||||
UserBirthday = Base.classes.UserBirthday
|
UserBirthday = Base.classes.UserBirthday
|
||||||
Votes = Base.classes.Votes
|
Votes = Base.classes.Votes
|
||||||
|
|||||||
+1
-1
@@ -21,7 +21,7 @@ setuptools = "^70.0.0"
|
|||||||
|
|
||||||
|
|
||||||
[tool.poetry.group.dev.dependencies]
|
[tool.poetry.group.dev.dependencies]
|
||||||
ruff = "^0.4.5"
|
ruff = "^0.6.3"
|
||||||
|
|
||||||
[build-system]
|
[build-system]
|
||||||
requires = ["poetry-core"]
|
requires = ["poetry-core"]
|
||||||
|
|||||||
@@ -15,9 +15,9 @@ from sqlalchemy.orm import Session
|
|||||||
from config import DakinyConfig
|
from config import DakinyConfig
|
||||||
from database_setup.sql_data_classes import (
|
from database_setup.sql_data_classes import (
|
||||||
CouncilMembers,
|
CouncilMembers,
|
||||||
|
EventPoints,
|
||||||
EventPointsLimit,
|
EventPointsLimit,
|
||||||
Messages,
|
Messages,
|
||||||
ParticipationPoints,
|
|
||||||
Votes,
|
Votes,
|
||||||
engine,
|
engine,
|
||||||
)
|
)
|
||||||
@@ -318,16 +318,12 @@ def record_event_points(config: DakinyConfig, users: Sequence[str], add_points:
|
|||||||
quarter_name = get_quarter_name(config)
|
quarter_name = get_quarter_name(config)
|
||||||
with Session(engine) as session:
|
with Session(engine) as session:
|
||||||
for user in users:
|
for user in users:
|
||||||
stmt = (
|
stmt = select(EventPoints).where(EventPoints.UserId == user).where(EventPoints.Cycle == quarter_name)
|
||||||
select(ParticipationPoints)
|
|
||||||
.where(ParticipationPoints.UserId == user)
|
|
||||||
.where(ParticipationPoints.Cycle == quarter_name)
|
|
||||||
)
|
|
||||||
|
|
||||||
points = session.scalar(stmt)
|
points = session.scalar(stmt)
|
||||||
if points is None:
|
if points is None:
|
||||||
add_points = get_allowed_points(session, config.params.event_points_weekly_limit, user, add_points)
|
add_points = get_allowed_points(session, config.params.event_points_weekly_limit, user, add_points)
|
||||||
new_points = ParticipationPoints(
|
new_points = EventPoints(
|
||||||
Cycle=quarter_name,
|
Cycle=quarter_name,
|
||||||
UserId=user,
|
UserId=user,
|
||||||
DiscordMember=is_member,
|
DiscordMember=is_member,
|
||||||
@@ -371,11 +367,7 @@ def get_allowed_points(session: Session, points_limit: int, user: str, points: i
|
|||||||
add_points = points
|
add_points = points
|
||||||
session.add(new_limit)
|
session.add(new_limit)
|
||||||
else:
|
else:
|
||||||
add_points = (
|
add_points = points if limit.Points + points <= points_limit else (max(0, points_limit - limit.Points))
|
||||||
points
|
|
||||||
if limit.Points + points <= points_limit
|
|
||||||
else (max(0, points_limit - limit.Points))
|
|
||||||
)
|
|
||||||
limit.Points += add_points
|
limit.Points += add_points
|
||||||
|
|
||||||
session.commit()
|
session.commit()
|
||||||
|
|||||||
Reference in New Issue
Block a user