Record points in the command.

This commit is contained in:
2024-05-09 20:34:16 -04:00
parent 4f9524a4c1
commit 084c9df65c
2 changed files with 21 additions and 10 deletions
+16 -4
View File
@@ -7,6 +7,7 @@ from discord import TextInputStyle
from nextcord.ext import commands from nextcord.ext import commands
from config import DakinyConfig from config import DakinyConfig
from utils import record_event_host, record_event_participation
class RecordCog(commands.Cog, name="Record Commands"): class RecordCog(commands.Cog, name="Record Commands"):
@@ -70,7 +71,7 @@ class RecordCog(commands.Cog, name="Record Commands"):
await interaction.response.send_message( await interaction.response.send_message(
"Fill out event details and select all members who participated!", "Fill out event details and select all members who participated!",
view=EventView(name, self.bot.config), view=EventView(name, self.bot.config, host.id),
ephemeral=True, ephemeral=True,
embed=embed, embed=embed,
) )
@@ -84,11 +85,12 @@ class EventView(nextcord.ui.View):
Also contains a UserSelect object to pick discord members. Also contains a UserSelect object to pick discord members.
""" """
def __init__(self, name: str, config: DakinyConfig): def __init__(self, name: str, config: DakinyConfig, host_id: int):
super().__init__() super().__init__()
self.name: str = name self.name: str = name
self.config: DakinyConfig = config self.config: DakinyConfig = config
self.host_id: int = host_id
self.event_participants = ParticipantSelect() self.event_participants = ParticipantSelect()
@@ -130,8 +132,18 @@ class EventView(nextcord.ui.View):
await interaction.response.edit_message( await interaction.response.edit_message(
content="Event has been submitted.", view=None, embed=None content="Event has been submitted.", view=None, embed=None
) )
# TODO send point information to database. Probably will make functions to do the separate
# things. Want to try turning the embed into a dict. discord_users: list[str] = [
str(user.id) for user in self.event_participants.values.members
]
non_discord_users: list[str] = (
interaction.message.embeds[0].fields[1].value.split("\n")
)
record_event_participation(self.config, discord_users, True)
record_event_participation(self.config, non_discord_users, False)
record_event_host(self.config, self.host_id)
self.stop() self.stop()
+5 -6
View File
@@ -357,22 +357,21 @@ def record_event_participation(config: DakinyConfig, users: list[str], is_member
session.commit() session.commit()
def record_event_host(config: DakinyConfig, user: str, is_member: bool): def record_event_host(config: DakinyConfig, user: int):
""" """
Adds host points to the given user. Checks if they don't exist in order to make a new entry, otherwise adds points Adds host points to the given user. Checks if they don't exist in order to make a new entry, otherwise adds points
to the existing value. to the existing value.
Args: Args:
config (DakinyConfig): Dakiny config for getting points config (DakinyConfig): Dakiny config for getting points
user (str): User that hosted. user (int): Id of user that hosted.
is_member (bool): whether the user is a discord member or not
""" """
cycle = get_current_cycle(config) cycle = get_current_cycle(config)
host_point_value = config.params.event_host_points host_point_value = config.params.event_host_points
with Session(engine) as session: with Session(engine) as session:
stmt = ( stmt = (
select(ParticipationPoints) select(ParticipationPoints)
.where(ParticipationPoints.UserId == user) .where(ParticipationPoints.UserId == str(user))
.where(ParticipationPoints.Cycle == cycle) .where(ParticipationPoints.Cycle == cycle)
) )
@@ -380,8 +379,8 @@ def record_event_host(config: DakinyConfig, user: str, is_member: bool):
if points is None: if points is None:
new_points = ParticipationPoints( new_points = ParticipationPoints(
Cycle=cycle, Cycle=cycle,
UserId=user, UserId=str(user),
DiscordMember=is_member, DiscordMember=True,
Points=host_point_value, Points=host_point_value,
) )
session.add(new_points) session.add(new_points)