mirror of
https://github.com/wlinator/luminara.git
synced 2024-10-02 20:23:12 +00:00
144 lines
4.7 KiB
Python
144 lines
4.7 KiB
Python
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
|
|
self.welcome_message = None
|
|
self.boost_channel_id = None
|
|
self.boost_message = None
|
|
self.boost_image_url = None
|
|
self.level_channel_id = None
|
|
self.level_message = None
|
|
self.level_message_type = 1
|
|
|
|
self.fetch_or_create_config()
|
|
|
|
def fetch_or_create_config(self):
|
|
"""
|
|
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,
|
|
welcome_channel_id, welcome_message, boost_channel_id,
|
|
boost_message, boost_image_url, level_channel_id,
|
|
level_message, level_message_type
|
|
FROM guild_config WHERE guild_id = %s
|
|
"""
|
|
|
|
try:
|
|
self._extracted_from_fetch_or_create_config_14(query)
|
|
except (IndexError, TypeError):
|
|
# No record found for the specified guild_id
|
|
query = "INSERT INTO guild_config (guild_id) VALUES (%s)"
|
|
database.execute_query(query, (self.guild_id,))
|
|
|
|
# TODO Rename this here and in `fetch_or_create_config`
|
|
def _extracted_from_fetch_or_create_config_14(self, query):
|
|
(
|
|
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]
|
|
|
|
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
|
|
self.welcome_message = welcome_message
|
|
self.boost_channel_id = boost_channel_id
|
|
self.boost_message = boost_message
|
|
self.boost_image_url = boost_image_url
|
|
self.level_channel_id = level_channel_id
|
|
self.level_message = level_message
|
|
self.level_message_type = level_message_type
|
|
|
|
def push(self):
|
|
query = """
|
|
UPDATE guild_config
|
|
SET
|
|
birthday_channel_id = %s,
|
|
command_channel_id = %s,
|
|
intro_channel_id = %s,
|
|
welcome_channel_id = %s,
|
|
welcome_message = %s,
|
|
boost_channel_id = %s,
|
|
boost_message = %s,
|
|
boost_image_url = %s,
|
|
level_channel_id = %s,
|
|
level_message = %s,
|
|
level_message_type = %s
|
|
WHERE guild_id = %s;
|
|
"""
|
|
|
|
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,
|
|
),
|
|
)
|
|
|
|
@staticmethod
|
|
def get_prefix(message):
|
|
"""
|
|
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,
|
|
(message.guild.id if message.guild else None,),
|
|
)
|
|
|
|
return prefix or "."
|
|
|
|
@staticmethod
|
|
def get_prefix_from_guild_id(guild_id):
|
|
query = """
|
|
SELECT prefix
|
|
FROM guild_config
|
|
WHERE guild_id = %s
|
|
"""
|
|
|
|
return database.select_query_one(query, (guild_id,)) or "."
|
|
|
|
@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))
|