1
Fork 0
mirror of https://github.com/wlinator/luminara.git synced 2024-10-02 18:03:12 +00:00

refactor YAML and JSON

This commit is contained in:
wlinator 2024-08-27 05:50:31 -04:00
parent 00c17eae42
commit 4053bc9882
11 changed files with 135 additions and 813 deletions

View file

@ -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"
}
}

View file

@ -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
}
}
}

View file

@ -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]

View file

@ -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()

View file

@ -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! 🎉"
]
}
}

View file

@ -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! 🎉"

View file

@ -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 {}**.

View file

@ -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 <case_id>` - View a specific case
`/editcase <case_id> <new_reason>` - 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 <t:{0}:R>.
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:** <t:{0}:R>\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 <t:{0}:R>.
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}."

View file

@ -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: