12 Commits

Author SHA1 Message Date
733563d243 Merge pull request 'Add break readout for the bot-aux' (#2) from gabby-dev into main
All checks were successful
test and deploy / test (3.11.5) (push) Successful in 1m45s
test and deploy / push-and-build (push) Successful in 33s
Reviewed-on: #2
2025-12-23 13:15:05 +00:00
a32eb42998 Merge branch 'main' into gabby-dev
All checks were successful
Test Helper Module / test (3.11.5) (push) Successful in 1m44s
2025-12-23 13:12:44 +00:00
bbe1c0aec6 Add break readout for the bot-aux
All checks were successful
Test Helper Module / test (3.11.5) (push) Successful in 2m9s
Test Helper Module / test (3.11.5) (pull_request) Successful in 1m35s
2025-12-22 11:01:28 -06:00
16d760f2f4 Merge pull request 'Add "breaks" functionality to bot.' (#1) from gabby-dev into main
All checks were successful
test and deploy / test (3.11.5) (push) Successful in 1m37s
test and deploy / push-and-build (push) Successful in 32s
Reviewed-on: #1
2025-10-17 17:53:54 +00:00
33e5df4dfe Enhancement/db_helper: Add extra newline to end of message for formatted_list_of_breaks
All checks were successful
Test Helper Module / test (3.11.5) (push) Successful in 1m33s
Test Helper Module / test (3.11.5) (pull_request) Successful in 1m33s
2025-10-17 11:47:40 -06:00
ef24032b68 Enhancement/db_helper: Clean up linebreaks
Some checks failed
Test Helper Module / test (3.11.5) (push) Has been cancelled
2025-10-17 11:45:20 -06:00
74bfe6c116 Bugfix/db_helper: Fix bug with the query_break() 2025-10-17 11:40:49 -06:00
930919bbae Enhancement: bot_core breaks() now uses a formatted list 2025-10-17 11:35:50 -06:00
7e5a6c35e0 Enhancement: Update db_helper to take in days parameter 2025-10-17 11:35:24 -06:00
c1854cc893 db_helper addition: Add functionality to format list of breaks 2025-10-17 11:32:00 -06:00
933ab384e1 Enhancement: edit ping command to use charname rather than UID 2025-10-17 11:18:56 -06:00
41f1160fc3 Bugfix: Change interaction to followup for breaks() in bot_core 2025-10-17 11:16:57 -06:00
3 changed files with 75 additions and 4 deletions

View File

@@ -36,11 +36,22 @@ async def on_ready():
print(f'{client.user} has connected.') print(f'{client.user} has connected.')
print(args.guild_id) print(args.guild_id)
guild: discord.Guild = client.get_guild(args.guild_id) guild: discord.Guild = client.get_guild(args.guild_id)
channel: discord.TextChannel = guild.get_channel(args.channel_id) channel: discord.TextChannel = guild.get_channel(args.channel_id)
callouts = DATABASE_CONN.query_callouts(NUMBER_OF_DAYS) callouts = DATABASE_CONN.query_callouts(NUMBER_OF_DAYS)
formatted_callouts = DATABASE_CONN.formatted_list_of_callouts(callouts) formatted_callouts = DATABASE_CONN.formatted_list_of_callouts(callouts)
output = f'Callouts for the next {NUMBER_OF_DAYS} days:\n' + formatted_callouts output = f'Callouts for the next {NUMBER_OF_DAYS} days:\n' + formatted_callouts
output += '\n\n'
output += f'Breaks for the next {NUMBER_OF_DAYS} days:\n'
breaks: str = DATABASE_CONN.query_breaks(NUMBER_OF_DAYS)
formatted_breaks: str = DATABASE_CONN.formatted_list_of_breaks(breaks)
output += formatted_breaks
await channel.send(output) await channel.send(output)
await client.close() # Another way to exit, a little bit cleaner than exit(0) await client.close() # Another way to exit, a little bit cleaner than exit(0)
return return

View File

@@ -160,7 +160,8 @@ async def ping(interaction: discord.Interaction) -> None:
delete_invalidate() delete_invalidate()
cleanup_invalidate() cleanup_invalidate()
user_id = interaction.user.id user_id = interaction.user.id
await interaction.response.send_message(f'Pong! {user_id} -- the bot is active, please message contrastellar with issues!') charname = DATABASE_CONN.return_char_name(uid=user_id)
await interaction.response.send_message(f'Pong! {charname} -- the bot is active, please message contrastellar with issues!')
return return
@@ -321,7 +322,10 @@ async def breaks(interaction: discord.Interaction, days: int = 365) -> None:
delete_invalidate() delete_invalidate()
cleanup_invalidate() cleanup_invalidate()
await interaction.response.defer(thinking=True) await interaction.response.defer(thinking=True)
await interaction.response.send_message(str(DATABASE_CONN.query_breaks())) breaks: list = DATABASE_CONN.query_breaks(days=days)
break_output: str = DATABASE_CONN.format_list_of_breaks(breaks=breaks)
await interaction.followup.send(f'Breaks for the next {days} days:\n{break_output}')
return
@client.tree.command() @client.tree.command()

View File

@@ -100,15 +100,17 @@ class DBHelper():
return cursor.fetchall() return cursor.fetchall()
def query_breaks(self) -> list:
def query_breaks(self, days) -> list:
self.__CONN = connect_config(self._config) self.__CONN = connect_config(self._config)
self.__CONN.autocommit = True self.__CONN.autocommit = True
cursor = self.__CONN.cursor() cursor = self.__CONN.cursor()
cursor.execute(f"SELECT * FROM breaks") cursor.execute(f"SELECT * FROM breaks WHERE open_range >= NOW() - INTERVAL '1 day' and open_range <= NOW() + interval '{days} days' ORDER BY open_range ASC;")
self.__CONN.commit() self.__CONN.commit()
return cursor.fetchall() return cursor.fetchall()
def query_self_callouts(self, user_id: int, days: int = 365): def query_self_callouts(self, user_id: int, days: int = 365):
self.__CONN = connect_config(self._config) self.__CONN = connect_config(self._config)
self.__CONN.autocommit = True self.__CONN.autocommit = True
@@ -137,6 +139,7 @@ class DBHelper():
return return
def add_break(self, user_id: int, break_start: datetime.date, break_end: datetime.date) -> None: def add_break(self, user_id: int, break_start: datetime.date, break_end: datetime.date) -> None:
self.__CONN = connect_config(self._config) self.__CONN = connect_config(self._config)
@@ -184,6 +187,59 @@ class DBHelper():
return return
def formatted_list_of_breaks(self, breaks: list) -> str:
"""Format the python list of breaks.
Args:
breaks (list): The list that needs to be formatted
Returns:
str: the list as an outputtable string
"""
length = len(breaks)
output: str = ''
if length == 0:
return 'No breaks have been scheduled!'
for entry in breaks:
for item in range(4):
if item == 0:
output += f"Break submitted by: {self.return_char_name(entry[0])}"
if item == 1:
# is_range boolean
if entry[1] == True:
# if it is a range, format as a range
output += f' • Break from: {entry[2]} until... '
else:
# if it is not a range, format as a single date
output += f' • We are taking a break on: {entry[2]}'
if item == 2:
if entry[1] == True:
output += f'{entry[3]}.\n'
else:
output += '\n'
output += "\nEND OF MESSAGE"
return output
def format_list_of_breaks(self, breaks: list) -> str:
"""Format the list of breaks
Args:
breaks (list): The list that needs to be formatted
Returns:
str: The formatted list to the bot_core or bot_aux
"""
return self.formatted_list_of_breaks(breaks=breaks)
def formatted_list_of_callouts(self, callouts: list) -> str: def formatted_list_of_callouts(self, callouts: list) -> str:
"""Format the python list of callouts. """Format the python list of callouts.