diff --git a/config/JSON/art.json b/config/JSON/art.json deleted file mode 100644 index 5022ba4..0000000 --- a/config/JSON/art.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "logo": { - "opaque": "https://git.wlinator.org/Luminara/Art/raw/branch/main/lumi_logo.png", - "transparent": "https://git.wlinator.org/Luminara/Art/raw/branch/main/lumi_logo_transparent.png?_=1" - }, - "icons": { - "boost": "https://git.wlinator.org/Luminara/Art/raw/branch/main/lumi_boost.png", - "check": "https://git.wlinator.org/Luminara/Art/raw/branch/main/lumi_check.png?_=1", - "cross": "https://git.wlinator.org/Luminara/Art/raw/branch/main/lumi_cross.png?_=2", - "exclaim": "https://git.wlinator.org/Luminara/Art/raw/branch/main/lumi_exclaim.png?_=3", - "hammer": "https://git.wlinator.org/Luminara/Art/raw/branch/main/lumi_hammer.png?_=1", - "money_bag": "https://git.wlinator.org/Luminara/Art/raw/branch/main/lumi_money_bag.png?_=1", - "money_coins": "https://git.wlinator.org/Luminara/Art/raw/branch/main/lumi_money_coins.png?_=1", - "question": "https://git.wlinator.org/Luminara/Art/raw/branch/main/lumi_question.png?_=2", - "streak": "https://git.wlinator.org/Luminara/Art/raw/branch/main/lumi_streak.png?_=2", - "streak_bronze": "https://git.wlinator.org/Luminara/Art/raw/branch/main/lumi_streak_bronze.png?_=1", - "streak_gold": "https://git.wlinator.org/Luminara/Art/raw/branch/main/lumi_streak_gold.png?_=1", - "streak_silver": "https://git.wlinator.org/Luminara/Art/raw/branch/main/lumi_streak_silver.png?_=1", - "warning": "https://git.wlinator.org/Luminara/Art/raw/branch/main/lumi_warning.png?_=1" - }, - "juicybblue": { - "flowers": "https://i.imgur.com/79XfsbS.png", - "teapot": "https://i.imgur.com/wFsgSnr.png", - "muffin": "https://i.imgur.com/hSauh7K.png" - }, - "other": { - "cloud": "https://i.imgur.com/rc68c43.png", - "trophy": "https://i.imgur.com/dvIIr2G.png" - } -} \ No newline at end of file diff --git a/config/JSON/resources.json b/config/JSON/resources.json deleted file mode 100644 index a012f70..0000000 --- a/config/JSON/resources.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "emotes_guild_id": 1038051105642401812, - "repository_url": "https://git.wlinator.org/Luminara/Lumi", - "guild_specific": { - "guild_id": 719227135151046699, - "intro_channel_id": 973619250507972618, - "question_mapping": { - "(Nick)name": "Let's start with your nickname. How would you like to be identified in the server?", - "Age": "How old are you?", - "Region": "Where do you live?", - "Languages": "Which languages do you speak?", - "Pronouns": "What are your preferred pronouns?", - "Sexuality": "What's your sexuality?", - "Relationship status": "What's your current relationship status?", - "Likes & interests": "Likes & interests", - "Dislikes": "Dislikes", - "EXTRAS": "EXTRAS: job status, zodiac sign, hobbies, etc. Tell us about yourself!" - } - }, - "daily_reward": 500, - "blackjack": { - "emotes": { - "hit": "<:hit:1119262723285467156>", - "stand": "<:stand:1118923298298929154>" - }, - "reward_multiplier": 1.4, - "deck_suits": [ - "♠", - "♡", - "♢", - "♣" - ], - "deck_ranks": [ - "A", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9", - "10", - "J", - "Q", - "K" - ] - }, - "slots": { - "emotes": { - "slots_animated_id": 1119262805309259776, - "slots_0_id": 1119262803816095825, - "slots_1_id": 1119262801261760592, - "slots_2_id": 1119262800049614939, - "slots_3_id": 1119262796497039510, - "slots_4_id": 1119262794676715681, - "slots_5_id": 1119262792386621555, - "slots_6_id": 1119262791061229669, - "S_Wide": 1119286730302955651, - "L_Wide": 1119286763802857533, - "O_Wide": 1119286787169329203, - "T_Wide": 1119286804634406942, - "CBorderBLeft": 1119286973572595712, - "CBorderBRight": 1119286918459445408, - "CBorderTLeft": 1119287006464331806, - "CBorderTRight": 1119286865284051035, - "HBorderB": 1119286936155213835, - "HBorderT": 1119287027662344322, - "VBorder": 1119286889854279680, - "WSmall": 1119288536282173490, - "ISmall": 1119288552673517608, - "NSmall": 1119288579382857830, - "LCentered": 1119287296127156325, - "OCentered": 1119287563245584394, - "SCentered": 1119287327588634647, - "ECentered": 1119287343833165945, - "Blank": 1119287267001905283, - "lost": 1119288454212243607 - }, - "reward_multipliers": { - "pair": 1.5, - "three_of_a_kind": 4, - "three_diamonds": 6, - "jackpot": 15 - } - } -} \ No newline at end of file diff --git a/config/parser.py b/config/parser.py deleted file mode 100644 index 5e4b35c..0000000 --- a/config/parser.py +++ /dev/null @@ -1,14 +0,0 @@ -import json - - -class JsonCache: - _cache = {} - - @staticmethod - def read_json(path): - """Read and cache the JSON data if not already cached.""" - if path not in JsonCache._cache: - with open(f"config/JSON/{path}.json") as file: - JsonCache._cache[path] = json.load(file) - - return JsonCache._cache[path] diff --git a/lib/constants.py b/lib/constants.py index e4f5b2a..a0761c0 100644 --- a/lib/constants.py +++ b/lib/constants.py @@ -1,102 +1,120 @@ import os -from typing import Optional, Set +from typing import Optional, Set, List, Dict +import yaml +import json -from config.parser import JsonCache + +class _parser: + _yaml_cache = {} + _json_cache = {} + + def read_yaml(self, path): + if path not in _parser._cache: + with open(f"settings/{path}.yaml") as file: + _parser._cache[path] = yaml.safe_load(file) + + return _parser._yaml_cache[path] + + def read_json(self, path): + if path not in _parser._cache: + with open(f"settings/responses/{path}.json") as file: + _parser._cache[path] = json.load(file) + + return _parser._json_cache[path] class Constants: - # JSON raw - ART = JsonCache.read_json("art") - RESOURCES = JsonCache.read_json("resources") - LEVEL_MESSAGES = JsonCache.read_json("levels") + _p = _parser() + _settings = _p.read_yaml("settings") - # metadata - TITLE = "Luminara" - AUTHOR = "wlinator" - LICENSE = "GNU General Public License v3.0" - VERSION = "2.8.12" # "Refactor Blackjack" update - - # bot credentials - TOKEN: Optional[str] = os.environ.get("TOKEN", None) - INSTANCE: Optional[str] = os.environ.get("INSTANCE", None) + # bot credentials (.env file) + TOKEN: Optional[str] = os.environ.get("TOKEN") + INSTANCE: Optional[str] = os.environ.get("INSTANCE") + XP_GAIN_PER_MESSAGE: int = int(os.environ.get("XP_GAIN_PER_MESSAGE", 1)) + XP_GAIN_COOLDOWN: int = int(os.environ.get("XP_GAIN_COOLDOWN", 8)) + DBX_TOKEN: Optional[str] = os.environ.get("DBX_OAUTH2_REFRESH_TOKEN") + DBX_APP_KEY: Optional[str] = os.environ.get("DBX_APP_KEY") + DBX_APP_SECRET: Optional[str] = os.environ.get("DBX_APP_SECRET") + MARIADB_USER: Optional[str] = os.environ.get("MARIADB_USER") + MARIADB_PASSWORD: Optional[str] = os.environ.get("MARIADB_PASSWORD") + MARIADB_ROOT_PASSWORD: Optional[str] = os.environ.get("MARIADB_ROOT_PASSWORD") + MARIADB_DATABASE: Optional[str] = os.environ.get("MARIADB_DATABASE") OWNER_IDS: Optional[Set[int]] = ( {int(id.strip()) for id in os.environ.get("OWNER_IDS", "").split(",") if id} - if os.environ.get("OWNER_IDS") + if "OWNER_IDS" in os.environ else None ) - XP_GAIN_PER_MESSAGE: int = int(os.environ.get("XP_GAIN_PER_MESSAGE", 1)) - XP_GAIN_COOLDOWN: int = int(os.environ.get("XP_GAIN_COOLDOWN", 8)) + # metadata + TITLE: str = _settings["info"]["title"] + AUTHOR: str = _settings["info"]["author"] + LICENSE: str = _settings["info"]["license"] + VERSION: str = _settings["info"]["version"] + REPOSITORY_URL: str = _settings["info"]["repository_url"] - DBX_TOKEN: Optional[str] = os.environ.get("DBX_OAUTH2_REFRESH_TOKEN", None) - DBX_APP_KEY: Optional[str] = os.environ.get("DBX_APP_KEY", None) - DBX_APP_SECRET: Optional[str] = os.environ.get("DBX_APP_SECRET", None) - - MARIADB_USER: Optional[str] = os.environ.get("MARIADB_USER", None) - MARIADB_PASSWORD: Optional[str] = os.environ.get("MARIADB_PASSWORD", None) - MARIADB_ROOT_PASSWORD: Optional[str] = os.environ.get("MARIADB_ROOT_PASSWORD", None) - MARIADB_DATABASE: Optional[str] = os.environ.get("MARIADB_DATABASE", None) - - # config - ALLOWED_IMAGE_EXTENSIONS = (".jpg", ".png") - - # emotes - EMOTES_GUILD_ID = 1038051105642401812 - - # color scheme - COLOR_DEFAULT = 0xFF8C00 - COLOR_WARNING = 0xFF7600 - COLOR_ERROR = 0xFF4500 - - # strings - STRINGS = JsonCache.read_json("strings") - - # repository - REPO_URL = "https://git.wlinator.org/Luminara/Lumi" - INVITE_LINK = "https://discord.com/oauth2/authorize?client_id=1038050427272429588&permissions=8&scope=bot" - - # KRC - KRC_GUILD_ID: int = 719227135151046699 - KRC_INTRO_CHANNEL_ID: int = 973619250507972618 - KRC_QUESTION_MAPPING: dict[str, str] = RESOURCES["guild_specific"][ - "question_mapping" + # images + ALLOWED_IMAGE_EXTENSIONS: List[str] = _settings["images"][ + "allowed_image_extensions" ] + BIRTHDAY_GIF_URL: str = _settings["images"]["birthday_gif_url"] - # logo - LUMI_LOGO_TRANSPARENT = ART["logo"]["transparent"] - LUMI_LOGO_OPAQUE = ART["logo"]["opaque"] - - # icons art - BOOST_ICON = ART["icons"]["boost"] - CHECK_ICON = ART["icons"]["check"] - CROSS_ICON = ART["icons"]["cross"] - EXCLAIM_ICON = ART["icons"]["exclaim"] - HAMMER_ICON = ART["icons"]["hammer"] - MONEY_BAG_ICON = ART["icons"]["money_bag"] - MONEY_COINS_ICON = ART["icons"]["money_coins"] - QUESTION_ICON = ART["icons"]["question"] - STREAK_ICON = ART["icons"]["streak"] - WARNING_ICON = ART["icons"]["warning"] - - # art by JuicyBblue - FLOWERS_ART = ART["juicybblue"]["flowers"] - TEAPOT_ART = ART["juicybblue"]["teapot"] - MUFFIN_ART = ART["juicybblue"]["muffin"] - - # other art - CLOUD_ART = ART["other"]["cloud"] - TROPHY_ART = ART["other"]["trophy"] - - # birthdays - BIRTHDAY_MESSAGES = JsonCache.read_json("birthday")["birthday_messages"] - BIRTHDAY_MONTHS = JsonCache.read_json("birthday")["months"] - BIRTHDAY_GIF_URL = "https://media1.tenor.com/m/NXvU9jbBUGMAAAAC/fireworks.gif" + # colors + COLOR_DEFAULT: int = _settings["colors"]["color_default"] + COLOR_WARNING: int = _settings["colors"]["color_warning"] + COLOR_ERROR: int = _settings["colors"]["color_error"] # economy - DAILY_REWARD = RESOURCES["daily_reward"] - SLOTS = RESOURCES["slots"] - BLACKJACK = RESOURCES["blackjack"] + DAILY_REWARD: int = _settings["economy"]["daily_reward"] + BLACKJACK_MULTIPLIER: float = _settings["economy"]["blackjack_multiplier"] + SLOTS_MULTIPLIERS: Dict[str, float] = _settings["economy"]["slots_multipliers"] + + # art from git repository + _fetch_url: str = _settings["fetch_url"] + + LOGO_OPAQUE: str = _fetch_url + _settings["logo"]["opaque"] + LOGO_TRANSPARENT: str = _fetch_url + _settings["logo"]["transparent"] + ICONS_BOOST: str = _fetch_url + _settings["icons"]["boost"] + ICONS_CHECK: str = _fetch_url + _settings["icons"]["check"] + ICONS_CROSS: str = _fetch_url + _settings["icons"]["cross"] + ICONS_EXCLAIM: str = _fetch_url + _settings["icons"]["exclaim"] + ICONS_HAMMER: str = _fetch_url + _settings["icons"]["hammer"] + ICONS_MONEY_BAG: str = _fetch_url + _settings["icons"]["money_bag"] + ICONS_MONEY_COINS: str = _fetch_url + _settings["icons"]["money_coins"] + ICONS_QUESTION: str = _fetch_url + _settings["icons"]["question"] + ICONS_STREAK: str = _fetch_url + _settings["icons"]["streak"] + ICONS_STREAK_BRONZE: str = _fetch_url + _settings["icons"]["streak_bronze"] + ICONS_STREAK_GOLD: str = _fetch_url + _settings["icons"]["streak_gold"] + ICONS_STREAK_SILVER: str = _fetch_url + _settings["icons"]["streak_silver"] + ICONS_WARNING: str = _fetch_url + _settings["icons"]["warning"] + JUICYBBLUE_FLOWERS: str = _fetch_url + _settings["juicybblue"]["flowers"] + JUICYBBLUE_TEAPOT: str = _fetch_url + _settings["juicybblue"]["teapot"] + JUICYBBLUE_MUFFIN: str = _fetch_url + _settings["juicybblue"]["muffin"] + + # art from imgur + IMGUR_CLOUD: str = _settings["other"]["cloud"] + IMGUR_TROPHY: str = _settings["other"]["trophy"] + + # emotes + EMOTES_SERVER_ID: int = _settings["emotes"]["guild_id"] + EMOTE_IDS: Dict[str, int] = _settings["emotes"]["emote_ids"] + + # introductions (currently only usable in ONE guild) + INTRODUCTIONS_GUILD_ID: int = _settings["introductions"]["intro_guild_id"] + INTRODUCTIONS_CHANNEL_ID: int = _settings["introductions"]["intro_channel_id"] + INTRODUCTIONS_QUESTION_MAPPING: Dict[str, str] = _settings["introductions"][ + "intro_question_mapping" + ] + + # Response strings + # TODO: Implement switching between languages + STRINGS = _parser().read_json("responses/strings.en-US") + LEVEL_MESSAGES = _parser().read_json("responses/levels.en-US") + + # birthday messages + _bday = _parser().read_json("responses/bdays.en-US") + BIRTHDAY_MESSAGES = _bday["birthday_messages"] + BIRTHDAY_MONTHS = _bday["months"] CONST = Constants() diff --git a/config/JSON/birthday.json b/settings/responses/bdays.en-US.json similarity index 99% rename from config/JSON/birthday.json rename to settings/responses/bdays.en-US.json index 02318d1..b0626a9 100644 --- a/config/JSON/birthday.json +++ b/settings/responses/bdays.en-US.json @@ -73,4 +73,4 @@ "🎊 It's a day to be spoiled and celebrated, **{0}**! Wishing you the happiest of birthdays! 🎁", "🎂 As you turn another year older, know that you are loved and cherished, **{0}**! Happy Birthday! 🎉" ] -} +} \ No newline at end of file diff --git a/settings/responses/bdays.en-US.yaml b/settings/responses/bdays.en-US.yaml deleted file mode 100644 index ba11ddb..0000000 --- a/settings/responses/bdays.en-US.yaml +++ /dev/null @@ -1,73 +0,0 @@ -months: - - January - - February - - March - - April - - May - - June - - July - - August - - September - - October - - November - - December - -birthday_messages: - - "🎂 Happy Birthday, **{0}**! 🎉 Wishing you a day filled with joy and laughter." - - "🎈 It's party time! Happy Birthday, **{0}**! 🎉" - - "🎉 Another year older, another year wiser! Happy Birthday, **{0}**! 🎂" - - "🌟 Today's the day you shine brighter than ever! Happy Birthday, **{0}**! 🌟" - - "🎁 Special day alert! It's **{0}**'s birthday! 🎁" - - "🎊 Hip, hip, hooray! It's **{0}**'s birthday today! 🎊" - - "🎂 Cake and confetti time! Happy Birthday, **{0}**! 🎉" - - "🌈 Sending you a rainbow of happiness on your birthday, **{0}**! 🎈" - - "🎉 Let's raise a toast to **{0}** on their birthday! Cheers to another fantastic year! 🥂" - - "🎈 Birthdays are like sprinkles on the cupcake of life! Happy Birthday, **{0}**! 🧁" - - "🎁 Gift-wrapped wishes for a wonderful birthday and an amazing year ahead, **{0}**! 🎁" - - "🎊 Time to blow out the candles and make a wish! Happy Birthday, **{0}**! 🎂" - - "🌟 It's your day to sparkle and shine, **{0}**! Happy Birthday! ✨" - - "🎈 May your birthday be as fabulous as you are, **{0}**! 🎉" - - "🎉 Here's to a year filled with success, happiness, and endless opportunities for **{0}**! Happy Birthday! 🥳" - - "🎁 Wishing **{0}** all the best on their special day! Happy Birthday! 🎁" - - "🎊 Another year of unforgettable memories begins today for **{0}**! Happy Birthday! 🎊" - - "🌟 Your birthday is the perfect excuse to pamper yourself, **{0}**! Enjoy your special day! 🎈" - - "🎂 Age is just a number, and you're looking more fabulous with each passing year, **{0}**! Happy Birthday! 💕" - - "🎉 Today, we celebrate the amazing person you are, **{0}**! Happy Birthday! 🎂" - - "🎈 Life's journey gets even more exciting as **{0}** celebrates another year of it! Happy Birthday! 🎉" - - "🌟 Happy Birthday to someone who makes every day brighter with their presence, **{0}**! 🌞" - - "🎁 May this birthday be the beginning of the most extraordinary year yet for **{0}**! 🚀" - - "🎊 Birthdays are nature's way of telling us to eat more cake! Enjoy your special treat, **{0}**! 🍰" - - "🎉 Time to pop the confetti and make some fabulous birthday memories, **{0}**! 🎂" - - "🎈 Today, the world received a gift in the form of **{0}**! Happy Birthday! 🎉" - - "🌟 Wishing **{0}** health, happiness, and all the things they desire on their birthday! 🎁" - - "🎂 Cheers to **{0}** on another year of being amazing! Happy Birthday! 🎉" - - "🎉 It's **{0}**'s big day, so let loose and enjoy every moment! Happy Birthday! 🎊" - - "🎈 Sending virtual hugs and lots of love to **{0}** on their special day! 🤗❤️" - - "🌟 On your birthday, the world becomes a better place because of your presence, **{0}**! 🎉" - - "🎁 As you blow out the candles, know that your wishes are heard and your dreams matter. Happy Birthday, **{0}**! 🌠" - - "🎊 Here's to a birthday filled with laughter, love, and all the things that make you happy, **{0}**! Cheers! 🥂" - - "🎂 May your birthday be filled with delightful surprises and sweet moments, **{0}**! Enjoy your special day! 🎈" - - "🎉 It's time for the world to celebrate the incredible person that is **{0}**! Happy Birthday! 🎊" - - "🎈 Another year, another chapter in the adventure of life for **{0}**! May this year be full of excitement and joy! 🌟" - - "🌟 May this birthday mark the beginning of extraordinary achievements and unforgettable memories for **{0}**! 🎁" - - "🎂 Here's to a birthday filled with love, happiness, and all the good things you deserve, **{0}**! 🎉" - - "🎉 Sending virtual confetti and a big smile to **{0}** on their birthday! Let's celebrate! 🎈" - - "🎈 Time to indulge in cake and celebrate the wonderful human that is **{0}**! Happy Birthday! 🎂" - - "🎊 Today, we honor the amazing journey of **{0}**'s life! Happy Birthday! 🌟" - - "🌟 Birthdays are a time for reflection, growth, and gratitude. Wishing **{0}** a wonderful birthday and year ahead! 🎁" - - "🎁 Another trip around the sun calls for a big celebration! Happy Birthday, **{0}**! 🎉" - - "🎂 As you blow out the candles, know that you are loved and cherished, **{0}**! Happy Birthday! 🎈" - - "🎉 It's a new age and a new opportunity to shine, **{0}**! May this year be your best yet! 🌟" - - "🎈 On your special day, may you be surrounded by love, happiness, and everything that brings you joy, **{0}**! 🎂" - - "🌟 Today, we celebrate **{0}** and the unique light they bring into the world! Happy Birthday! 🎉" - - "🎁 Wishing a fantastic birthday to the one and only **{0}**! May this day be filled with laughter and love! 🎈" - - "🎊 May your birthday be as extraordinary as the person you are, **{0}**! Cheers to you! 🥳" - - "🎂 You're not just a year older; you're a year more incredible! Happy Birthday, **{0}**! 🌟" - - "🎉 It's time to embrace the joy, love, and happiness that come with birthdays! Enjoy every moment, **{0}**! 🎈" - - "🎈 Another year, another chance to create beautiful memories. Happy Birthday, **{0}**! 🎂" - - "🌟 Your birthday is a reminder of how much you mean to all of us! Wishing you the best day ever, **{0}**! 🎁" - - "🎁 Sending warm birthday wishes and virtual hugs to **{0}** on their special day! 🤗❤️" - - "🎉 Today, we celebrate the unique and wonderful person that is **{0}**! Happy Birthday! 🎂" - - "🎈 Here's to a birthday filled with laughter, love, and all the things that make you smile, **{0}**! 🌟" - - "🎊 It's a day to be spoiled and celebrated, **{0}**! Wishing you the happiest of birthdays! 🎁" - - "🎂 As you turn another year older, know that you are loved and cherished, **{0}**! Happy Birthday! 🎉" diff --git a/config/JSON/levels.json b/settings/responses/levels.en-US.json similarity index 100% rename from config/JSON/levels.json rename to settings/responses/levels.en-US.json diff --git a/settings/responses/levels.en-US.yaml b/settings/responses/levels.en-US.yaml deleted file mode 100644 index e438602..0000000 --- a/settings/responses/levels.en-US.yaml +++ /dev/null @@ -1,90 +0,0 @@ ---- -0-10: - - Behold, you've reached **Level {}**. Let's all try not to yawn too loudly. - - Congratulations on reaching **Level {}**. It's like leveling up, but without the - fanfare. - - Congrats on reaching **Level {}**, you're slowly but surely ascending the ladder - of "success"... - - Rejoice! You reached **Level {}**. It's time to throw a party with a side of meh. - - You've reached **Level {}**, where the bar is set low and the excitement is mild. - - Welcome to **Level {}**, the land of marginal achievements and faint praise. - - It's time to celebrate! You've unlocked the 'Slightly Better Than Before' achievement - at **Level {}**. - - Congratulations on your promotion to **Level {}**. It's like climbing a tiny hill. - - At **Level {}**, you're steadily inching closer to the realm of almost impressive. - - You reached **Level {}**! Get ready for a ripple of apathetic applause. - - Alert! You reached **Level {}**. Don't worry, it's not that exciting. - - Rumor has it that reaching **Level {}** grants you the ability to mildly impress - others. - - You got to **Level {}**! Prepare for a slightly raised eyebrow of acknowledgement. - - Congratulations on reaching **Level {}**. It's a modest achievement, to say the - least. - - "Congratulations on **Level {}**! You must be SO proud of yourself. \U0001F644" - - You've reached **Level {}**! Your achievement is about as significant as a grain - of sand. - - Congratulations on your ascent to **Level {}**. It's a small step for mankind. - - At **Level {}**, you're like a firework that fizzles out before it even begins. - - Oh, you've reached **Level {}**? Maybe it's time to see the sunlight. - - Wow, **Level {}**! How's the weather in your mom's basement? - - You've reached **Level {}**. Now go reach for a job application. - - Look at you, **Level {}**. You're really climbing that ladder to nowhere. - - You've hit **Level {}**. Your keyboard must be thrilled. - - Congrats on **Level {}**. Your social life, however, remains at Level 0. - - You've reached **Level {}**. But remember, in the game of life, you're still a beginner. - - You're now **Level {}**. I'd say 'get a life', but clearly, you've chosen Discord - instead. - - "You've achieved **Level {}**. Achievement unlocked: Professional Procrastinator." - - You're at **Level {}**. Do you also level up in avoiding responsibilities? - - You've reached **Level {}**. If only leveling up in real life was this easy, huh? - - You're now **Level {}**. If only your productivity levels matched your Lumi level. -11-20: - - Congratulations motherfucker you leveled the fuck up to **Level {}**. - - levle **{}** cmoning in! Let's celbraet! - - yay you reach the level **{}** waw you are so cool many time - - reached **Level {}** but you'll never get on MY level HAAHAHAHAHA - - "*elevator music* Welcome to **level {}**." -21-40: - - "**Level {}** \U0001F44D" - - Look who's slacking off work to level up on Discord. **Level {}** and counting! - - "**Level {}**? Have you considered that there might be an entire world outside of - Discord?" - - Wow, you've climbed to **level {}**. Is Discord your full-time job now? - - Oh look, it's **level {}**! Are you sure you're not secretly a bot in disguise? - - You've reached **level {}**. I hope you're using your Discord powers for good and - not just spamming memes. - - "**Level {}** and still going strong. Who needs a social life when you have Discord, - right?" - - Congratulations on leveling up to **level {}**. I hope Discord gives you a lifetime - supply of virtual cookies. - - Look who's made it to **level {}**. I'm starting to think you're more Discord than - human. - - Wow, **level {}**! Do you ever wonder if Discord should be paying you a salary at - this point? - - Congratulations on reaching **level {}**. Your dedication to Discord is both awe-inspiring - and mildly concerning. - - "**Level {}**? I bet you have more Discord badges than real-life achievements." -41-60: - - Well, well, well, **level {}**. Your Discord addiction is reaching legendary status. - - "**Level {}**. If you don't stop leveling up, I might have to stage an intervention. - Discord addiction is real!" - - You've reached **Level {}**. Stop. Just stop. You've had enough of this app. Go - away. - - Oh, look who's flexing their **Level {}** status. Don't strain a muscle. - - Congratulations on reaching **Level {}**. Are you trying to make the rest of us - feel inadequate? - - Hats off to **Level {}**. Your dedication is truly admirable... or slightly concerning. - - Are you okay...? **Level {}** is seriously unhealthy bro. Sleep. - - "STOP. LEVELING. LEAVE. ME. ALONE. Here's your damn level: **{}**" - - HAS REACHED **LEVEL {}**, FUCK YEAH. - - "**Level {}**. The second-hand embarrassment is real." -61-100000: - - Lol it took you this long to reach **Level {}**. - - "**{}**." - - "**Level {}**???? Who are you? Gear?" - - "Yay you reached **Level {}**!! :3 UwU \U0001F98B \U0001F5A4 (nobody cares)" - - Conragulasions your level **{}** now. - - Hey man congrats on reaching **Level {}**. I mean it. GG. - - You reached **Level {}**!! What's it like being a loser? - - "**Level {}**. BIG IF TRUE." - - CONGRATIONS LEVE **{}** - - Hahahahahahahahahhahahahaahahah. **Level {}**. diff --git a/config/JSON/strings.json b/settings/responses/strings.en-US.json similarity index 100% rename from config/JSON/strings.json rename to settings/responses/strings.en-US.json diff --git a/settings/responses/strings.en-US.yaml b/settings/responses/strings.en-US.yaml deleted file mode 100644 index f8cc1a5..0000000 --- a/settings/responses/strings.en-US.yaml +++ /dev/null @@ -1,404 +0,0 @@ ---- -admin_award_description: awarded **${0}** to {1}. -admin_award_title: Awarded Currency -admin_blacklist_author: User Blacklisted -admin_blacklist_description: user `{0}` has been blacklisted from Luminara. -admin_blacklist_footer: - There is no process to reinstate a blacklisted user. Appeals - are not considered. -admin_sql_inject_description: |- - ```sql - {0} - ``` -admin_sql_inject_error_description: |- - ```sql - {0} - ``` - ``` - {1} - ``` -admin_sql_inject_error_title: SQL Query Error -admin_sql_inject_title: SQL Query Executed -admin_sql_select_description: |- - ```sql - SELECT {0} - ``` - ``` - {1} - ``` -admin_sql_select_error_description: |- - ```sql - SELECT {0} - ``` - ``` - {1} - ``` -admin_sql_select_error_title: SQL Select Query Error -admin_sql_select_title: SQL Select Query -admin_sync_description: command tree synced successfully. -admin_sync_error_description: "An error occurred while syncing: {0}" -admin_sync_error_title: Sync Error -admin_sync_title: Sync Successful -bet_limit: "❌ | **{0}** you cannot place any bets above **${1}**." -birthday_add_invalid_date: The date you entered is invalid. -birthday_add_success_author: Birthday Set -birthday_add_success_description: your birthday has been set to **{0} {1}**. -birthday_check_error: - Birthday announcement skipped processing user/guild {0}/{1} - | {2} -birthday_check_finished: - Daily birthday check finished. {0} birthdays processed. {1} - birthdays failed. -birthday_check_skipped: - "Birthday announcements in guild with ID {0} skipped: no birthday - channel." -birthday_check_started: Daily birthday check started. -birthday_check_success: "Birthday announcement Success! user/guild/chan ID: {0}/{1}/{2}" -birthday_delete_success_author: Birthday Deleted -birthday_delete_success_description: your birthday has been deleted from this server. -birthday_leap_year: February 29 -birthday_upcoming_author: Upcoming Birthdays! -birthday_upcoming_description_line: "\U0001F382 {0} - {1}" -birthday_upcoming_no_birthdays: there are no upcoming birthdays in this server. -birthday_upcoming_no_birthdays_author: No Upcoming Birthdays -blackjack_bet: Bet ${0} -blackjack_busted: Busted.. -blackjack_dealer_busted: The dealer busted. You won! -blackjack_dealer_hand: |- - **Dealer** - Score: {0} - *Hand: {1}* -blackjack_dealer_hidden: "??" -blackjack_deck_shuffled: deck shuffled -blackjack_description: |- - You | Score: {0} - Dealer | Score: {1} -blackjack_error: I.. don't know if you won? -blackjack_error_description: This is an error, please report it. -blackjack_footer: Game finished -blackjack_lost: You lost **${0}**. -blackjack_lost_generic: You lost.. -blackjack_player_hand: |- - **You** - Score: {0} - *Hand: {1}* -blackjack_title: BlackJack -blackjack_won_21: You won with a score of 21! -blackjack_won_natural: You won with a natural hand! -blackjack_won_payout: You won **${0}**. -boost_default_description: Thanks for boosting, **{0}**!! -boost_default_title: New Booster -case_case_field: "Case:" -case_case_field_value: "`{0}`" -case_duration_field: "Duration:" -case_duration_field_value: "`{0}`" -case_guild_cases_author: All Cases in this Server -case_guild_no_cases: this server doesn't have any mod cases yet. -case_guild_no_cases_author: No Mod Cases -case_mod_cases_author: Cases by Moderator ({0}) -case_mod_no_cases: this user has not handled any cases in this server. -case_mod_no_cases_author: No Mod Cases -case_moderator_field: "Moderator:" -case_moderator_field_value: "`{0}`" -case_new_case_author: New Case -case_reason_field: "Reason:" -case_reason_field_value: "`{0}`" -case_reason_update_author: Case Reason Updated -case_reason_update_description: case `{0}` reason has been updated. -case_target_field: "Target:" -case_target_field_value: "`{0}` \U0001F3AF" -case_type_field: "Type:" -case_type_field_value: "`{0}`" -case_type_field_value_with_duration: "`{0} ({1})`" -config_author: Server Configuration -config_birthday_channel_set: birthday announcements will be sent in {0}. -config_birthday_module_already_disabled: the birthday module was already disabled. -config_birthday_module_disabled: the birthday module was successfully disabled. -config_boost_channel_set: boost announcements will be sent in {0}. -config_boost_image_field: "New Image URL:" -config_boost_image_original: Original (default) -config_boost_image_updated: the boost image has been updated. -config_boost_module_already_disabled: the boost module was already disabled. -config_boost_module_disabled: the boost module was successfully disabled. -config_boost_template_field: "New Template:" -config_boost_template_updated: the boost message template has been updated. -config_example_next_footer: An example will be sent next. -config_level_channel_set: all level announcements will be sent in {0}. -config_level_current_channel_set: - members will receive level announcements in their - current channel. -config_level_module_already_enabled: the Lumi XP system was already enabled. -config_level_module_disabled: the Lumi XP system was successfully disabled. -config_level_module_disabled_warning: - "Warning: this module is disabled, please do - '/config levels enable'" -config_level_module_enabled: the Lumi XP system was successfully enabled. -config_level_template: "Template:" -config_level_template_updated: the level template was successfully updated. -config_level_type_example: "Example:" -config_level_type_generic: level announcements will be **generic messages**. -config_level_type_generic_example: - "\U0001F4C8 | **lucas** you have reached **Level - 15**." -config_level_type_whimsical: level announcements will be **sarcastic comments**. -config_level_type_whimsical_example: - "\U0001F4C8 | **lucas** Lol it took you this - long to reach **Level 15**." -config_modlog_channel_set: moderation logs will be sent in {0}. -config_modlog_info_author: Moderation Log Configuration -config_modlog_info_commands_name: "\U0001F4D6 Case commands" -config_modlog_info_commands_value: |- - `/cases` - View all cases in this server - `/case ` - View a specific case - `/editcase ` - Update a case reason -config_modlog_info_description: - This channel has been set as the moderation log channel - for **{0}**. All moderation actions issued with Lumi will be logged here as cases. -config_modlog_info_warning_name: "⚠️ Warning" -config_modlog_info_warning_value: - Changing the mod-log channel in the future will - make old cases uneditable in this channel. -config_modlog_permission_error: - I don't have perms to send messages in that channel. - Please fix & try again. -config_prefix_get: the current prefix for this server is `{0}` -config_prefix_set: the prefix has been set to `{0}` -config_prefix_too_long: the prefix must be 25 characters or less. -config_show_author: "{0} Configuration" -config_show_birthdays: Birthdays -config_show_boost_announcements: Boost announcements -config_show_default_enabled: "✅ Enabled (default)" -config_show_disabled: "❌ Disabled" -config_show_enabled: "✅ Enabled" -config_show_guide: "Guide: {0}" -config_show_level_announcements: Level announcements -config_show_moderation_log: Moderation Log -config_show_moderation_log_channel_deleted: "⚠️ **Not configured** (channel deleted?)" -config_show_moderation_log_enabled: "✅ {0}" -config_show_moderation_log_not_configured: "⚠️ **Not configured yet**" -config_show_new_member_greets: New member greets -config_welcome_channel_set: I will announce new members in {0}. -config_welcome_module_already_disabled: the greeting module was already disabled. -config_welcome_module_disabled: the greeting module was successfully disabled. -config_welcome_template_field: "New Template:" -config_welcome_template_updated: the welcome message template has been updated. -daily_already_claimed_author: Already Claimed -daily_already_claimed_description: you can claim your daily reward again . -daily_already_claimed_footer: Daily reset is at 7 AM EST -daily_streak_footer: You're on a streak of {0} days -daily_success_claim_author: Reward Claimed -daily_success_claim_description: you claimed your reward of **${0}**! -default_level_up_message: "**{0}** you have reached **Level {1}**." -error_actionable_hierarchy_bot: - I don't have permission to perform this action on - this user due to role hierarchy. -error_actionable_hierarchy_user: - you don't have permission to perform this action - on this user due to role hierarchy. -error_actionable_self: you can't perform this action on yourself. -error_already_playing_blackjack: you already have a game of blackjack running. -error_bad_argument_author: Bad Argument -error_bad_argument_description: "{0}" -error_birthdays_disabled_author: Birthdays Disabled -error_birthdays_disabled_description: birthdays are disabled in this server. -error_birthdays_disabled_footer: Contact a mod to enable them. -error_blackjack_game_error: something went wrong while playing blackjack. -error_boost_image_url_invalid: the image URL must end with `.jpg` or `.png`. -error_bot_missing_permissions_author: Bot Missing Permissions -error_bot_missing_permissions_description: - Lumi lacks the required permissions to - run this command. -error_command_cooldown_author: Command Cooldown -error_command_cooldown_description: try again in **{0:02d}:{1:02d}**. -error_command_not_found: No command called "{0}" found. -error_image_url_invalid: invalid image URL. -error_invalid_bet: the bet you entered is invalid. -error_invalid_duration: "Invalid duration: {0}" -error_invalid_duration_author: Invalid Duration -error_invalid_duration_description: - Please provide a valid duration between 1 minute - and 30 days. -error_lumi_exception_author: Lumi Exception -error_lumi_exception_description: "{0}" -error_missing_permissions_author: Missing Permissions -error_missing_permissions_description: - you lack the required permissions to run this - command. -error_no_case_found_author: Case Not Found -error_no_case_found_description: no case found with that ID. -error_no_private_message_author: Guild Only -error_no_private_message_description: this command can only be used in servers. -error_not_enough_cash: you don't have enough cash. -error_not_owner_author: Owner Only -error_not_owner_description: this command requires Lumi ownership permissions. -error_out_of_time: you ran out of time. -error_out_of_time_economy: you ran out of time. Your bet was forfeited. -error_private_message_only_author: Private Message Only -error_private_message_only_description: this command can only be used in private messages. -error_unknown_error_author: Unknown Error -error_unknown_error_description: an unknown error occurred. Please try again later. -greet_default_description: |- - _ _ - **Welcome** to **{0}** -greet_template_description: |- - ↓↓↓ - {0} -help_use_prefix: Please use Lumi's prefix to get help. Type `{0}help` -info_api_version: "**API:** v{0}\n" -info_database_records: "**Database:** {0} records" -info_latency: "**Latency:** {0}ms\n" -info_memory: "**Memory:** {0:.2f} MB\n" -info_service_footer: Info Service -info_system: "**System:** {0} ({1})\n" -info_uptime: "**Uptime:** \n" -intro_content: Introduction by {0} -intro_content_footer: Type .intro in my DMs to start -intro_no_channel: the introduction channel is not set, please contact a moderator. -intro_no_channel_author: Channel Not Set -intro_no_guild: you're not in a server that supports introductions. -intro_no_guild_author: Server Not Supported -intro_post_confirmation: your introduction has been posted in {0}! -intro_preview_field: "**{0}:** {1}\n\n" -intro_question_footer: Type your answer below. -intro_service_name: Introduction Service -intro_start: - this command will serve as a questionnaire for your entry to {0}. Please - keep your answers "PG-13" and don't abuse this command. -intro_start_footer: Click the button below to start -intro_stopped: the introduction command was stopped. -intro_stopped_author: Introduction Stopped -intro_timeout: you took too long to answer the question, please try again. -intro_timeout_author: Timeout -intro_too_long: your answer was too long, please keep it below 200 characters. -intro_too_long_author: Answer Too Long -invite_button_text: Invite Lumi -invite_description: Thanks for inviting me to your server! -level_up: "\U0001F4C8 | **{0}** you have reached **Level {1}**." -level_up_prefix: "\U0001F4C8 | **{0}** " -lumi_exception_blacklisted: User is blacklisted -lumi_exception_generic: An error occurred. -mod_ban_dm: |- - **{0}** you have been banned from `{1}`. - - **Reason:** `{2}` -mod_banned_author: User Banned -mod_banned_user: user with ID `{0}` has been banned. -mod_dm_not_sent: Failed to notify them in DM -mod_dm_sent: notified them in DM -mod_kick_dm: |- - **{0}** you have been kicked from `{1}`. - - **Reason:** `{2}` -mod_kicked_author: User Kicked -mod_kicked_user: user `{0}` has been kicked. -mod_no_reason: No reason provided. -mod_not_banned: user with ID `{0}` is not banned. -mod_not_banned_author: User Not Banned -mod_not_timed_out: user `{0}` is not timed out. -mod_not_timed_out_author: User Not Timed Out -mod_reason: "Moderator: {0} | Reason: {1}" -mod_softban_dm: |- - **{0}** you have been softbanned from `{1}`. - - **Reason:** `{2}` -mod_softban_unban_reason: Softban by {0} -mod_softbanned_author: User Softbanned -mod_softbanned_user: user `{0}` has been softbanned. -mod_timed_out_author: User Timed Out -mod_timed_out_user: user `{0}` has been timed out. -mod_timeout_dm: |- - **{0}** you have been timed out in `{1}` for `{2}`. - - **Reason:** `{3}` -mod_unbanned: user with ID `{0}` has been unbanned. -mod_unbanned_author: User Unbanned -mod_untimed_out: timeout has been removed for user `{0}`. -mod_untimed_out_author: User Timeout Removed -mod_warn_dm: |- - **{0}** you have been warned in `{1}`. - - **Reason:** `{2}` -mod_warned_author: User Warned -mod_warned_user: user `{0}` has been warned. -ping_author: I'm online! -ping_footer: "Latency: {0}ms" -ping_pong: Pong! -ping_uptime: I've been online since . -stats_blackjack: - "\U0001F0CF | You've played **{0}** games of BlackJack, betting a - total of **${1}**. You won **{2}** of those games with a total payout of **${3}**." -stats_slots: - "\U0001F3B0 | You've played **{0}** games of Slots, betting a total of - **${1}**. Your total payout was **${2}**." -trigger_already_exists: - Failed to add custom reaction. This text already contains - another trigger. To avoid unexpected behavior, please delete it before adding a - new one. -trigger_limit_reached: - Failed to add custom reaction. You have reached the limit of - 100 custom reactions for this server. -triggers_add_author: Custom Reaction Created -triggers_add_description: | - **Trigger Text:** `{0}` - **Reaction Type:** {1} - **Full Match:** `{2}` -triggers_add_emoji_details: "**Emoji ID:** `{0}`" -triggers_add_text_details: "**Response:** `{0}`" -triggers_delete_author: Custom Reaction Deleted -triggers_delete_description: custom reaction has been successfully deleted. -triggers_delete_not_found_author: Custom Reaction Not Found -triggers_list_custom_reaction_id: "**ID:** {0}" -triggers_list_custom_reactions_title: Custom Reactions -triggers_list_emoji_id: "**Emoji ID:** `{0}`" -triggers_list_full_match: "**Full Match:** `{0}`" -triggers_list_reaction_type: "**Reaction Type:** {0}" -triggers_list_response: "**Response:** `{0}`" -triggers_list_trigger_text: "**Trigger Text:** `{0}`" -triggers_list_usage_count: "**Usage Count:** `{0}`" -triggers_no_reactions_description: |- - There are no custom reactions set up yet. - - To create a new custom reaction, use the following commands: - `/trigger add emoji` - Add a new custom emoji reaction. - `/trigger add response` - Add a new custom text reaction. - - **Emoji Reaction:** - An emoji reaction will react with a specific emoji when the trigger text is detected. - - **Text Reaction:** - A text reaction will respond with a specific text message when the trigger text is detected. -triggers_no_reactions_title: No Custom Reactions Found -triggers_not_added: failed to add custom reaction. Please try again. -triggers_not_deleted: something went wrong while trying to delete this trigger. -triggers_not_found: no custom reaction found with the provided ID. -triggers_reaction_service_footer: Reaction Service -triggers_type_emoji: Emoji -triggers_type_text: Text -xkcd_description: "[Explainxkcd]({0}) | [Webpage]({1})" -xkcd_footer: Xkcd Service -xkcd_not_found: failed to fetch this comic. -xkcd_not_found_author: Comic Not Found -xkcd_title: Xkcd {0} - {1} -xp_lb_author: Level Leaderboard -xp_lb_cant_use_dropdown: You can't use this menu, it's someone else's. -xp_lb_currency_author: Currency Leaderboard -xp_lb_currency_field_value: "cash: **${0}**" -xp_lb_dailies_author: Daily Streak Leaderboard -xp_lb_dailies_field_value: |- - highest streak: **{0}** - claimed on: `{1}` -xp_lb_field_name: "#{0} - {1}" -xp_lb_field_value: |- - level: **{0}** - xp: `{1}/{2}` -xp_level: Level {0} -xp_progress: Progress to next level -xp_server_rank: "Server Rank: #{0}" -balance_cash: "**Cash**: ${0}" -balance_author: "{0}'s wallet" -balance_footer: check out /daily -give_error_self: you can't give money to yourself. -give_error_bot: you can't give money to a bot. -give_error_invalid_amount: invalid amount. -give_error_insufficient_funds: you don't have enough cash. -give_success: "**{0}** gave **${1}** to {2}." diff --git a/settings/settings.yaml b/settings/settings.yaml index bdca323..fca479a 100644 --- a/settings/settings.yaml +++ b/settings/settings.yaml @@ -10,6 +10,7 @@ images: allowed_image_extensions: - .jpg - .png + birthday_gif_url: https://media1.tenor.com/m/NXvU9jbBUGMAAAAC/fireworks.gif colors: color_default: 0xFF8C00 @@ -53,39 +54,40 @@ art: trophy: https://i.imgur.com/dvIIr2G.png emotes: - emotes_guild_id: 1038051105642401812 - hit: "<:hit:1119262723285467156>" - stand: "<:stand:1118923298298929154>" - slots_animated_id: 1119262805309259800 - slots_0_id: 1119262803816095900 - slots_1_id: 1119262801261760600 - slots_2_id: 1119262800049615000 - slots_3_id: 1119262796497039500 - slots_4_id: 1119262794676715600 - slots_5_id: 1119262792386621600 - slots_6_id: 1119262791061229700 - S_Wide: 1119286730302955600 - L_Wide: 1119286763802857500 - O_Wide: 1119286787169329200 - T_Wide: 1119286804634406900 - CBorderBLeft: 1119286973572595700 - CBorderBRight: 1119286918459445400 - CBorderTLeft: 1119287006464331800 - CBorderTRight: 1119286865284051100 - HBorderB: 1119286936155213800 - HBorderT: 1119287027662344300 - VBorder: 1119286889854279700 - WSmall: 1119288536282173400 - ISmall: 1119288552673517600 - NSmall: 1119288579382857900 - LCentered: 1119287296127156400 - OCentered: 1119287563245584400 - SCentered: 1119287327588634600 - ECentered: 1119287343833166000 - Blank: 1119287267001905300 - lost: 1119288454212243600 + guild_id: 1038051105642401812 + emote_ids: + hit: 1119262723285467156 + stand: 1118923298298929154 + slots_animated_id: 1119262805309259800 + slots_0_id: 1119262803816095900 + slots_1_id: 1119262801261760600 + slots_2_id: 1119262800049615000 + slots_3_id: 1119262796497039500 + slots_4_id: 1119262794676715600 + slots_5_id: 1119262792386621600 + slots_6_id: 1119262791061229700 + S_Wide: 1119286730302955600 + L_Wide: 1119286763802857500 + O_Wide: 1119286787169329200 + T_Wide: 1119286804634406900 + CBorderBLeft: 1119286973572595700 + CBorderBRight: 1119286918459445400 + CBorderTLeft: 1119287006464331800 + CBorderTRight: 1119286865284051100 + HBorderB: 1119286936155213800 + HBorderT: 1119287027662344300 + VBorder: 1119286889854279700 + WSmall: 1119288536282173400 + ISmall: 1119288552673517600 + NSmall: 1119288579382857900 + LCentered: 1119287296127156400 + OCentered: 1119287563245584400 + SCentered: 1119287327588634600 + ECentered: 1119287343833166000 + Blank: 1119287267001905300 + lost: 1119288454212243600 -introductions: # Currently only usable in ONE guild. +introductions: intro_guild_id: 719227135151046700 intro_channel_id: 973619250507972600 intro_question_mapping: