Compare commits
7
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
abb50d71b4 | ||
|
|
7409e2fd2d | ||
|
|
6a67804937 | ||
|
|
4f4d76d151 | ||
|
|
f3985b5d21 | ||
|
|
142cc337a0 | ||
|
|
fd1d1c075e |
@@ -1,6 +1,5 @@
|
|||||||
"""Main file for bot."""
|
"""Main file for bot."""
|
||||||
|
|
||||||
import logging
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
import nextcord
|
import nextcord
|
||||||
@@ -16,12 +15,6 @@ from .DakinySettings import settings
|
|||||||
|
|
||||||
birthday_list: list[int] = []
|
birthday_list: list[int] = []
|
||||||
|
|
||||||
logger = logging.getLogger("nextcord")
|
|
||||||
logger.setLevel(logging.DEBUG)
|
|
||||||
handler = logging.FileHandler(filename="nextcord.log", encoding="utf-8", mode="w")
|
|
||||||
handler.setFormatter(logging.Formatter("%(asctime)s:%(levelname)s:%(name)s: %(message)s"))
|
|
||||||
logger.addHandler(handler)
|
|
||||||
|
|
||||||
|
|
||||||
def run() -> None:
|
def run() -> None:
|
||||||
"""Builds and runs bot."""
|
"""Builds and runs bot."""
|
||||||
|
|||||||
@@ -5,9 +5,6 @@ from datetime import UTC, datetime, timedelta
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
import nextcord
|
import nextcord
|
||||||
from sqlalchemy import select, true, update
|
|
||||||
from sqlalchemy.orm import Session
|
|
||||||
|
|
||||||
from dakiny_bot.classes.nominate_highcouncil_views import NominateHighCouncilView
|
from dakiny_bot.classes.nominate_highcouncil_views import NominateHighCouncilView
|
||||||
from dakiny_bot.classes.nominate_views import NominateView
|
from dakiny_bot.classes.nominate_views import NominateView
|
||||||
from dakiny_bot.classes.voting_highcouncil_views import VoteHighcouncilView
|
from dakiny_bot.classes.voting_highcouncil_views import VoteHighcouncilView
|
||||||
@@ -19,6 +16,7 @@ from dakiny_bot.database.sql_data_classes import (
|
|||||||
Votes,
|
Votes,
|
||||||
engine,
|
engine,
|
||||||
)
|
)
|
||||||
|
from dakiny_bot.logger import dakiny_logger
|
||||||
from dakiny_bot.utils import (
|
from dakiny_bot.utils import (
|
||||||
TEMPLATES_DIR,
|
TEMPLATES_DIR,
|
||||||
VoteType,
|
VoteType,
|
||||||
@@ -28,6 +26,8 @@ from dakiny_bot.utils import (
|
|||||||
get_datetime,
|
get_datetime,
|
||||||
get_election_name,
|
get_election_name,
|
||||||
)
|
)
|
||||||
|
from sqlalchemy import select, true, update
|
||||||
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
REQUIRED_VOTES_TO_BE_ELECTED = 3
|
REQUIRED_VOTES_TO_BE_ELECTED = 3
|
||||||
|
|
||||||
@@ -144,20 +144,29 @@ class Election:
|
|||||||
async def check_date(self) -> None:
|
async def check_date(self) -> None:
|
||||||
"""Function checks current date to see if something needs to be run."""
|
"""Function checks current date to see if something needs to be run."""
|
||||||
today = datetime.now(tz=UTC)
|
today = datetime.now(tz=UTC)
|
||||||
|
dakiny_logger.debug("Checking date.")
|
||||||
|
|
||||||
# check all dates if action is needed
|
# check all dates if action is needed
|
||||||
if today.date() == self.election_start.date():
|
if today.date() == self.election_start.date():
|
||||||
|
dakiny_logger.debug("Election start.")
|
||||||
await self.election_start_action()
|
await self.election_start_action()
|
||||||
elif today.date() == self.voting_start.date():
|
elif today.date() == self.voting_start.date():
|
||||||
|
dakiny_logger.debug("Voting start.")
|
||||||
await self.voting_start_action()
|
await self.voting_start_action()
|
||||||
elif (self.voting_end - timedelta(3)).date() <= today.date() < self.voting_end.date():
|
elif (self.voting_end - timedelta(3)).date() <= today.date() < self.voting_end.date():
|
||||||
|
dakiny_logger.debug("Election reminder.")
|
||||||
await self.election_reminder()
|
await self.election_reminder()
|
||||||
elif today.date() == self.voting_end.date():
|
elif today.date() == self.voting_end.date():
|
||||||
|
dakiny_logger.debug("Voting end.")
|
||||||
await self.voting_end_action()
|
await self.voting_end_action()
|
||||||
elif today.date() == self.highcouncil_election_start.date():
|
elif today.date() == self.highcouncil_election_start.date():
|
||||||
|
dakiny_logger.debug("Highcouncil election start.")
|
||||||
await self.highcouncil_election_start_action()
|
await self.highcouncil_election_start_action()
|
||||||
elif today.date() == self.term_start.date():
|
elif today.date() == self.term_start.date():
|
||||||
|
dakiny_logger.debug("Term start")
|
||||||
await self.term_start_action()
|
await self.term_start_action()
|
||||||
|
else:
|
||||||
|
dakiny_logger.warning("Check date didn't do anything. This should never happen.")
|
||||||
|
|
||||||
async def election_start_action(self) -> None:
|
async def election_start_action(self) -> None:
|
||||||
"""Performs required actions for when the election cycle starts."""
|
"""Performs required actions for when the election cycle starts."""
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ from dakiny_bot.app import birthday_list
|
|||||||
from dakiny_bot.classes.election import Election
|
from dakiny_bot.classes.election import Election
|
||||||
from dakiny_bot.DakinySettings import settings
|
from dakiny_bot.DakinySettings import settings
|
||||||
from dakiny_bot.database.sql_data_classes import UserBirthday, engine
|
from dakiny_bot.database.sql_data_classes import UserBirthday, engine
|
||||||
|
from dakiny_bot.logger import dakiny_logger
|
||||||
from dakiny_bot.utils import get_active_election_cycle
|
from dakiny_bot.utils import get_active_election_cycle
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
@@ -43,8 +44,10 @@ class DailyLoop(commands.Cog, name="Daily Loop"):
|
|||||||
an active election, runs the check_date() function for the election to perform actions. Finally checks if the
|
an active election, runs the check_date() function for the election to perform actions. Finally checks if the
|
||||||
election is over to delete the current election object.
|
election is over to delete the current election object.
|
||||||
"""
|
"""
|
||||||
|
dakiny_logger.debug("Daily loop. Current election: %s.", self.current_election)
|
||||||
if self.current_election is None:
|
if self.current_election is None:
|
||||||
self.current_election = self.get_election()
|
self.current_election = self.get_election()
|
||||||
|
dakiny_logger.debug("Current election: %s.", self.current_election)
|
||||||
|
|
||||||
if self.current_election is not None:
|
if self.current_election is not None:
|
||||||
await self.current_election.check_date()
|
await self.current_election.check_date()
|
||||||
@@ -78,13 +81,17 @@ class DailyLoop(commands.Cog, name="Daily Loop"):
|
|||||||
Election: Current election cycle, None if there is no election happening.
|
Election: Current election cycle, None if there is no election happening.
|
||||||
"""
|
"""
|
||||||
cycle = get_active_election_cycle()
|
cycle = get_active_election_cycle()
|
||||||
|
dakiny_logger.debug("Current cycle: %s.", cycle)
|
||||||
|
|
||||||
# prevent exception from using cycle as an Int in an array
|
# prevent exception from using cycle as an Int in an array
|
||||||
if cycle is None:
|
if cycle is None:
|
||||||
|
dakiny_logger.info("Cycle was None. Returning without an election.")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
election = Election(cycle, self.bot.get_guild(settings.params.guild_id))
|
election = Election(cycle, self.bot.get_guild(settings.params.guild_id))
|
||||||
|
|
||||||
|
dakiny_logger.debug("Election active: %s", election.active)
|
||||||
|
|
||||||
return election if election.active else None
|
return election if election.active else None
|
||||||
|
|
||||||
def update_birthdays(self) -> None:
|
def update_birthdays(self) -> None:
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
"""Creates logger for Dakiny bot."""
|
||||||
|
|
||||||
|
import logging
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
dakiny_logger = logging.getLogger("default")
|
||||||
|
dakiny_logger.setLevel(logging.DEBUG if os.getenv("DEBUG") == "true" else logging.INFO)
|
||||||
|
handler = logging.StreamHandler(sys.stdout)
|
||||||
|
handler.setFormatter(
|
||||||
|
logging.Formatter("%(asctime)s:%(levelname)s [%(filename)s:%(lineno)s - %(funcName)20s() ] %(message)s")
|
||||||
|
)
|
||||||
|
dakiny_logger.addHandler(handler)
|
||||||
@@ -20,6 +20,7 @@ from dakiny_bot.database.sql_data_classes import (
|
|||||||
Votes,
|
Votes,
|
||||||
engine,
|
engine,
|
||||||
)
|
)
|
||||||
|
from dakiny_bot.logger import dakiny_logger
|
||||||
|
|
||||||
from .DakinySettings import settings
|
from .DakinySettings import settings
|
||||||
|
|
||||||
@@ -92,12 +93,14 @@ def get_active_election_cycle() -> int:
|
|||||||
int: cycle index for active election. None for no active cycle
|
int: cycle index for active election. None for no active cycle
|
||||||
"""
|
"""
|
||||||
today = datetime.now(tz=UTC)
|
today = datetime.now(tz=UTC)
|
||||||
|
dakiny_logger.debug("Today is %s", today)
|
||||||
|
|
||||||
for cycle, election in enumerate(settings.election_cycles):
|
for cycle, election in enumerate(settings.election_cycles):
|
||||||
if (
|
if (
|
||||||
today.date() >= get_datetime(election.election_start).date()
|
today.date() >= get_datetime(election.election_start).date()
|
||||||
and today.date() <= get_datetime(election.term_start).date()
|
and today.date() <= get_datetime(election.term_start).date()
|
||||||
):
|
):
|
||||||
|
dakiny_logger.debug("Cycle is %d", cycle)
|
||||||
return cycle
|
return cycle
|
||||||
|
|
||||||
# It isn't a current election, get the quarter
|
# It isn't a current election, get the quarter
|
||||||
@@ -114,13 +117,16 @@ def get_quarter_cycle() -> int:
|
|||||||
int: cycle index for current cycle.
|
int: cycle index for current cycle.
|
||||||
"""
|
"""
|
||||||
today = datetime.now(tz=UTC)
|
today = datetime.now(tz=UTC)
|
||||||
|
dakiny_logger.debug("Today is %s", today)
|
||||||
for cycle, election in enumerate(settings.election_cycles):
|
for cycle, election in enumerate(settings.election_cycles):
|
||||||
if (
|
if (
|
||||||
today.date() >= get_datetime(election.term_start).date()
|
today.date() >= get_datetime(election.term_start).date()
|
||||||
and today.date() <= get_datetime(election.term_end).date()
|
and today.date() <= get_datetime(election.term_end).date()
|
||||||
):
|
):
|
||||||
|
dakiny_logger.debug("Cycle is %d", cycle)
|
||||||
return cycle
|
return cycle
|
||||||
|
|
||||||
|
dakiny_logger.debug("Quarter cycle is None.")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user