Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
094a22f5e7 | ||
|
|
592819e028 | ||
|
|
967d41b8ef | ||
|
|
01687ae8e8 |
+2
-2
@@ -10,7 +10,7 @@ WORKDIR /home
|
||||
COPY requirements.txt requirements.txt
|
||||
|
||||
COPY config.py config.py
|
||||
COPY dakiny_bot.py dakiny_bot.py
|
||||
COPY main.py main.py
|
||||
COPY utils.py utils.py
|
||||
|
||||
COPY bot_messages bot_messages/
|
||||
@@ -23,4 +23,4 @@ RUN pip install -r requirements.txt
|
||||
# remove build deps that aren't needed to run
|
||||
# RUN apt-get -y remove python3-dev build-essential && apt-get -y autoremove
|
||||
|
||||
CMD ["python3", "-u", "./dakiny_bot.py"]
|
||||
CMD ["python3", "-u", "./main.py"]
|
||||
@@ -1,5 +1,9 @@
|
||||
# Dakiny Bot
|
||||
|
||||
Bot assumes that it always did the step before it. If the step before an action didn't happen, behavior is undefined.
|
||||
Dakiny clan's own discord bot!
|
||||
|
||||
|
||||
### Assumptions
|
||||
- For Elections: Bot assumes that it always did the step before it. If the step before an action didn't happen, behavior is undefined.
|
||||
Object creation in the middle of a cycle is only there for restarting the bot. All relevant information should already
|
||||
exist in the database.
|
||||
+25
-9
@@ -10,8 +10,8 @@ from sqlalchemy import delete, select
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from dakiny_bot import birthday_list
|
||||
from database_setup.sql_data_classes import UserBirthday, engine
|
||||
from main import birthday_list
|
||||
|
||||
|
||||
class setCog(commands.Cog, name="Set Commands"):
|
||||
@@ -30,12 +30,18 @@ class setCog(commands.Cog, name="Set Commands"):
|
||||
Parent slash command for set. Never called.
|
||||
"""
|
||||
|
||||
@set.subcommand(description="Sets your birth month and day for the Birthday Fun. Use 0/0 to remove yourself.")
|
||||
@set.subcommand(
|
||||
description="Sets your birth month and day for the Birthday Fun. Use 0/0 to remove yourself."
|
||||
)
|
||||
async def birthday(
|
||||
self,
|
||||
interaction: nextcord.Interaction,
|
||||
month: int = nextcord.SlashOption(required=True, min_value=0, max_value=12, description="Your birth month."),
|
||||
day: int = nextcord.SlashOption(required=True, min_value=0, max_value=31, description="Your birth day."),
|
||||
month: int = nextcord.SlashOption(
|
||||
required=True, min_value=0, max_value=12, description="Your birth month."
|
||||
),
|
||||
day: int = nextcord.SlashOption(
|
||||
required=True, min_value=0, max_value=31, description="Your birth day."
|
||||
),
|
||||
):
|
||||
"""
|
||||
Sets a user's birthday in the database. Removes on input 0/0. If birthday is today, adds to the birthday_list.
|
||||
@@ -50,7 +56,9 @@ class setCog(commands.Cog, name="Set Commands"):
|
||||
await interaction.response.defer(ephemeral=True)
|
||||
|
||||
if month == 0 and day == 0:
|
||||
stmt = delete(UserBirthday).where(UserBirthday.UserId == interaction.user.id)
|
||||
stmt = delete(UserBirthday).where(
|
||||
UserBirthday.UserId == interaction.user.id
|
||||
)
|
||||
with Session(engine) as session:
|
||||
session.execute(stmt)
|
||||
session.commit()
|
||||
@@ -62,14 +70,18 @@ class setCog(commands.Cog, name="Set Commands"):
|
||||
try:
|
||||
birthday = datetime(today.year, month, day)
|
||||
except ValueError:
|
||||
await interaction.followup.send(f"Invalid date: {month}/{day}.", ephemeral=True)
|
||||
await interaction.followup.send(
|
||||
f"Invalid date: {month}/{day}.", ephemeral=True
|
||||
)
|
||||
return
|
||||
|
||||
# If the birthday is today, add to birthday_list
|
||||
if today.date() == birthday.date():
|
||||
birthday_list.append(interaction.user.id)
|
||||
|
||||
new_birthday = UserBirthday(UserId=interaction.user.id, Birthday=f"{month}/{day}")
|
||||
new_birthday = UserBirthday(
|
||||
UserId=interaction.user.id, Birthday=f"{month}/{day}"
|
||||
)
|
||||
with Session(engine) as session:
|
||||
try:
|
||||
session.add(new_birthday)
|
||||
@@ -77,9 +89,13 @@ class setCog(commands.Cog, name="Set Commands"):
|
||||
except IntegrityError:
|
||||
# User already has birthday, change it instead.
|
||||
session.rollback()
|
||||
stmt = select(UserBirthday).where(UserBirthday.UserId == interaction.user.id)
|
||||
stmt = select(UserBirthday).where(
|
||||
UserBirthday.UserId == interaction.user.id
|
||||
)
|
||||
new_birthday = session.scalar(stmt)
|
||||
new_birthday.Birthday = f"{month}/{day}"
|
||||
session.commit()
|
||||
|
||||
await interaction.followup.send(f"Birthday set to {month}/{day}.", ephemeral=True)
|
||||
await interaction.followup.send(
|
||||
f"Birthday set to {month}/{day}.", ephemeral=True
|
||||
)
|
||||
|
||||
@@ -13,8 +13,8 @@ from sqlalchemy.orm import Session
|
||||
|
||||
from classes.election_cycle import ElectionCycle
|
||||
from config import DakinyConfig
|
||||
from dakiny_bot import birthday_list
|
||||
from database_setup.sql_data_classes import UserBirthday, engine
|
||||
from main import birthday_list
|
||||
from utils import get_current_election_cycle
|
||||
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ Defines cog for on message listener.
|
||||
import nextcord
|
||||
from nextcord.ext import commands
|
||||
|
||||
from dakiny_bot import birthday_list
|
||||
from main import birthday_list
|
||||
|
||||
|
||||
class SubmissionListener(commands.Cog, name="Message Listener"):
|
||||
@@ -39,5 +39,7 @@ async def birthday_action(message: nextcord.Message) -> None:
|
||||
message (nextcord.Message): The message to check for a birthday person.
|
||||
"""
|
||||
|
||||
if message.author.id in birthday_list or bool(set(message.raw_mentions) & set(birthday_list)):
|
||||
if message.author.id in birthday_list or bool(
|
||||
set(message.raw_mentions) & set(birthday_list)
|
||||
):
|
||||
await message.add_reaction("🎂")
|
||||
|
||||
@@ -53,10 +53,8 @@ def get_election_cycle_name(config: DakinyConfig) -> str:
|
||||
Returns:
|
||||
str: the name of the election cycle
|
||||
"""
|
||||
cycle = get_current_election_cycle(config)
|
||||
current_cycle = config.election_cycles[cycle]
|
||||
|
||||
return f"vote-{get_datetime(current_cycle.term_start).year}-{current_cycle.name}"
|
||||
return f"vote-{get_cycle_name(config)}"
|
||||
|
||||
|
||||
def get_cycle_name(config: DakinyConfig) -> str:
|
||||
|
||||
Reference in New Issue
Block a user