Add list of unavailable players in event message
parent
77ed205f57
commit
0396e2409a
|
@ -1,6 +1,7 @@
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
import requests
|
import requests
|
||||||
import threading
|
import threading
|
||||||
|
from models.player import Player
|
||||||
from sqlalchemy.orm import mapped_column, relationship, scoped_session
|
from sqlalchemy.orm import mapped_column, relationship, scoped_session
|
||||||
from sqlalchemy.orm.attributes import Mapped
|
from sqlalchemy.orm.attributes import Mapped
|
||||||
from sqlalchemy.orm.properties import ForeignKey
|
from sqlalchemy.orm.properties import ForeignKey
|
||||||
|
@ -77,10 +78,20 @@ class Event(app_db.BaseModel):
|
||||||
|
|
||||||
def get_discord_content(self):
|
def get_discord_content(self):
|
||||||
start_timestamp = int(self.start_time.timestamp())
|
start_timestamp = int(self.start_time.timestamp())
|
||||||
players = list(self.players)
|
|
||||||
|
# TODO: write this to use a single query
|
||||||
|
players: list[PlayerEvent] = list(self.players)
|
||||||
|
non_players = app_db.db_session.query(
|
||||||
|
PlayerTeam
|
||||||
|
).where(
|
||||||
|
PlayerTeam.team_id == self.team_id,
|
||||||
|
PlayerTeam.player_id.not_in([p.player_id for p in players])
|
||||||
|
).all()
|
||||||
|
|
||||||
# players should be sorted by their role, leaving no-role players last
|
# players should be sorted by their role, leaving no-role players last
|
||||||
players.sort(key=lambda p: p.role.role.value if p.role else 1023)
|
players.sort(key=lambda p: p.role.role.value if p.role else 1023)
|
||||||
players_info = []
|
players_info = []
|
||||||
|
non_players_info = ""
|
||||||
matchings = self.get_maximum_matching()
|
matchings = self.get_maximum_matching()
|
||||||
ringers_needed = 6 - matchings
|
ringers_needed = 6 - matchings
|
||||||
|
|
||||||
|
@ -123,6 +134,16 @@ class Event(app_db.BaseModel):
|
||||||
|
|
||||||
players_info.append(player_info)
|
players_info.append(player_info)
|
||||||
|
|
||||||
|
non_players_info = "<:blank:1373226295651209226> ❌ "
|
||||||
|
non_players_info += ", ".join(
|
||||||
|
[
|
||||||
|
f"<@{player.player.discord_id}>"
|
||||||
|
if player.player.discord_id
|
||||||
|
else player.player.username
|
||||||
|
for player in non_players
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
ringers_needed_msg = ""
|
ringers_needed_msg = ""
|
||||||
if ringers_needed > 0:
|
if ringers_needed > 0:
|
||||||
if ringers_needed == 1:
|
if ringers_needed == 1:
|
||||||
|
@ -137,6 +158,7 @@ class Event(app_db.BaseModel):
|
||||||
"",
|
"",
|
||||||
f"<t:{start_timestamp}:f>",
|
f"<t:{start_timestamp}:f>",
|
||||||
"\n".join(players_info),
|
"\n".join(players_info),
|
||||||
|
non_players_info,
|
||||||
f"Maximum roles filled: {matchings}" + ringers_needed_msg,
|
f"Maximum roles filled: {matchings}" + ringers_needed_msg,
|
||||||
#"",
|
#"",
|
||||||
#"[Confirm attendance here]" +
|
#"[Confirm attendance here]" +
|
||||||
|
|
Loading…
Reference in New Issue