1
Fork 0
mirror of https://github.com/wlinator/luminara.git synced 2024-10-02 22:23:13 +00:00
Lumi/services/config_service.py

129 lines
4.3 KiB
Python
Raw Normal View History

2024-03-04 10:32:40 +00:00
from db import database
class GuildConfig:
def __init__(self, guild_id):
self.guild_id = guild_id
self.birthday_channel_id = None
self.command_channel_id = None
self.intro_channel_id = None
self.welcome_channel_id = None
2024-03-07 19:26:11 +00:00
self.welcome_message = None
2024-04-26 10:52:04 +00:00
self.boost_channel_id = None
self.boost_message = None
self.boost_image_url = None
2024-03-04 10:32:40 +00:00
self.level_channel_id = None
self.level_message = None
2024-03-04 13:49:59 +00:00
self.level_message_type = 1
2024-03-04 10:32:40 +00:00
self.fetch_or_create_config()
2024-03-04 13:49:59 +00:00
def fetch_or_create_config(self):
2024-03-04 10:32:40 +00:00
"""
Gets a Guild Config from the database or inserts a new row if it doesn't exist yet.
"""
query = """
SELECT birthday_channel_id, command_channel_id, intro_channel_id,
2024-04-26 10:52:04 +00:00
welcome_channel_id, welcome_message, boost_channel_id,
boost_message, boost_image_url, level_channel_id,
level_message, level_message_type
2024-03-04 10:32:40 +00:00
FROM guild_config WHERE guild_id = %s
"""
try:
2024-07-17 11:47:26 +00:00
(
birthday_channel_id,
command_channel_id,
intro_channel_id,
welcome_channel_id,
welcome_message,
boost_channel_id,
boost_message,
boost_image_url,
level_channel_id,
level_message,
level_message_type,
) = database.select_query(query, (self.guild_id,))[0]
2024-03-04 13:49:59 +00:00
self.birthday_channel_id = birthday_channel_id
self.command_channel_id = command_channel_id
self.intro_channel_id = intro_channel_id
self.welcome_channel_id = welcome_channel_id
2024-03-07 19:26:11 +00:00
self.welcome_message = welcome_message
2024-04-26 10:52:04 +00:00
self.boost_channel_id = boost_channel_id
self.boost_message = boost_message
self.boost_image_url = boost_image_url
2024-03-04 13:49:59 +00:00
self.level_channel_id = level_channel_id
self.level_message = level_message
self.level_message_type = level_message_type
2024-03-04 10:32:40 +00:00
except (IndexError, TypeError):
# No record found for the specified guild_id
2024-03-04 13:49:59 +00:00
query = "INSERT INTO guild_config (guild_id) VALUES (%s)"
2024-03-04 10:32:40 +00:00
database.execute_query(query, (self.guild_id,))
2024-03-04 13:49:59 +00:00
def push(self):
query = """
UPDATE guild_config
SET
birthday_channel_id = %s,
command_channel_id = %s,
intro_channel_id = %s,
welcome_channel_id = %s,
2024-03-07 19:26:11 +00:00
welcome_message = %s,
2024-04-26 10:52:04 +00:00
boost_channel_id = %s,
boost_message = %s,
boost_image_url = %s,
2024-03-04 13:49:59 +00:00
level_channel_id = %s,
level_message = %s,
level_message_type = %s
WHERE guild_id = %s;
"""
2024-03-04 10:32:40 +00:00
2024-07-17 11:47:26 +00:00
database.execute_query(
query,
(
self.birthday_channel_id,
self.command_channel_id,
self.intro_channel_id,
self.welcome_channel_id,
self.welcome_message,
self.boost_channel_id,
self.boost_message,
self.boost_image_url,
self.level_channel_id,
self.level_message,
self.level_message_type,
self.guild_id,
),
)
2024-03-16 14:05:40 +00:00
@staticmethod
def get_prefix(guild_id):
"""
Gets the prefix from a given guild.
This function is done as static method to make the prefix fetch process faster.
"""
query = """
SELECT prefix
FROM guild_config
WHERE guild_id = %s
"""
prefix = database.select_query_one(query, (guild_id,))
return prefix if prefix else "."
2024-03-19 17:35:51 +00:00
@staticmethod
def set_prefix(guild_id, prefix):
"""
Sets the prefix for a given guild.
"""
query = """
UPDATE guild_config
SET prefix = %s
WHERE guild_id = %s;
"""
database.execute_query(query, (prefix, guild_id))