From 7ea66723f5f9c09e77e0b063002d4b222e7cc9d0 Mon Sep 17 00:00:00 2001 From: Janine vN Date: Sat, 4 Sep 2021 23:35:00 -0400 Subject: Move Valentines to Holidays folder Moves the valentine's day features to the holidays folders. Corrected the paths to reflect the folder moves. --- bot/exts/holidays/valentines/__init__.py | 0 bot/exts/holidays/valentines/be_my_valentine.py | 192 +++++++++++++++ bot/exts/holidays/valentines/lovecalculator.py | 99 ++++++++ bot/exts/holidays/valentines/movie_generator.py | 67 ++++++ bot/exts/holidays/valentines/myvalenstate.py | 82 +++++++ bot/exts/holidays/valentines/pickuplines.py | 41 ++++ bot/exts/holidays/valentines/savethedate.py | 38 +++ bot/exts/holidays/valentines/valentine_zodiac.py | 146 ++++++++++++ bot/exts/holidays/valentines/whoisvalentine.py | 49 ++++ bot/exts/valentines/__init__.py | 0 bot/exts/valentines/be_my_valentine.py | 192 --------------- bot/exts/valentines/lovecalculator.py | 99 -------- bot/exts/valentines/movie_generator.py | 67 ------ bot/exts/valentines/myvalenstate.py | 82 ------- bot/exts/valentines/pickuplines.py | 41 ---- bot/exts/valentines/savethedate.py | 38 --- bot/exts/valentines/valentine_zodiac.py | 146 ------------ bot/exts/valentines/whoisvalentine.py | 49 ---- .../valentines/bemyvalentine_valentines.json | 45 ++++ bot/resources/holidays/valentines/date_ideas.json | 125 ++++++++++ .../holidays/valentines/love_matches.json | 58 +++++ .../holidays/valentines/pickup_lines.json | 97 ++++++++ bot/resources/holidays/valentines/valenstates.json | 122 ++++++++++ .../holidays/valentines/valentine_facts.json | 24 ++ .../holidays/valentines/zodiac_compatibility.json | 262 +++++++++++++++++++++ .../holidays/valentines/zodiac_explanation.json | 122 ++++++++++ .../valentines/bemyvalentine_valentines.json | 45 ---- bot/resources/valentines/date_ideas.json | 125 ---------- bot/resources/valentines/love_matches.json | 58 ----- bot/resources/valentines/pickup_lines.json | 97 -------- bot/resources/valentines/valenstates.json | 122 ---------- bot/resources/valentines/valentine_facts.json | 24 -- bot/resources/valentines/zodiac_compatibility.json | 262 --------------------- bot/resources/valentines/zodiac_explanation.json | 122 ---------- 34 files changed, 1569 insertions(+), 1569 deletions(-) create mode 100644 bot/exts/holidays/valentines/__init__.py create mode 100644 bot/exts/holidays/valentines/be_my_valentine.py create mode 100644 bot/exts/holidays/valentines/lovecalculator.py create mode 100644 bot/exts/holidays/valentines/movie_generator.py create mode 100644 bot/exts/holidays/valentines/myvalenstate.py create mode 100644 bot/exts/holidays/valentines/pickuplines.py create mode 100644 bot/exts/holidays/valentines/savethedate.py create mode 100644 bot/exts/holidays/valentines/valentine_zodiac.py create mode 100644 bot/exts/holidays/valentines/whoisvalentine.py delete mode 100644 bot/exts/valentines/__init__.py delete mode 100644 bot/exts/valentines/be_my_valentine.py delete mode 100644 bot/exts/valentines/lovecalculator.py delete mode 100644 bot/exts/valentines/movie_generator.py delete mode 100644 bot/exts/valentines/myvalenstate.py delete mode 100644 bot/exts/valentines/pickuplines.py delete mode 100644 bot/exts/valentines/savethedate.py delete mode 100644 bot/exts/valentines/valentine_zodiac.py delete mode 100644 bot/exts/valentines/whoisvalentine.py create mode 100644 bot/resources/holidays/valentines/bemyvalentine_valentines.json create mode 100644 bot/resources/holidays/valentines/date_ideas.json create mode 100644 bot/resources/holidays/valentines/love_matches.json create mode 100644 bot/resources/holidays/valentines/pickup_lines.json create mode 100644 bot/resources/holidays/valentines/valenstates.json create mode 100644 bot/resources/holidays/valentines/valentine_facts.json create mode 100644 bot/resources/holidays/valentines/zodiac_compatibility.json create mode 100644 bot/resources/holidays/valentines/zodiac_explanation.json delete mode 100644 bot/resources/valentines/bemyvalentine_valentines.json delete mode 100644 bot/resources/valentines/date_ideas.json delete mode 100644 bot/resources/valentines/love_matches.json delete mode 100644 bot/resources/valentines/pickup_lines.json delete mode 100644 bot/resources/valentines/valenstates.json delete mode 100644 bot/resources/valentines/valentine_facts.json delete mode 100644 bot/resources/valentines/zodiac_compatibility.json delete mode 100644 bot/resources/valentines/zodiac_explanation.json diff --git a/bot/exts/holidays/valentines/__init__.py b/bot/exts/holidays/valentines/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/bot/exts/holidays/valentines/be_my_valentine.py b/bot/exts/holidays/valentines/be_my_valentine.py new file mode 100644 index 00000000..4d454c3a --- /dev/null +++ b/bot/exts/holidays/valentines/be_my_valentine.py @@ -0,0 +1,192 @@ +import logging +import random +from json import loads +from pathlib import Path + +import discord +from discord.ext import commands + +from bot.bot import Bot +from bot.constants import Channels, Colours, Lovefest, Month +from bot.utils.decorators import in_month +from bot.utils.extensions import invoke_help_command + +log = logging.getLogger(__name__) + +HEART_EMOJIS = [":heart:", ":gift_heart:", ":revolving_hearts:", ":sparkling_heart:", ":two_hearts:"] + + +class BeMyValentine(commands.Cog): + """A cog that sends Valentines to other users!""" + + def __init__(self, bot: Bot): + self.bot = bot + self.valentines = self.load_json() + + @staticmethod + def load_json() -> dict: + """Load Valentines messages from the static resources.""" + p = Path("bot/resources/holidays/valentines/bemyvalentine_valentines.json") + return loads(p.read_text("utf8")) + + @in_month(Month.FEBRUARY) + @commands.group(name="lovefest") + async def lovefest_role(self, ctx: commands.Context) -> None: + """ + Subscribe or unsubscribe from the lovefest role. + + The lovefest role makes you eligible to receive anonymous valentines from other users. + + 1) use the command \".lovefest sub\" to get the lovefest role. + 2) use the command \".lovefest unsub\" to get rid of the lovefest role. + """ + if not ctx.invoked_subcommand: + await invoke_help_command(ctx) + + @lovefest_role.command(name="sub") + async def add_role(self, ctx: commands.Context) -> None: + """Adds the lovefest role.""" + user = ctx.author + role = ctx.guild.get_role(Lovefest.role_id) + if role not in ctx.author.roles: + await user.add_roles(role) + await ctx.send("The Lovefest role has been added !") + else: + await ctx.send("You already have the role !") + + @lovefest_role.command(name="unsub") + async def remove_role(self, ctx: commands.Context) -> None: + """Removes the lovefest role.""" + user = ctx.author + role = ctx.guild.get_role(Lovefest.role_id) + if role not in ctx.author.roles: + await ctx.send("You dont have the lovefest role.") + else: + await user.remove_roles(role) + await ctx.send("The lovefest role has been successfully removed!") + + @commands.cooldown(1, 1800, commands.BucketType.user) + @commands.group(name="bemyvalentine", invoke_without_command=True) + async def send_valentine( + self, ctx: commands.Context, user: discord.Member, *, valentine_type: str = None + ) -> None: + """ + Send a valentine to a specified user with the lovefest role. + + syntax: .bemyvalentine [user] [p/poem/c/compliment/or you can type your own valentine message] + (optional) + + example: .bemyvalentine Iceman#6508 p (sends a poem to Iceman) + example: .bemyvalentine Iceman Hey I love you, wanna hang around ? (sends the custom message to Iceman) + NOTE : AVOID TAGGING THE USER MOST OF THE TIMES.JUST TRIM THE '@' when using this command. + """ + if ctx.guild is None: + # This command should only be used in the server + raise commands.UserInputError("You are supposed to use this command in the server.") + + if Lovefest.role_id not in [role.id for role in user.roles]: + raise commands.UserInputError( + f"You cannot send a valentine to {user} as they do not have the lovefest role!" + ) + + if user == ctx.author: + # Well a user can't valentine himself/herself. + raise commands.UserInputError("Come on, you can't send a valentine to yourself :expressionless:") + + emoji_1, emoji_2 = self.random_emoji() + channel = self.bot.get_channel(Channels.community_bot_commands) + valentine, title = self.valentine_check(valentine_type) + + embed = discord.Embed( + title=f"{emoji_1} {title} {user.display_name} {emoji_2}", + description=f"{valentine} \n **{emoji_2}From {ctx.author}{emoji_1}**", + color=Colours.pink + ) + await channel.send(user.mention, embed=embed) + + @commands.cooldown(1, 1800, commands.BucketType.user) + @send_valentine.command(name="secret") + async def anonymous( + self, ctx: commands.Context, user: discord.Member, *, valentine_type: str = None + ) -> None: + """ + Send an anonymous Valentine via DM to to a specified user with the lovefest role. + + syntax : .bemyvalentine secret [user] [p/poem/c/compliment/or you can type your own valentine message] + (optional) + + example : .bemyvalentine secret Iceman#6508 p (sends a poem to Iceman in DM making you anonymous) + example : .bemyvalentine secret Iceman#6508 Hey I love you, wanna hang around ? (sends the custom message to + Iceman in DM making you anonymous) + """ + if Lovefest.role_id not in [role.id for role in user.roles]: + await ctx.message.delete() + raise commands.UserInputError( + f"You cannot send a valentine to {user} as they do not have the lovefest role!" + ) + + if user == ctx.author: + # Well a user cant valentine himself/herself. + raise commands.UserInputError("Come on, you can't send a valentine to yourself :expressionless:") + + emoji_1, emoji_2 = self.random_emoji() + valentine, title = self.valentine_check(valentine_type) + + embed = discord.Embed( + title=f"{emoji_1}{title} {user.display_name}{emoji_2}", + description=f"{valentine} \n **{emoji_2}From anonymous{emoji_1}**", + color=Colours.pink + ) + await ctx.message.delete() + try: + await user.send(embed=embed) + except discord.Forbidden: + raise commands.UserInputError(f"{user} has DMs disabled, so I couldn't send the message. Sorry!") + else: + await ctx.author.send(f"Your message has been sent to {user}") + + def valentine_check(self, valentine_type: str) -> tuple[str, str]: + """Return the appropriate Valentine type & title based on the invoking user's input.""" + if valentine_type is None: + return self.random_valentine() + + elif valentine_type.lower() in ["p", "poem"]: + return self.valentine_poem(), "A poem dedicated to" + + elif valentine_type.lower() in ["c", "compliment"]: + return self.valentine_compliment(), "A compliment for" + + else: + # in this case, the user decides to type his own valentine. + return valentine_type, "A message for" + + @staticmethod + def random_emoji() -> tuple[str, str]: + """Return two random emoji from the module-defined constants.""" + emoji_1 = random.choice(HEART_EMOJIS) + emoji_2 = random.choice(HEART_EMOJIS) + return emoji_1, emoji_2 + + def random_valentine(self) -> tuple[str, str]: + """Grabs a random poem or a compliment (any message).""" + valentine_poem = random.choice(self.valentines["valentine_poems"]) + valentine_compliment = random.choice(self.valentines["valentine_compliments"]) + random_valentine = random.choice([valentine_compliment, valentine_poem]) + if random_valentine == valentine_poem: + title = "A poem dedicated to" + else: + title = "A compliment for " + return random_valentine, title + + def valentine_poem(self) -> str: + """Grabs a random poem.""" + return random.choice(self.valentines["valentine_poems"]) + + def valentine_compliment(self) -> str: + """Grabs a random compliment.""" + return random.choice(self.valentines["valentine_compliments"]) + + +def setup(bot: Bot) -> None: + """Load the Be my Valentine Cog.""" + bot.add_cog(BeMyValentine(bot)) diff --git a/bot/exts/holidays/valentines/lovecalculator.py b/bot/exts/holidays/valentines/lovecalculator.py new file mode 100644 index 00000000..3999db2b --- /dev/null +++ b/bot/exts/holidays/valentines/lovecalculator.py @@ -0,0 +1,99 @@ +import bisect +import hashlib +import json +import logging +import random +from pathlib import Path +from typing import Coroutine, Optional + +import discord +from discord import Member +from discord.ext import commands +from discord.ext.commands import BadArgument, Cog, clean_content + +from bot.bot import Bot +from bot.constants import Channels, Client, Lovefest, Month +from bot.utils.decorators import in_month + +log = logging.getLogger(__name__) + +LOVE_DATA = json.loads(Path("bot/resources/holidays/valentines/love_matches.json").read_text("utf8")) +LOVE_DATA = sorted((int(key), value) for key, value in LOVE_DATA.items()) + + +class LoveCalculator(Cog): + """A cog for calculating the love between two people.""" + + @in_month(Month.FEBRUARY) + @commands.command(aliases=("love_calculator", "love_calc")) + @commands.cooldown(rate=1, per=5, type=commands.BucketType.user) + async def love(self, ctx: commands.Context, who: Member, whom: Optional[Member] = None) -> None: + """ + Tells you how much the two love each other. + + This command requires at least one member as input, if two are given love will be calculated between + those two users, if only one is given, the second member is asusmed to be the invoker. + Members are converted from: + - User ID + - Mention + - name#discrim + - name + - nickname + + Any two arguments will always yield the same result, regardless of the order of arguments: + Running .love @joe#6000 @chrisjl#2655 will always yield the same result. + Running .love @chrisjl#2655 @joe#6000 will yield the same result as before. + """ + if ( + Lovefest.role_id not in [role.id for role in who.roles] + or (whom is not None and Lovefest.role_id not in [role.id for role in whom.roles]) + ): + raise BadArgument( + "This command can only be ran against members with the lovefest role! " + "This role be can assigned by running " + f"`{Client.prefix}lovefest sub` in <#{Channels.community_bot_commands}>." + ) + + if whom is None: + whom = ctx.author + + def normalize(arg: Member) -> Coroutine: + # This has to be done manually to be applied to usernames + return clean_content(escape_markdown=True).convert(ctx, str(arg)) + + # Sort to ensure same result for same input, regardless of order + who, whom = sorted([await normalize(arg) for arg in (who, whom)]) + + # Hash inputs to guarantee consistent results (hashing algorithm choice arbitrary) + # + # hashlib is used over the builtin hash() to guarantee same result over multiple runtimes + m = hashlib.sha256(who.encode() + whom.encode()) + # Mod 101 for [0, 100] + love_percent = sum(m.digest()) % 101 + + # We need the -1 due to how bisect returns the point + # see the documentation for further detail + # https://docs.python.org/3/library/bisect.html#bisect.bisect + index = bisect.bisect(LOVE_DATA, (love_percent,)) - 1 + # We already have the nearest "fit" love level + # We only need the dict, so we can ditch the first element + _, data = LOVE_DATA[index] + + status = random.choice(data["titles"]) + embed = discord.Embed( + title=status, + description=f"{who} \N{HEAVY BLACK HEART} {whom} scored {love_percent}%!\n\u200b", + color=discord.Color.dark_magenta() + ) + embed.add_field( + name="A letter from Dr. Love:", + value=data["text"] + ) + embed.set_footer(text=f"You can unsubscribe from lovefest by using {Client.prefix}lovefest unsub") + + await ctx.send(embed=embed) + + +def setup(bot: Bot) -> None: + """Load the Love calculator Cog.""" + bot.add_cog(LoveCalculator()) diff --git a/bot/exts/holidays/valentines/movie_generator.py b/bot/exts/holidays/valentines/movie_generator.py new file mode 100644 index 00000000..d2dc8213 --- /dev/null +++ b/bot/exts/holidays/valentines/movie_generator.py @@ -0,0 +1,67 @@ +import logging +import random +from os import environ + +import discord +from discord.ext import commands + +from bot.bot import Bot + +TMDB_API_KEY = environ.get("TMDB_API_KEY") + +log = logging.getLogger(__name__) + + +class RomanceMovieFinder(commands.Cog): + """A Cog that returns a random romance movie suggestion to a user.""" + + def __init__(self, bot: Bot): + self.bot = bot + + @commands.command(name="romancemovie") + async def romance_movie(self, ctx: commands.Context) -> None: + """Randomly selects a romance movie and displays information about it.""" + # Selecting a random int to parse it to the page parameter + random_page = random.randint(0, 20) + # TMDB api params + params = { + "api_key": TMDB_API_KEY, + "language": "en-US", + "sort_by": "popularity.desc", + "include_adult": "false", + "include_video": "false", + "page": random_page, + "with_genres": "10749" + } + # The api request url + request_url = "https://api.themoviedb.org/3/discover/movie" + async with self.bot.http_session.get(request_url, params=params) as resp: + # Trying to load the json file returned from the api + try: + data = await resp.json() + # Selecting random result from results object in the json file + selected_movie = random.choice(data["results"]) + + embed = discord.Embed( + title=f":sparkling_heart: {selected_movie['title']} :sparkling_heart:", + description=selected_movie["overview"], + ) + embed.set_image(url=f"http://image.tmdb.org/t/p/w200/{selected_movie['poster_path']}") + embed.add_field(name="Release date :clock1:", value=selected_movie["release_date"]) + embed.add_field(name="Rating :star2:", value=selected_movie["vote_average"]) + embed.set_footer(text="This product uses the TMDb API but is not endorsed or certified by TMDb.") + embed.set_thumbnail(url="https://i.imgur.com/LtFtC8H.png") + await ctx.send(embed=embed) + except KeyError: + warning_message = ( + "A KeyError was raised while fetching information on the movie. The API service" + " could be unavailable or the API key could be set incorrectly." + ) + embed = discord.Embed(title=warning_message) + log.warning(warning_message) + await ctx.send(embed=embed) + + +def setup(bot: Bot) -> None: + """Load the Romance movie Cog.""" + bot.add_cog(RomanceMovieFinder(bot)) diff --git a/bot/exts/holidays/valentines/myvalenstate.py b/bot/exts/holidays/valentines/myvalenstate.py new file mode 100644 index 00000000..4b547d9b --- /dev/null +++ b/bot/exts/holidays/valentines/myvalenstate.py @@ -0,0 +1,82 @@ +import collections +import json +import logging +from pathlib import Path +from random import choice + +import discord +from discord.ext import commands + +from bot.bot import Bot +from bot.constants import Colours + +log = logging.getLogger(__name__) + +STATES = json.loads(Path("bot/resources/holidays/valentines/valenstates.json").read_text("utf8")) + + +class MyValenstate(commands.Cog): + """A Cog to find your most likely Valentine's vacation destination.""" + + def levenshtein(self, source: str, goal: str) -> int: + """Calculates the Levenshtein Distance between source and goal.""" + if len(source) < len(goal): + return self.levenshtein(goal, source) + if len(source) == 0: + return len(goal) + if len(goal) == 0: + return len(source) + + pre_row = list(range(0, len(source) + 1)) + for i, source_c in enumerate(source): + cur_row = [i + 1] + for j, goal_c in enumerate(goal): + if source_c != goal_c: + cur_row.append(min(pre_row[j], pre_row[j + 1], cur_row[j]) + 1) + else: + cur_row.append(min(pre_row[j], pre_row[j + 1], cur_row[j])) + pre_row = cur_row + return pre_row[-1] + + @commands.command() + async def myvalenstate(self, ctx: commands.Context, *, name: str = None) -> None: + """Find the vacation spot(s) with the most matching characters to the invoking user.""" + eq_chars = collections.defaultdict(int) + if name is None: + author = ctx.author.name.lower().replace(" ", "") + else: + author = name.lower().replace(" ", "") + + for state in STATES.keys(): + lower_state = state.lower().replace(" ", "") + eq_chars[state] = self.levenshtein(author, lower_state) + + matches = [x for x, y in eq_chars.items() if y == min(eq_chars.values())] + valenstate = choice(matches) + matches.remove(valenstate) + + embed_title = "But there are more!" + if len(matches) > 1: + leftovers = f"{', '.join(matches[:-2])}, and {matches[-1]}" + embed_text = f"You have {len(matches)} more matches, these being {leftovers}." + elif len(matches) == 1: + embed_title = "But there's another one!" + embed_text = f"You have another match, this being {matches[0]}." + else: + embed_title = "You have a true match!" + embed_text = "This state is your true Valenstate! There are no states that would suit" \ + " you better" + + embed = discord.Embed( + title=f"Your Valenstate is {valenstate} \u2764", + description=STATES[valenstate]["text"], + colour=Colours.pink + ) + embed.add_field(name=embed_title, value=embed_text) + embed.set_image(url=STATES[valenstate]["flag"]) + await ctx.send(embed=embed) + + +def setup(bot: Bot) -> None: + """Load the Valenstate Cog.""" + bot.add_cog(MyValenstate()) diff --git a/bot/exts/holidays/valentines/pickuplines.py b/bot/exts/holidays/valentines/pickuplines.py new file mode 100644 index 00000000..bc4b88c6 --- /dev/null +++ b/bot/exts/holidays/valentines/pickuplines.py @@ -0,0 +1,41 @@ +import logging +import random +from json import loads +from pathlib import Path + +import discord +from discord.ext import commands + +from bot.bot import Bot +from bot.constants import Colours + +log = logging.getLogger(__name__) + +PICKUP_LINES = loads(Path("bot/resources/holidays/valentines/pickup_lines.json").read_text("utf8")) + + +class PickupLine(commands.Cog): + """A cog that gives random cheesy pickup lines.""" + + @commands.command() + async def pickupline(self, ctx: commands.Context) -> None: + """ + Gives you a random pickup line. + + Note that most of them are very cheesy. + """ + random_line = random.choice(PICKUP_LINES["lines"]) + embed = discord.Embed( + title=":cheese: Your pickup line :cheese:", + description=random_line["line"], + color=Colours.pink + ) + embed.set_thumbnail( + url=random_line.get("image", PICKUP_LINES["placeholder"]) + ) + await ctx.send(embed=embed) + + +def setup(bot: Bot) -> None: + """Load the Pickup lines Cog.""" + bot.add_cog(PickupLine()) diff --git a/bot/exts/holidays/valentines/savethedate.py b/bot/exts/holidays/valentines/savethedate.py new file mode 100644 index 00000000..3638c1ef --- /dev/null +++ b/bot/exts/holidays/valentines/savethedate.py @@ -0,0 +1,38 @@ +import logging +import random +from json import loads +from pathlib import Path + +import discord +from discord.ext import commands + +from bot.bot import Bot +from bot.constants import Colours + +log = logging.getLogger(__name__) + +HEART_EMOJIS = [":heart:", ":gift_heart:", ":revolving_hearts:", ":sparkling_heart:", ":two_hearts:"] + +VALENTINES_DATES = loads(Path("bot/resources/holidays/valentines/date_ideas.json").read_text("utf8")) + + +class SaveTheDate(commands.Cog): + """A cog that gives random suggestion for a Valentine's date.""" + + @commands.command() + async def savethedate(self, ctx: commands.Context) -> None: + """Gives you ideas for what to do on a date with your valentine.""" + random_date = random.choice(VALENTINES_DATES["ideas"]) + emoji_1 = random.choice(HEART_EMOJIS) + emoji_2 = random.choice(HEART_EMOJIS) + embed = discord.Embed( + title=f"{emoji_1}{random_date['name']}{emoji_2}", + description=f"{random_date['description']}", + colour=Colours.pink + ) + await ctx.send(embed=embed) + + +def setup(bot: Bot) -> None: + """Load the Save the date Cog.""" + bot.add_cog(SaveTheDate()) diff --git a/bot/exts/holidays/valentines/valentine_zodiac.py b/bot/exts/holidays/valentines/valentine_zodiac.py new file mode 100644 index 00000000..d1b3a630 --- /dev/null +++ b/bot/exts/holidays/valentines/valentine_zodiac.py @@ -0,0 +1,146 @@ +import calendar +import json +import logging +import random +from datetime import datetime +from pathlib import Path +from typing import Union + +import discord +from discord.ext import commands + +from bot.bot import Bot +from bot.constants import Colours + +log = logging.getLogger(__name__) + +LETTER_EMOJI = ":love_letter:" +HEART_EMOJIS = [":heart:", ":gift_heart:", ":revolving_hearts:", ":sparkling_heart:", ":two_hearts:"] + + +class ValentineZodiac(commands.Cog): + """A Cog that returns a counter compatible zodiac sign to the given user's zodiac sign.""" + + def __init__(self): + self.zodiacs, self.zodiac_fact = self.load_comp_json() + + @staticmethod + def load_comp_json() -> tuple[dict, dict]: + """Load zodiac compatibility from static JSON resource.""" + explanation_file = Path("bot/resources/holidays/valentines/zodiac_explanation.json") + compatibility_file = Path("bot/resources/holidays/valentines/zodiac_compatibility.json") + + zodiac_fact = json.loads(explanation_file.read_text("utf8")) + + for zodiac_data in zodiac_fact.values(): + zodiac_data["start_at"] = datetime.fromisoformat(zodiac_data["start_at"]) + zodiac_data["end_at"] = datetime.fromisoformat(zodiac_data["end_at"]) + + zodiacs = json.loads(compatibility_file.read_text("utf8")) + + return zodiacs, zodiac_fact + + def generate_invalidname_embed(self, zodiac: str) -> discord.Embed: + """Returns error embed.""" + embed = discord.Embed() + embed.color = Colours.soft_red + error_msg = f"**{zodiac}** is not a valid zodiac sign, here is the list of valid zodiac signs.\n" + names = list(self.zodiac_fact) + middle_index = len(names) // 2 + first_half_names = ", ".join(names[:middle_index]) + second_half_names = ", ".join(names[middle_index:]) + embed.description = error_msg + first_half_names + ",\n" + second_half_names + log.info("Invalid zodiac name provided.") + return embed + + def zodiac_build_embed(self, zodiac: str) -> discord.Embed: + """Gives informative zodiac embed.""" + zodiac = zodiac.capitalize() + embed = discord.Embed() + embed.color = Colours.pink + if zodiac in self.zodiac_fact: + log.trace("Making zodiac embed.") + embed.title = f"__{zodiac}__" + embed.description = self.zodiac_fact[zodiac]["About"] + embed.add_field(name="__Motto__", value=self.zodiac_fact[zodiac]["Motto"], inline=False) + embed.add_field(name="__Strengths__", value=self.zodiac_fact[zodiac]["Strengths"], inline=False) + embed.add_field(name="__Weaknesses__", value=self.zodiac_fact[zodiac]["Weaknesses"], inline=False) + embed.add_field(name="__Full form__", value=self.zodiac_fact[zodiac]["full_form"], inline=False) + embed.set_thumbnail(url=self.zodiac_fact[zodiac]["url"]) + else: + embed = self.generate_invalidname_embed(zodiac) + log.trace("Successfully created zodiac information embed.") + return embed + + def zodiac_date_verifier(self, query_date: datetime) -> str: + """Returns zodiac sign by checking date.""" + for zodiac_name, zodiac_data in self.zodiac_fact.items(): + if zodiac_data["start_at"].date() <= query_date.date() <= zodiac_data["end_at"].date(): + log.trace("Zodiac name sent.") + return zodiac_name + + @commands.group(name="zodiac", invoke_without_command=True) + async def zodiac(self, ctx: commands.Context, zodiac_sign: str) -> None: + """Provides information about zodiac sign by taking zodiac sign name as input.""" + final_embed = self.zodiac_build_embed(zodiac_sign) + await ctx.send(embed=final_embed) + log.trace("Embed successfully sent.") + + @zodiac.command(name="date") + async def date_and_month(self, ctx: commands.Context, date: int, month: Union[int, str]) -> None: + """Provides information about zodiac sign by taking month and date as input.""" + if isinstance(month, str): + month = month.capitalize() + try: + month = list(calendar.month_abbr).index(month[:3]) + log.trace("Valid month name entered by user") + except ValueError: + log.info("Invalid month name entered by user") + await ctx.send(f"Sorry, but `{month}` is not a valid month name.") + return + if (month == 1 and 1 <= date <= 19) or (month == 12 and 22 <= date <= 31): + zodiac = "capricorn" + final_embed = self.zodiac_build_embed(zodiac) + else: + try: + zodiac_sign_based_on_date = self.zodiac_date_verifier(datetime(2020, month, date)) + log.trace("zodiac sign based on month and date received.") + except ValueError as e: + final_embed = discord.Embed() + final_embed.color = Colours.soft_red + final_embed.description = f"Zodiac sign could not be found because.\n```\n{e}\n```" + log.info(f"Error in 'zodiac date' command:\n{e}.") + else: + final_embed = self.zodiac_build_embed(zodiac_sign_based_on_date) + + await ctx.send(embed=final_embed) + log.trace("Embed from date successfully sent.") + + @zodiac.command(name="partnerzodiac", aliases=("partner",)) + async def partner_zodiac(self, ctx: commands.Context, zodiac_sign: str) -> None: + """Provides a random counter compatible zodiac sign to the given user's zodiac sign.""" + embed = discord.Embed() + embed.color = Colours.pink + zodiac_check = self.zodiacs.get(zodiac_sign.capitalize()) + if zodiac_check: + compatible_zodiac = random.choice(self.zodiacs[zodiac_sign.capitalize()]) + emoji1 = random.choice(HEART_EMOJIS) + emoji2 = random.choice(HEART_EMOJIS) + embed.title = "Zodiac Compatibility" + embed.description = ( + f"{zodiac_sign.capitalize()}{emoji1}{compatible_zodiac['Zodiac']}\n" + f"{emoji2}Compatibility meter : {compatible_zodiac['compatibility_score']}{emoji2}" + ) + embed.add_field( + name=f"A letter from Dr.Zodiac {LETTER_EMOJI}", + value=compatible_zodiac["description"] + ) + else: + embed = self.generate_invalidname_embed(zodiac_sign) + await ctx.send(embed=embed) + log.trace("Embed from date successfully sent.") + + +def setup(bot: Bot) -> None: + """Load the Valentine zodiac Cog.""" + bot.add_cog(ValentineZodiac()) diff --git a/bot/exts/holidays/valentines/whoisvalentine.py b/bot/exts/holidays/valentines/whoisvalentine.py new file mode 100644 index 00000000..67e46aa4 --- /dev/null +++ b/bot/exts/holidays/valentines/whoisvalentine.py @@ -0,0 +1,49 @@ +import json +import logging +from pathlib import Path +from random import choice + +import discord +from discord.ext import commands + +from bot.bot import Bot +from bot.constants import Colours + +log = logging.getLogger(__name__) + +FACTS = json.loads(Path("bot/resources/holidays/valentines/valentine_facts.json").read_text("utf8")) + + +class ValentineFacts(commands.Cog): + """A Cog for displaying facts about Saint Valentine.""" + + @commands.command(aliases=("whoisvalentine", "saint_valentine")) + async def who_is_valentine(self, ctx: commands.Context) -> None: + """Displays info about Saint Valentine.""" + embed = discord.Embed( + title="Who is Saint Valentine?", + description=FACTS["whois"], + color=Colours.pink + ) + embed.set_thumbnail( + url="https://upload.wikimedia.org/wikipedia/commons/thumb/f/f1/Saint_Valentine_-_" + "facial_reconstruction.jpg/1024px-Saint_Valentine_-_facial_reconstruction.jpg" + ) + + await ctx.send(embed=embed) + + @commands.command() + async def valentine_fact(self, ctx: commands.Context) -> None: + """Shows a random fact about Valentine's Day.""" + embed = discord.Embed( + title=choice(FACTS["titles"]), + description=choice(FACTS["text"]), + color=Colours.pink + ) + + await ctx.send(embed=embed) + + +def setup(bot: Bot) -> None: + """Load the Who is Valentine Cog.""" + bot.add_cog(ValentineFacts()) diff --git a/bot/exts/valentines/__init__.py b/bot/exts/valentines/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/bot/exts/valentines/be_my_valentine.py b/bot/exts/valentines/be_my_valentine.py deleted file mode 100644 index c238027a..00000000 --- a/bot/exts/valentines/be_my_valentine.py +++ /dev/null @@ -1,192 +0,0 @@ -import logging -import random -from json import loads -from pathlib import Path - -import discord -from discord.ext import commands - -from bot.bot import Bot -from bot.constants import Channels, Colours, Lovefest, Month -from bot.utils.decorators import in_month -from bot.utils.extensions import invoke_help_command - -log = logging.getLogger(__name__) - -HEART_EMOJIS = [":heart:", ":gift_heart:", ":revolving_hearts:", ":sparkling_heart:", ":two_hearts:"] - - -class BeMyValentine(commands.Cog): - """A cog that sends Valentines to other users!""" - - def __init__(self, bot: Bot): - self.bot = bot - self.valentines = self.load_json() - - @staticmethod - def load_json() -> dict: - """Load Valentines messages from the static resources.""" - p = Path("bot/resources/valentines/bemyvalentine_valentines.json") - return loads(p.read_text("utf8")) - - @in_month(Month.FEBRUARY) - @commands.group(name="lovefest") - async def lovefest_role(self, ctx: commands.Context) -> None: - """ - Subscribe or unsubscribe from the lovefest role. - - The lovefest role makes you eligible to receive anonymous valentines from other users. - - 1) use the command \".lovefest sub\" to get the lovefest role. - 2) use the command \".lovefest unsub\" to get rid of the lovefest role. - """ - if not ctx.invoked_subcommand: - await invoke_help_command(ctx) - - @lovefest_role.command(name="sub") - async def add_role(self, ctx: commands.Context) -> None: - """Adds the lovefest role.""" - user = ctx.author - role = ctx.guild.get_role(Lovefest.role_id) - if role not in ctx.author.roles: - await user.add_roles(role) - await ctx.send("The Lovefest role has been added !") - else: - await ctx.send("You already have the role !") - - @lovefest_role.command(name="unsub") - async def remove_role(self, ctx: commands.Context) -> None: - """Removes the lovefest role.""" - user = ctx.author - role = ctx.guild.get_role(Lovefest.role_id) - if role not in ctx.author.roles: - await ctx.send("You dont have the lovefest role.") - else: - await user.remove_roles(role) - await ctx.send("The lovefest role has been successfully removed!") - - @commands.cooldown(1, 1800, commands.BucketType.user) - @commands.group(name="bemyvalentine", invoke_without_command=True) - async def send_valentine( - self, ctx: commands.Context, user: discord.Member, *, valentine_type: str = None - ) -> None: - """ - Send a valentine to a specified user with the lovefest role. - - syntax: .bemyvalentine [user] [p/poem/c/compliment/or you can type your own valentine message] - (optional) - - example: .bemyvalentine Iceman#6508 p (sends a poem to Iceman) - example: .bemyvalentine Iceman Hey I love you, wanna hang around ? (sends the custom message to Iceman) - NOTE : AVOID TAGGING THE USER MOST OF THE TIMES.JUST TRIM THE '@' when using this command. - """ - if ctx.guild is None: - # This command should only be used in the server - raise commands.UserInputError("You are supposed to use this command in the server.") - - if Lovefest.role_id not in [role.id for role in user.roles]: - raise commands.UserInputError( - f"You cannot send a valentine to {user} as they do not have the lovefest role!" - ) - - if user == ctx.author: - # Well a user can't valentine himself/herself. - raise commands.UserInputError("Come on, you can't send a valentine to yourself :expressionless:") - - emoji_1, emoji_2 = self.random_emoji() - channel = self.bot.get_channel(Channels.community_bot_commands) - valentine, title = self.valentine_check(valentine_type) - - embed = discord.Embed( - title=f"{emoji_1} {title} {user.display_name} {emoji_2}", - description=f"{valentine} \n **{emoji_2}From {ctx.author}{emoji_1}**", - color=Colours.pink - ) - await channel.send(user.mention, embed=embed) - - @commands.cooldown(1, 1800, commands.BucketType.user) - @send_valentine.command(name="secret") - async def anonymous( - self, ctx: commands.Context, user: discord.Member, *, valentine_type: str = None - ) -> None: - """ - Send an anonymous Valentine via DM to to a specified user with the lovefest role. - - syntax : .bemyvalentine secret [user] [p/poem/c/compliment/or you can type your own valentine message] - (optional) - - example : .bemyvalentine secret Iceman#6508 p (sends a poem to Iceman in DM making you anonymous) - example : .bemyvalentine secret Iceman#6508 Hey I love you, wanna hang around ? (sends the custom message to - Iceman in DM making you anonymous) - """ - if Lovefest.role_id not in [role.id for role in user.roles]: - await ctx.message.delete() - raise commands.UserInputError( - f"You cannot send a valentine to {user} as they do not have the lovefest role!" - ) - - if user == ctx.author: - # Well a user cant valentine himself/herself. - raise commands.UserInputError("Come on, you can't send a valentine to yourself :expressionless:") - - emoji_1, emoji_2 = self.random_emoji() - valentine, title = self.valentine_check(valentine_type) - - embed = discord.Embed( - title=f"{emoji_1}{title} {user.display_name}{emoji_2}", - description=f"{valentine} \n **{emoji_2}From anonymous{emoji_1}**", - color=Colours.pink - ) - await ctx.message.delete() - try: - await user.send(embed=embed) - except discord.Forbidden: - raise commands.UserInputError(f"{user} has DMs disabled, so I couldn't send the message. Sorry!") - else: - await ctx.author.send(f"Your message has been sent to {user}") - - def valentine_check(self, valentine_type: str) -> tuple[str, str]: - """Return the appropriate Valentine type & title based on the invoking user's input.""" - if valentine_type is None: - return self.random_valentine() - - elif valentine_type.lower() in ["p", "poem"]: - return self.valentine_poem(), "A poem dedicated to" - - elif valentine_type.lower() in ["c", "compliment"]: - return self.valentine_compliment(), "A compliment for" - - else: - # in this case, the user decides to type his own valentine. - return valentine_type, "A message for" - - @staticmethod - def random_emoji() -> tuple[str, str]: - """Return two random emoji from the module-defined constants.""" - emoji_1 = random.choice(HEART_EMOJIS) - emoji_2 = random.choice(HEART_EMOJIS) - return emoji_1, emoji_2 - - def random_valentine(self) -> tuple[str, str]: - """Grabs a random poem or a compliment (any message).""" - valentine_poem = random.choice(self.valentines["valentine_poems"]) - valentine_compliment = random.choice(self.valentines["valentine_compliments"]) - random_valentine = random.choice([valentine_compliment, valentine_poem]) - if random_valentine == valentine_poem: - title = "A poem dedicated to" - else: - title = "A compliment for " - return random_valentine, title - - def valentine_poem(self) -> str: - """Grabs a random poem.""" - return random.choice(self.valentines["valentine_poems"]) - - def valentine_compliment(self) -> str: - """Grabs a random compliment.""" - return random.choice(self.valentines["valentine_compliments"]) - - -def setup(bot: Bot) -> None: - """Load the Be my Valentine Cog.""" - bot.add_cog(BeMyValentine(bot)) diff --git a/bot/exts/valentines/lovecalculator.py b/bot/exts/valentines/lovecalculator.py deleted file mode 100644 index 1cb10e64..00000000 --- a/bot/exts/valentines/lovecalculator.py +++ /dev/null @@ -1,99 +0,0 @@ -import bisect -import hashlib -import json -import logging -import random -from pathlib import Path -from typing import Coroutine, Optional - -import discord -from discord import Member -from discord.ext import commands -from discord.ext.commands import BadArgument, Cog, clean_content - -from bot.bot import Bot -from bot.constants import Channels, Client, Lovefest, Month -from bot.utils.decorators import in_month - -log = logging.getLogger(__name__) - -LOVE_DATA = json.loads(Path("bot/resources/valentines/love_matches.json").read_text("utf8")) -LOVE_DATA = sorted((int(key), value) for key, value in LOVE_DATA.items()) - - -class LoveCalculator(Cog): - """A cog for calculating the love between two people.""" - - @in_month(Month.FEBRUARY) - @commands.command(aliases=("love_calculator", "love_calc")) - @commands.cooldown(rate=1, per=5, type=commands.BucketType.user) - async def love(self, ctx: commands.Context, who: Member, whom: Optional[Member] = None) -> None: - """ - Tells you how much the two love each other. - - This command requires at least one member as input, if two are given love will be calculated between - those two users, if only one is given, the second member is asusmed to be the invoker. - Members are converted from: - - User ID - - Mention - - name#discrim - - name - - nickname - - Any two arguments will always yield the same result, regardless of the order of arguments: - Running .love @joe#6000 @chrisjl#2655 will always yield the same result. - Running .love @chrisjl#2655 @joe#6000 will yield the same result as before. - """ - if ( - Lovefest.role_id not in [role.id for role in who.roles] - or (whom is not None and Lovefest.role_id not in [role.id for role in whom.roles]) - ): - raise BadArgument( - "This command can only be ran against members with the lovefest role! " - "This role be can assigned by running " - f"`{Client.prefix}lovefest sub` in <#{Channels.community_bot_commands}>." - ) - - if whom is None: - whom = ctx.author - - def normalize(arg: Member) -> Coroutine: - # This has to be done manually to be applied to usernames - return clean_content(escape_markdown=True).convert(ctx, str(arg)) - - # Sort to ensure same result for same input, regardless of order - who, whom = sorted([await normalize(arg) for arg in (who, whom)]) - - # Hash inputs to guarantee consistent results (hashing algorithm choice arbitrary) - # - # hashlib is used over the builtin hash() to guarantee same result over multiple runtimes - m = hashlib.sha256(who.encode() + whom.encode()) - # Mod 101 for [0, 100] - love_percent = sum(m.digest()) % 101 - - # We need the -1 due to how bisect returns the point - # see the documentation for further detail - # https://docs.python.org/3/library/bisect.html#bisect.bisect - index = bisect.bisect(LOVE_DATA, (love_percent,)) - 1 - # We already have the nearest "fit" love level - # We only need the dict, so we can ditch the first element - _, data = LOVE_DATA[index] - - status = random.choice(data["titles"]) - embed = discord.Embed( - title=status, - description=f"{who} \N{HEAVY BLACK HEART} {whom} scored {love_percent}%!\n\u200b", - color=discord.Color.dark_magenta() - ) - embed.add_field( - name="A letter from Dr. Love:", - value=data["text"] - ) - embed.set_footer(text=f"You can unsubscribe from lovefest by using {Client.prefix}lovefest unsub") - - await ctx.send(embed=embed) - - -def setup(bot: Bot) -> None: - """Load the Love calculator Cog.""" - bot.add_cog(LoveCalculator()) diff --git a/bot/exts/valentines/movie_generator.py b/bot/exts/valentines/movie_generator.py deleted file mode 100644 index d2dc8213..00000000 --- a/bot/exts/valentines/movie_generator.py +++ /dev/null @@ -1,67 +0,0 @@ -import logging -import random -from os import environ - -import discord -from discord.ext import commands - -from bot.bot import Bot - -TMDB_API_KEY = environ.get("TMDB_API_KEY") - -log = logging.getLogger(__name__) - - -class RomanceMovieFinder(commands.Cog): - """A Cog that returns a random romance movie suggestion to a user.""" - - def __init__(self, bot: Bot): - self.bot = bot - - @commands.command(name="romancemovie") - async def romance_movie(self, ctx: commands.Context) -> None: - """Randomly selects a romance movie and displays information about it.""" - # Selecting a random int to parse it to the page parameter - random_page = random.randint(0, 20) - # TMDB api params - params = { - "api_key": TMDB_API_KEY, - "language": "en-US", - "sort_by": "popularity.desc", - "include_adult": "false", - "include_video": "false", - "page": random_page, - "with_genres": "10749" - } - # The api request url - request_url = "https://api.themoviedb.org/3/discover/movie" - async with self.bot.http_session.get(request_url, params=params) as resp: - # Trying to load the json file returned from the api - try: - data = await resp.json() - # Selecting random result from results object in the json file - selected_movie = random.choice(data["results"]) - - embed = discord.Embed( - title=f":sparkling_heart: {selected_movie['title']} :sparkling_heart:", - description=selected_movie["overview"], - ) - embed.set_image(url=f"http://image.tmdb.org/t/p/w200/{selected_movie['poster_path']}") - embed.add_field(name="Release date :clock1:", value=selected_movie["release_date"]) - embed.add_field(name="Rating :star2:", value=selected_movie["vote_average"]) - embed.set_footer(text="This product uses the TMDb API but is not endorsed or certified by TMDb.") - embed.set_thumbnail(url="https://i.imgur.com/LtFtC8H.png") - await ctx.send(embed=embed) - except KeyError: - warning_message = ( - "A KeyError was raised while fetching information on the movie. The API service" - " could be unavailable or the API key could be set incorrectly." - ) - embed = discord.Embed(title=warning_message) - log.warning(warning_message) - await ctx.send(embed=embed) - - -def setup(bot: Bot) -> None: - """Load the Romance movie Cog.""" - bot.add_cog(RomanceMovieFinder(bot)) diff --git a/bot/exts/valentines/myvalenstate.py b/bot/exts/valentines/myvalenstate.py deleted file mode 100644 index 52a61011..00000000 --- a/bot/exts/valentines/myvalenstate.py +++ /dev/null @@ -1,82 +0,0 @@ -import collections -import json -import logging -from pathlib import Path -from random import choice - -import discord -from discord.ext import commands - -from bot.bot import Bot -from bot.constants import Colours - -log = logging.getLogger(__name__) - -STATES = json.loads(Path("bot/resources/valentines/valenstates.json").read_text("utf8")) - - -class MyValenstate(commands.Cog): - """A Cog to find your most likely Valentine's vacation destination.""" - - def levenshtein(self, source: str, goal: str) -> int: - """Calculates the Levenshtein Distance between source and goal.""" - if len(source) < len(goal): - return self.levenshtein(goal, source) - if len(source) == 0: - return len(goal) - if len(goal) == 0: - return len(source) - - pre_row = list(range(0, len(source) + 1)) - for i, source_c in enumerate(source): - cur_row = [i + 1] - for j, goal_c in enumerate(goal): - if source_c != goal_c: - cur_row.append(min(pre_row[j], pre_row[j + 1], cur_row[j]) + 1) - else: - cur_row.append(min(pre_row[j], pre_row[j + 1], cur_row[j])) - pre_row = cur_row - return pre_row[-1] - - @commands.command() - async def myvalenstate(self, ctx: commands.Context, *, name: str = None) -> None: - """Find the vacation spot(s) with the most matching characters to the invoking user.""" - eq_chars = collections.defaultdict(int) - if name is None: - author = ctx.author.name.lower().replace(" ", "") - else: - author = name.lower().replace(" ", "") - - for state in STATES.keys(): - lower_state = state.lower().replace(" ", "") - eq_chars[state] = self.levenshtein(author, lower_state) - - matches = [x for x, y in eq_chars.items() if y == min(eq_chars.values())] - valenstate = choice(matches) - matches.remove(valenstate) - - embed_title = "But there are more!" - if len(matches) > 1: - leftovers = f"{', '.join(matches[:-2])}, and {matches[-1]}" - embed_text = f"You have {len(matches)} more matches, these being {leftovers}." - elif len(matches) == 1: - embed_title = "But there's another one!" - embed_text = f"You have another match, this being {matches[0]}." - else: - embed_title = "You have a true match!" - embed_text = "This state is your true Valenstate! There are no states that would suit" \ - " you better" - - embed = discord.Embed( - title=f"Your Valenstate is {valenstate} \u2764", - description=STATES[valenstate]["text"], - colour=Colours.pink - ) - embed.add_field(name=embed_title, value=embed_text) - embed.set_image(url=STATES[valenstate]["flag"]) - await ctx.send(embed=embed) - - -def setup(bot: Bot) -> None: - """Load the Valenstate Cog.""" - bot.add_cog(MyValenstate()) diff --git a/bot/exts/valentines/pickuplines.py b/bot/exts/valentines/pickuplines.py deleted file mode 100644 index 00741a72..00000000 --- a/bot/exts/valentines/pickuplines.py +++ /dev/null @@ -1,41 +0,0 @@ -import logging -import random -from json import loads -from pathlib import Path - -import discord -from discord.ext import commands - -from bot.bot import Bot -from bot.constants import Colours - -log = logging.getLogger(__name__) - -PICKUP_LINES = loads(Path("bot/resources/valentines/pickup_lines.json").read_text("utf8")) - - -class PickupLine(commands.Cog): - """A cog that gives random cheesy pickup lines.""" - - @commands.command() - async def pickupline(self, ctx: commands.Context) -> None: - """ - Gives you a random pickup line. - - Note that most of them are very cheesy. - """ - random_line = random.choice(PICKUP_LINES["lines"]) - embed = discord.Embed( - title=":cheese: Your pickup line :cheese:", - description=random_line["line"], - color=Colours.pink - ) - embed.set_thumbnail( - url=random_line.get("image", PICKUP_LINES["placeholder"]) - ) - await ctx.send(embed=embed) - - -def setup(bot: Bot) -> None: - """Load the Pickup lines Cog.""" - bot.add_cog(PickupLine()) diff --git a/bot/exts/valentines/savethedate.py b/bot/exts/valentines/savethedate.py deleted file mode 100644 index ffe559d6..00000000 --- a/bot/exts/valentines/savethedate.py +++ /dev/null @@ -1,38 +0,0 @@ -import logging -import random -from json import loads -from pathlib import Path - -import discord -from discord.ext import commands - -from bot.bot import Bot -from bot.constants import Colours - -log = logging.getLogger(__name__) - -HEART_EMOJIS = [":heart:", ":gift_heart:", ":revolving_hearts:", ":sparkling_heart:", ":two_hearts:"] - -VALENTINES_DATES = loads(Path("bot/resources/valentines/date_ideas.json").read_text("utf8")) - - -class SaveTheDate(commands.Cog): - """A cog that gives random suggestion for a Valentine's date.""" - - @commands.command() - async def savethedate(self, ctx: commands.Context) -> None: - """Gives you ideas for what to do on a date with your valentine.""" - random_date = random.choice(VALENTINES_DATES["ideas"]) - emoji_1 = random.choice(HEART_EMOJIS) - emoji_2 = random.choice(HEART_EMOJIS) - embed = discord.Embed( - title=f"{emoji_1}{random_date['name']}{emoji_2}", - description=f"{random_date['description']}", - colour=Colours.pink - ) - await ctx.send(embed=embed) - - -def setup(bot: Bot) -> None: - """Load the Save the date Cog.""" - bot.add_cog(SaveTheDate()) diff --git a/bot/exts/valentines/valentine_zodiac.py b/bot/exts/valentines/valentine_zodiac.py deleted file mode 100644 index 243f156e..00000000 --- a/bot/exts/valentines/valentine_zodiac.py +++ /dev/null @@ -1,146 +0,0 @@ -import calendar -import json -import logging -import random -from datetime import datetime -from pathlib import Path -from typing import Union - -import discord -from discord.ext import commands - -from bot.bot import Bot -from bot.constants import Colours - -log = logging.getLogger(__name__) - -LETTER_EMOJI = ":love_letter:" -HEART_EMOJIS = [":heart:", ":gift_heart:", ":revolving_hearts:", ":sparkling_heart:", ":two_hearts:"] - - -class ValentineZodiac(commands.Cog): - """A Cog that returns a counter compatible zodiac sign to the given user's zodiac sign.""" - - def __init__(self): - self.zodiacs, self.zodiac_fact = self.load_comp_json() - - @staticmethod - def load_comp_json() -> tuple[dict, dict]: - """Load zodiac compatibility from static JSON resource.""" - explanation_file = Path("bot/resources/valentines/zodiac_explanation.json") - compatibility_file = Path("bot/resources/valentines/zodiac_compatibility.json") - - zodiac_fact = json.loads(explanation_file.read_text("utf8")) - - for zodiac_data in zodiac_fact.values(): - zodiac_data["start_at"] = datetime.fromisoformat(zodiac_data["start_at"]) - zodiac_data["end_at"] = datetime.fromisoformat(zodiac_data["end_at"]) - - zodiacs = json.loads(compatibility_file.read_text("utf8")) - - return zodiacs, zodiac_fact - - def generate_invalidname_embed(self, zodiac: str) -> discord.Embed: - """Returns error embed.""" - embed = discord.Embed() - embed.color = Colours.soft_red - error_msg = f"**{zodiac}** is not a valid zodiac sign, here is the list of valid zodiac signs.\n" - names = list(self.zodiac_fact) - middle_index = len(names) // 2 - first_half_names = ", ".join(names[:middle_index]) - second_half_names = ", ".join(names[middle_index:]) - embed.description = error_msg + first_half_names + ",\n" + second_half_names - log.info("Invalid zodiac name provided.") - return embed - - def zodiac_build_embed(self, zodiac: str) -> discord.Embed: - """Gives informative zodiac embed.""" - zodiac = zodiac.capitalize() - embed = discord.Embed() - embed.color = Colours.pink - if zodiac in self.zodiac_fact: - log.trace("Making zodiac embed.") - embed.title = f"__{zodiac}__" - embed.description = self.zodiac_fact[zodiac]["About"] - embed.add_field(name="__Motto__", value=self.zodiac_fact[zodiac]["Motto"], inline=False) - embed.add_field(name="__Strengths__", value=self.zodiac_fact[zodiac]["Strengths"], inline=False) - embed.add_field(name="__Weaknesses__", value=self.zodiac_fact[zodiac]["Weaknesses"], inline=False) - embed.add_field(name="__Full form__", value=self.zodiac_fact[zodiac]["full_form"], inline=False) - embed.set_thumbnail(url=self.zodiac_fact[zodiac]["url"]) - else: - embed = self.generate_invalidname_embed(zodiac) - log.trace("Successfully created zodiac information embed.") - return embed - - def zodiac_date_verifier(self, query_date: datetime) -> str: - """Returns zodiac sign by checking date.""" - for zodiac_name, zodiac_data in self.zodiac_fact.items(): - if zodiac_data["start_at"].date() <= query_date.date() <= zodiac_data["end_at"].date(): - log.trace("Zodiac name sent.") - return zodiac_name - - @commands.group(name="zodiac", invoke_without_command=True) - async def zodiac(self, ctx: commands.Context, zodiac_sign: str) -> None: - """Provides information about zodiac sign by taking zodiac sign name as input.""" - final_embed = self.zodiac_build_embed(zodiac_sign) - await ctx.send(embed=final_embed) - log.trace("Embed successfully sent.") - - @zodiac.command(name="date") - async def date_and_month(self, ctx: commands.Context, date: int, month: Union[int, str]) -> None: - """Provides information about zodiac sign by taking month and date as input.""" - if isinstance(month, str): - month = month.capitalize() - try: - month = list(calendar.month_abbr).index(month[:3]) - log.trace("Valid month name entered by user") - except ValueError: - log.info("Invalid month name entered by user") - await ctx.send(f"Sorry, but `{month}` is not a valid month name.") - return - if (month == 1 and 1 <= date <= 19) or (month == 12 and 22 <= date <= 31): - zodiac = "capricorn" - final_embed = self.zodiac_build_embed(zodiac) - else: - try: - zodiac_sign_based_on_date = self.zodiac_date_verifier(datetime(2020, month, date)) - log.trace("zodiac sign based on month and date received.") - except ValueError as e: - final_embed = discord.Embed() - final_embed.color = Colours.soft_red - final_embed.description = f"Zodiac sign could not be found because.\n```\n{e}\n```" - log.info(f"Error in 'zodiac date' command:\n{e}.") - else: - final_embed = self.zodiac_build_embed(zodiac_sign_based_on_date) - - await ctx.send(embed=final_embed) - log.trace("Embed from date successfully sent.") - - @zodiac.command(name="partnerzodiac", aliases=("partner",)) - async def partner_zodiac(self, ctx: commands.Context, zodiac_sign: str) -> None: - """Provides a random counter compatible zodiac sign to the given user's zodiac sign.""" - embed = discord.Embed() - embed.color = Colours.pink - zodiac_check = self.zodiacs.get(zodiac_sign.capitalize()) - if zodiac_check: - compatible_zodiac = random.choice(self.zodiacs[zodiac_sign.capitalize()]) - emoji1 = random.choice(HEART_EMOJIS) - emoji2 = random.choice(HEART_EMOJIS) - embed.title = "Zodiac Compatibility" - embed.description = ( - f"{zodiac_sign.capitalize()}{emoji1}{compatible_zodiac['Zodiac']}\n" - f"{emoji2}Compatibility meter : {compatible_zodiac['compatibility_score']}{emoji2}" - ) - embed.add_field( - name=f"A letter from Dr.Zodiac {LETTER_EMOJI}", - value=compatible_zodiac["description"] - ) - else: - embed = self.generate_invalidname_embed(zodiac_sign) - await ctx.send(embed=embed) - log.trace("Embed from date successfully sent.") - - -def setup(bot: Bot) -> None: - """Load the Valentine zodiac Cog.""" - bot.add_cog(ValentineZodiac()) diff --git a/bot/exts/valentines/whoisvalentine.py b/bot/exts/valentines/whoisvalentine.py deleted file mode 100644 index 211b1f27..00000000 --- a/bot/exts/valentines/whoisvalentine.py +++ /dev/null @@ -1,49 +0,0 @@ -import json -import logging -from pathlib import Path -from random import choice - -import discord -from discord.ext import commands - -from bot.bot import Bot -from bot.constants import Colours - -log = logging.getLogger(__name__) - -FACTS = json.loads(Path("bot/resources/valentines/valentine_facts.json").read_text("utf8")) - - -class ValentineFacts(commands.Cog): - """A Cog for displaying facts about Saint Valentine.""" - - @commands.command(aliases=("whoisvalentine", "saint_valentine")) - async def who_is_valentine(self, ctx: commands.Context) -> None: - """Displays info about Saint Valentine.""" - embed = discord.Embed( - title="Who is Saint Valentine?", - description=FACTS["whois"], - color=Colours.pink - ) - embed.set_thumbnail( - url="https://upload.wikimedia.org/wikipedia/commons/thumb/f/f1/Saint_Valentine_-_" - "facial_reconstruction.jpg/1024px-Saint_Valentine_-_facial_reconstruction.jpg" - ) - - await ctx.send(embed=embed) - - @commands.command() - async def valentine_fact(self, ctx: commands.Context) -> None: - """Shows a random fact about Valentine's Day.""" - embed = discord.Embed( - title=choice(FACTS["titles"]), - description=choice(FACTS["text"]), - color=Colours.pink - ) - - await ctx.send(embed=embed) - - -def setup(bot: Bot) -> None: - """Load the Who is Valentine Cog.""" - bot.add_cog(ValentineFacts()) diff --git a/bot/resources/holidays/valentines/bemyvalentine_valentines.json b/bot/resources/holidays/valentines/bemyvalentine_valentines.json new file mode 100644 index 00000000..7d5d3705 --- /dev/null +++ b/bot/resources/holidays/valentines/bemyvalentine_valentines.json @@ -0,0 +1,45 @@ +{ + "valentine_poems": [ + + "If you were my rose,\nthen I'd be your sun,\npainting you rainbows when the rains come.\nI'd change my orbit to banish the night,\nas to keep you in my nurturing light.", + "If you were my world, then I'd be your moon,\nyour silent protector, a night-light in the gloom.\nOur fates intertwined, two bodies in motion through time and space,\nour dance of devotion.", + "If you were my island, then I'd be your sea,\ncaressing your shores, soft and gentle I'd be.\nMy tidal embrace would leave gifts on your sands,\nbut by current and storm, I'd ward your gentle lands.", + "If you were love's promise, then I would be time,\nyour constant companion till stars align.\nAnd though we are mere mortals,\ntrue love is divine,and my devotion eternal,\nto my one valentine.", + "Have I told you,\nValentine, That I’m all wrapped up in you?\nMy feelings for you bring to me A joy I never knew.\n \n You light up everything for me; In my heart you shine;\nIlluminating my whole life,\nMy darling Valentine.", + "My days are filled with yearning;\nMy nights are full of dreams.\nI’m always thinking of you;\nI’m in a trance, it seems.\n\n You’re all I ever wanted;\nI wish you could be mine;\nAnd so I have to ask you: Will you be my Valentine?", + "My Valentine, I love just you;\nMy devotion I declare.\nI’ll spend my life looking for ways To show you that I care.\n\nPlease say you feel the same for me;\nSay you’ll be forever mine;\nWe’ll share a life of happiness,\nMy treasured Valentine.", + "Every day with you is Valentine's Day, my love.\nEvery day is filled with romance, with love, with sharing and caring.\nEvery day I am reminded how blessed I am to have you as my,\nValentine, my sweetheart, my lover, my friend, my playmate, my companion.\nNo Valentine card, no words at all could express how much I love You,\nhow ecstatic I feel to know that you are mine.\nMy Valentine, every day,\nI'll try to show you that every day I love you more.", + "I lucked out when I met you, sweet thing.\nYou've brought richness to each day I exist.\nYou fill my days with the excitement of love,\nAnd you have since the moment we kissed.\nSo I celebrate Valentine's Day with you,\nWith a love that will always stay fresh and new.", + "You are my everything, Valentine.\nAs a desert creature longs for water, my thirst for you can never be slaked.\nIn a ho-hum day dragging on, thoughts of you bring excitement, joy and pleasure.\nAs a child opens the birthday gift he most wanted,\nI see everything I want in you.\nYou are my everything, Valentine.", + "My love for you is like the raging sea,\nSo powerful and deep it will forever be.\nThrough storm, wind, and heavy rain, It will withstand every pain.\nOur hearts are so pure and love so sweet.\nI love you more with every heartbeat!", + "A million stars up in the sky.\nOne shines brighter - I can't deny.\nA love so precious, a love so true,\na love that comes from me to you.\nThe angels sing when you are near.\nWithin your arms I have nothing to fear.\nYou always know just what to say.\nJust talking to you makes my day.\nI love you, honey, with all of my heart.\nTogether forever and never to part.", + "What do I do,\nWhen I'm still in love with you?\nYou walked away, Cause you didn't want to stay.\nYou broke my heart, you tore me apart.\nEvery day I wait for you, Telling myself our love was true.\nBut when you don't show, more tears start to flow.\nThat's when I know I have to let go.", + "When I say I love you, please believe it's true.\nWhen I say forever, know I'll never leave you.\nWhen I say goodbye, promise me you won't cry,\nBecause the day I'll be saying that will be the day I die.", + "Beauty isn't seen by eyes.\nIt's felt by hearts,\nRecognized by souls,\nIn the presence of love.", + "L is for \"laughter\" we had along the way.\nO is for \"optimism\" you gave me every day.\nV is for \"value\" of being my best friend.\nE is for \"eternity,\" a love that has no end.", + "If roses were red and violets could be blue,\nI'd take us away to a place just for two.\nYou'd see my true colors and all that I felt.\nI'd see that you could love me and nobody else.\nWe'd build ourselves a fortress where we'd run and play.\nYou'd be mine and I'd be yours till our dying day.\nThen I wake and realize you were never here.\nIt's all just my thoughts, my dreams, my hopes...\nBut now it's only tears!" + + ], + "valentine_compliments": [ + + "To the love of my life. I’m the luckiest person on Earth because I have you! I adore you! You’ve taught me that the best thing to hold onto in life is each other. You are my sweetheart, you are my life, you are my everything.", + "It was a million tiny little things that, when you added them all up, they meant we were supposed to be together.", + "When you smile, the whole world stops and stares for a while, cause you're amazing, just the way you are.", + "Take love, multiply it by infinity and take it to the depths of forever... and you still have only a glimpse of how I feel for you.", + "When you kiss me, the world just melts away. When you hold me in your arms, I feel safe. Being in love with you has made me see how wonderful life can be. I love you.", + "No matter how dark the days get, you still know how to make me smile. Even after all this time, you still take my breath away.", + "I don't know what my future holds, but I know I want you in it. I would travel to the moon and back just to see you smile.", + "I may not always say it, but know that with every breath in my body and every beat of my heart I know I will always love you.", + "Darling I will be loving you till we're 70. And baby my heart could still fall as hard at 23. And I'm thinking about how people fall in love in mysterious ways. Maybe just the touch of a hand. Oh me, I fall in love with you every single day. And I just wanna tell you I am. So honey now. Take me into your loving arms. Kiss me under the light of a thousand stars. Place your head on my beating heart. I'm thinking out loud. Maybe we found love right where we are.", + "I love you. I knew it the minute I met you. I'm sorry it took so long for me to catch up. I just got stuck.", + "You are truly beautiful from within. I am serious! It's not just about how pretty you are (which you are, of course), but you have a beautiful heart.", + "If you could see yourself through my eyes, you would know how much I love you. You hold a very special place in my heart! I will love you forever!", + "I don’t need a thousand reasons to feel special. All I need is you to live in this world. You are the sunshine of my life.", + "I wish to be everything that brings a smile on your face and happiness in your heart. I want to love you like no else ever did!", + "Every morning of my life gives you a new reason to love you and to appreciate you for what you’ve given me. You are the one that holds the key to my heart!", + "Each time I look at you, I just smile to myself and think, ‘I certainly could not have done better’. You are perfect the way you are. I love you honey.", + "Look at the computer keyboard, U and I were placed side by side. That’s how the alphabets should be arranged because my love will never cease to exist as long as it’s you and me." + + ] + +} diff --git a/bot/resources/holidays/valentines/date_ideas.json b/bot/resources/holidays/valentines/date_ideas.json new file mode 100644 index 00000000..995f14bb --- /dev/null +++ b/bot/resources/holidays/valentines/date_ideas.json @@ -0,0 +1,125 @@ +{ + "ideas": [ + { + "name": "Chick flick marathon", + "description": "This is a very basic yet highly romantic way of spending the day with your partner. Take a few days to prepare the right playlist and create a romantic atmosphere at home. You can order out some food, open a bottle of wine and cuddle up in front of the TV." + }, + + { + "name": "Recreate your first date", + "description": "Rated pretty high on the “romantic gestures scale,” this is guaranteed to impress your significant other. It requires a good memory and a bit of work to make it just right, but it is well worth it. Walk down the same streets where you first kissed and have a couple of drinks in that old coffee shop where you had your first drinks together. Don’t be afraid to spend a bit extra and add a little romantic gift into the mix." + }, + { + "name": "Cook for your loved one", + "description": "Start researching good recipes for a romantic dinner for two, get the right ingredients and prepare a couple of practice dinners to make sure you’ve got your technique and presentation down pat. Cooking for someone can be a big turn on and you can create some incredible meals without spending too much money. Take it up a notch by dressing classy, decorating your dining room and presenting your partner with a printed menu." + }, + { + "name": "Organize your very own ancient Greek party", + "description": "Here’s another one of those creative date ideas for the stay-at-home couple. The ancient Greek private party can be a very fun and erotic experience. You can decorate by using big bowls full of grapes, spreading some white sheets all over the place, placing some plastic vines here and there, putting up a few posters depicting Greek parties and having plenty of wine lying around. Wear nothing but light sheets or costumes and channel some of that hot-blooded Greek spirit." + }, + { + "name": "A romantic weekend getaway in the mountains", + "description": "For those looking for a change of scenery and an escape from the busy city, there is nothing better than a quiet, romantic weekend in the mountains. There are plenty of fun activities like skiing that will keep you active. You can have fun making a snowman or engaging in a snowball fight, and, of course, there is plenty of privacy and great room service waiting for you back at your room." + }, + { + "name": "Fun day at the shooting range", + "description": "A bit unconventional but an incredibly fun and exciting date that will get your blood pumping and put a huge smile on your faces. Try out a number of guns and have a bit of a competition. Some outdoor ranges have fully automatic rifles, which are a blast to shoot." + }, + { + "name": "Rent an expensive sports car for a day", + "description": "Don’t be afraid to live large from time to time—even if you can’t afford the glamorous lifestyle of the stars, you can most definitely play pretend for a day. Put on some classy clothes and drive around town in a rented sports car. The quick acceleration and high speed are sure to provide an exhilarating experience. " + }, + { + "name": "Go on a shopping spree together", + "description": "Very few things can elicit such a huge dopamine rush as a good old shopping spree. Get some new sexy lingerie, pretty shoes, a nice shirt and tie, a couple of new video games or whatever else you need or want. This is a unique chance to bond, have fun and get some stuff that you’ve been waiting to buy for a while now." + }, + { + "name": "Hit the clubs", + "description": "For all the party animals out there, one of the best date ideas is to go out drinking, dancing, and just generally enjoying the night life. Visit a few good clubs, then go to an after-party and keep that party spirit going for as long as you can." + }, + { + "name": "Spend the day driving around the city and visiting new places", + "description": "This one is geared towards couples who have been together for a year or two and want to experience a few new things together. Visit a few cool coffee places on the other side of town, check out interesting restaurants you’ve never been to, and consider going to see a play or having fun at a comedy club on open mic night." + }, + { + "name": "Wine and chocolates at sunset", + "description": "Pick out a romantic location, such as a camping spot on a hill overlooking the city or a balcony in a restaurant with a nice view, open a bottle of wine and a box of chocolates and wait for that perfect moment when the sky turns fiery red to embrace and share a passionate kiss." + }, + { + "name": "Ice skating", + "description": "There is something incredibly fun about ice skating that brings people closer together and just keeps you laughing (maybe it’s all the falling and clinging to the other person for dear life). You can have some great fun and then move on to a more private location for some alone time." + }, + { + "name": "Model clothes for each other", + "description": "This one goes well when combined with a shopping spree, but you can just get a bunch of your clothes—old and new—from the closet, set up a catwalk area and then try on different combinations. You can be stylish, funny, handsome and sexy. It’s a great after-dinner show and a good way to transition into a more intimate atmosphere." + }, + { + "name": "Dance the night away", + "description": "If you and your significant other are relatively good dancers, or if you simply enjoy moving your body to the rhythm of the music, then a night at salsa club or similar venue is the perfect thing for you. Alternatively, you can set up dance floor at home, play your favorite music, have a few drinks and dance like there is no tomorrow." + }, + { + "name": "Organize a nature walk", + "description": "Being outside has many health benefits, but what you are going for is the beautiful view, seclusion, and the thrill of engaging in some erotic behavior out in the open. You can rent a cottage far from the city, bring some food and drinks, and explore the wilderness. This is nice way to spice things up a bit and get away from the loud and busy city life." + }, + { + "name": "Travel abroad", + "description": "This takes a bit of planning in advance and may be a bit costly, but if you can afford it, there are very few things that can match a trip to France, Italy, Egypt, Turkey, Greece, or a number of other excellent locations." + }, + { + "name": "Go on a hot-air balloon ride", + "description": "These are very fun and romantic—you get an incredible view, get to experience the thrill of flying, and you’ve got enough room for a romantic dinner and some champagne. Just be sure to wear warm clothes, it can get pretty cold high up in the air." + }, + { + "name": "A relaxing day at the spa", + "description": "Treat your body, mind and senses to a relaxing day at the spa. You and your partner will feel fresh, comfortable, relaxed, and sexy as hell—a perfect date for the more serious couples who don’t get to spend as much time with each other as they’d like." + }, + { + "name": "Fun times at a karaoke bar", + "description": "A great choice for couples celebrating their first Valentine’s Day together—it’s fairly informal and inexpensive, yet incredibly fun and allows for deeper bonding. Once you have a few drinks in your system and come to terms with the fact that you are making a complete fool of yourself, you’ll have the time of your life!" + }, + { + "name": "Horseback riding", + "description": "Horseback riding is incredibly fun, especially if you’ve never done it before. And what girl doesn’t dream of a prince coming to take her on an adventure on his noble steed? It evokes a sense of nobility and is a very good bonding experience." + }, + { + "name": "Plan a fun date night with other couples", + "description": "Take a break and rent a cabin in the woods, go to a mountain resort, a couple’s retreat, or just organize a huge date night at someone’s place and hang out with other couples. This is a great option for couples who have spent at least one Valentine’s Day together and allows you to customize your experience to suit your needs. Also, you can always retire early and get some alone time with your partner if you so desire." + }, + { + "name": "Go to a concert", + "description": "There are a whole bunch of things happening around Valentine’s Day, so go online and check out what’s happening near you. You’ll surely be able to find tickets for a cool concert or some type of festival with live music." + }, + { + "name": "Fancy night on the town", + "description": "Buy some elegant new clothes, rent a limo for the night and go to a nice restaurant, followed by a jazz club or gallery exhibition. Walk tall, make a few sarcastic quips, and have a few laughs with your partner while letting your inner snob take charge for a few hours." + }, + { + "name": "Live out a James Bond film at a casino", + "description": "A beautiful lady in a simple yet sensual, form-fitting, black dress, and a strong and handsome, if somewhat stern-looking man in a fine suit walk up to a roulette table with drinks in hand and place bets at random as they smile at each other seductively. This is a scenario most of us wish to play out, but rarely get a chance. It can be a bit costly, but this is one of the most incredibly adventurous and romantic date ideas." + }, + { + "name": "Go bungee jumping", + "description": "People in long-term relationships often talk about things like keeping a relationship fun and exciting, doing new things together, trusting each other and using aphrodisiacs. Well, bungee jumping is a fun, exhilarating activity you can both enjoy; it requires trust and the adrenaline rush you get from it is better than any aphrodisiac out there. Just saying, give it a shot and you won’t regret it. " + }, + { + "name": "Play some sports", + "description": "Some one-on-one basketball, a soccer match against another couple, a bit of tennis, or even something as simple as a table tennis tournament (make it fun by stripping off items of clothing when you lose a game). You can combine this with date idea #13 and paint team uniforms on each other and play in the nude." + }, + { + "name": "Take skydiving lessons", + "description": "An adrenaline-filled date, skydiving is sure to get your heart racing like crazy and leave you with a goofy grin for the rest of the day. You can offset all the excitement by ending the day with a quiet dinner at home." + }, + { + "name": "Go for some paintball", + "description": "Playing war games is an excellent way to get your body moving, focus on some of that hand-eye-coordination, and engage your brain in coming up with tactical solutions in the heat of the moment. It is also a great bonding experience, adrenaline-fueled fun, and role-playing all wrapped into one. And when you get back home, you can always act out the wounded soldier scenario." + }, + { + "name": "Couples’ Yoga", + "description": "Getting up close, hot, and sweaty? Sounds like a Valentine’s Day movie to me. By signing up with your partner for a couples’ yoga class, you can sneak in a workout while getting some face-to-face time with your date.This type of yoga focuses on poses that can be done with a partner, such as back-to-back bends, assisted stretches, and face-to-face breathing exercises. By working out together, you strengthen your bond while stretching away the stress of the week. Finish the date off by heading to the juice bar for a smoothie, or indulging in healthy salads for two. Expect to spend around $35 per person, or approximately $50 to $60 per couple." + }, + { + "name": "Volunteer Together", + "description": "Getting your hands dirty for a good cause might not be the first thing that pops into your mind when you think “romance,” but there’s something to be said for a date that gives you a glimpse of your partner’s charitable side. Consider volunteering at an animal rescue, where you might be able to play with pups or help a few lovebirds pick out their perfect pet. Or, sign up to visit the elderly at a care center, where you can be a completely different kind of Valentine for someone in need." + } + ] +} diff --git a/bot/resources/holidays/valentines/love_matches.json b/bot/resources/holidays/valentines/love_matches.json new file mode 100644 index 00000000..7df2dbda --- /dev/null +++ b/bot/resources/holidays/valentines/love_matches.json @@ -0,0 +1,58 @@ +{ + "0": { + "titles": [ + "\ud83d\udc94 There's no real connection between you two \ud83d\udc94" + ], + "text": "The chance of this relationship working out is really low. You can get it to work, but with high costs and no guarantee of working out. Do not sit back, spend as much time together as possible, talk a lot with each other to increase the chances of this relationship's survival." + }, + "5": { + "titles": [ + "\ud83d\udc99 A small acquaintance \ud83d\udc99" + ], + "text": "There might be a chance of this relationship working out somewhat well, but it is not very high. With a lot of time and effort you'll get it to work eventually, however don't count on it. It might fall apart quicker than you'd expect." + }, + "20": { + "titles": [ + "\ud83d\udc9c You two seem like casual friends \ud83d\udc9c" + ], + "text": "The chance of this relationship working is not very high. You both need to put time and effort into this relationship, if you want it to work out well for both of you. Talk with each other about everything and don't lock yourself up. Spend time together. This will improve the chances of this relationship's survival by a lot." + }, + "30": { + "titles": [ + "\ud83d\udc97 You seem like you are good friends \ud83d\udc97" + ], + "text": "The chance of this relationship working is not very high, but its not that low either. If you both want this relationship to work, and put time and effort into it, meaning spending time together, talking to each other etc., than nothing shall stand in your way." + }, + "45": { + "titles": [ + "\ud83d\udc98 You two are really close aren't you? \ud83d\udc98" + ], + "text": "Your relationship has a reasonable amount of working out. But do not overestimate yourself there. Your relationship will suffer good and bad times. Make sure to not let the bad times destroy your relationship, so do not hesitate to talk to each other, figure problems out together etc." + }, + "60": { + "titles": [ + "\u2764 So when will you two go on a date? \u2764" + ], + "text": "Your relationship will most likely work out. It won't be perfect and you two need to spend a lot of time together, but if you keep on having contact, the good times in your relationship will outweigh the bad ones." + }, + "80": { + "titles": [ + "\ud83d\udc95 Aww look you two fit so well together \ud83d\udc95" + ], + "text": "Your relationship will most likely work out well. Don't hesitate on making contact with each other though, as your relationship might suffer from a lack of time spent together. Talking with each other and spending time together is key." + }, + "95": { + "titles": [ + "\ud83d\udc96 Love is in the air \ud83d\udc96", + "\ud83d\udc96 Planned your future yet? \ud83d\udc96" + ], + "text": "Your relationship will most likely work out perfect. This doesn't mean thought that you don't need to put effort into it. Talk to each other, spend time together, and you two won't have a hard time." + }, + "100": { + "titles": [ + "\ud83d\udc9b When will you two marry? \ud83d\udc9b", + "\ud83d\udc9b Now kiss already \ud83d\udc9b" + ], + "text": "You two will most likely have the perfect relationship. But don't think that this means you don't have to do anything for it to work. Talking to each other and spending time together is key, even in a seemingly perfect relationship." + } +} diff --git a/bot/resources/holidays/valentines/pickup_lines.json b/bot/resources/holidays/valentines/pickup_lines.json new file mode 100644 index 00000000..eb01290f --- /dev/null +++ b/bot/resources/holidays/valentines/pickup_lines.json @@ -0,0 +1,97 @@ +{ + "placeholder": "https://i.imgur.com/BB52sxj.jpg", + "lines": [ + { + "line": "Hey baby are you allergic to dairy cause I **laktose** clothes you're wearing", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8f/Cheese_%281105942243%29.jpg/800px-Cheese_%281105942243%29.jpg" + }, + { + "line": "I’m not a photographer, but I can **picture** me and you together.", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/57/2016_Minolta_Dynax_404si.JPG/220px-2016_Minolta_Dynax_404si.JPG" + }, + { + "line": "I seem to have lost my phone number. Can I have yours?" + }, + { + "line": "Are you French? Because **Eiffel** for you.", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/85/Tour_Eiffel_Wikimedia_Commons_%28cropped%29.jpg/240px-Tour_Eiffel_Wikimedia_Commons_%28cropped%29.jpg" + }, + { + "line": "Hey babe are you a cat? Because I'm **feline** a connection between us.", + "image": "https://upload.wikimedia.org/wikipedia/commons/4/4d/Cat_November_2010-1a.jpg" + }, + { + "line": "Baby, life without you is like a broken pencil... **pointless**.", + "image": "https://upload.wikimedia.org/wikipedia/commons/0/08/Pencils_hb.jpg" + }, + { + "line": "Babe did it hurt when you fell from heaven?" + }, + { + "line": "If I could rearrange the alphabet, I would put **U** and **I** together.", + "image": "https://images-na.ssl-images-amazon.com/images/I/51wJaFX%2BnGL._SX425_.jpg" + }, + { + "line": "Is your name Google? Because you're everything I'm searching for.", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/53/Google_%22G%22_Logo.svg/1024px-Google_%22G%22_Logo.svg.png" + }, + { + "line": "Are you from Starbucks? Because I like you a **latte**.", + "image": "https://upload.wikimedia.org/wikipedia/en/thumb/d/d3/Starbucks_Corporation_Logo_2011.svg/1200px-Starbucks_Corporation_Logo_2011.svg.png" + }, + { + "line": "Are you a banana? Because I find you **a peeling**.", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/44/Bananas_white_background_DS.jpg/220px-Bananas_white_background_DS.jpg" + }, + { + "line": "Do you like vegetables because I love you from my head **tomatoes**.", + "image": "https://vignette.wikia.nocookie.net/veggietales-the-ultimate-veggiepedia/images/e/ec/Bobprofile.jpg/revision/latest?cb=20161227190344" + }, + { + "line": "Do you like science because I've got my **ion** you.", + "image": "https://www.chromacademy.com/lms/sco101/assets/c1_010_equations.jpg" + }, + { + "line": "Are you an angle? Because you are **acute**.", + "image": "https://juicebubble.co.za/wp-content/uploads/2018/03/acute-angle-white-400x400.png" + }, + { + "line": "If you were a fruit, you'd be a **fineapple**." + }, + { + "line": "Did you swallow magnets? Cause you're **attractive**.", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/93/Magnetic_quadrupole_moment.svg/1200px-Magnetic_quadrupole_moment.svg.png" + }, + { + "line": "Hey pretty thang, do you have a name or can I call you mine?" + }, + { + "line": "Is your name Wi-Fi? Because I'm feeling a connection.", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/ae/WiFi_Logo.svg/1200px-WiFi_Logo.svg.png" + }, + { + "line": "Are you Australian? Because you meet all of my **koala**fications.", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/49/Koala_climbing_tree.jpg/240px-Koala_climbing_tree.jpg" + }, + { + "line": "If I were a cat I'd spend all 9 lives with you.", + "image": "https://upload.wikimedia.org/wikipedia/commons/4/4d/Cat_November_2010-1a.jpg" + }, + { + "line": "My love for you is like dividing by 0. It's undefinable.", + "image": "https://i.pinimg.com/originals/05/f5/9a/05f59a9fa44689e3435b5e46937544bb.png" + }, + { + "line": "Take away gravity, I'll still fall for you.", + "image": "https://i.pinimg.com/originals/05/f5/9a/05f59a9fa44689e3435b5e46937544bb.png" + }, + { + "line": "Are you a criminal? Because you just stole my heart.", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/98/Hinged_Handcuffs_Rear_Back_To_Back.JPG/174px-Hinged_Handcuffs_Rear_Back_To_Back.JPG" + }, + { + "line": "Hey babe I'm here. What were your other two wishes?", + "image": "https://upload.wikimedia.org/wikipedia/en/thumb/0/0c/The_Genie_Aladdin.png/220px-The_Genie_Aladdin.png" + } + ] +} diff --git a/bot/resources/holidays/valentines/valenstates.json b/bot/resources/holidays/valentines/valenstates.json new file mode 100644 index 00000000..c58a5b7c --- /dev/null +++ b/bot/resources/holidays/valentines/valenstates.json @@ -0,0 +1,122 @@ +{ + "Australia": { + "text": "Australia is the oldest, flattest and driest inhabited continent on earth. It is one of the 18 megadiverse countries, featuring a wide variety of plants and animals, the most iconic ones being the koalas and kangaroos, as well as its deadly wildlife and trees falling under the Eucalyptus genus.", + "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/88/Flag_of_Australia_%28converted%29.svg/1920px-Flag_of_Australia_%28converted%29.svg.png" + }, + "Austria": { + "text": "Austria is part of the european continent, lying in the alps. Due to its location, Austria possesses a variety of very tall mountains like the Großglockner (3798 m) or the Wildspitze (3772 m).", + "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/Flag_of_Austria.svg/1920px-Flag_of_Austria.svg.png" + }, + "Brazil": { + "text": "Being the largest and most populated country in South and Latin America, Brazil, as one of the 18 megadiverse countries, features a wide variety of plants and animals, especially in the Amazon rainforest, the most biodiverse rainforest in the world.", + "flag": "https://upload.wikimedia.org/wikipedia/en/thumb/0/05/Flag_of_Brazil.svg/1280px-Flag_of_Brazil.svg.png" + }, + "Canada": { + "text": "Canada is the second-largest country in the world measured by total area, only surpassed by Russia. It's widely known for its astonishing national parks.", + "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Flag_of_Canada_%28Pantone%29.svg/1920px-Flag_of_Canada_%28Pantone%29.svg.png" + }, + "Croatia": { + "text": "Croatia is a country at the crossroads of Central and Southeast Europe, mostly known for its beautiful beaches and waters.", + "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Flag_of_Croatia.svg/1920px-Flag_of_Croatia.svg.png" + }, + "England": { + "text": "", + "flag": "https://upload.wikimedia.org/wikipedia/en/thumb/b/be/Flag_of_England.svg/1920px-Flag_of_England.svg.png" + }, + "Finland": { + "text": "", + "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Flag_of_Finland.svg/1920px-Flag_of_Finland.svg.png" + }, + "France": { + "text": "", + "flag": "https://upload.wikimedia.org/wikipedia/en/thumb/c/c3/Flag_of_France.svg/1920px-Flag_of_France.svg.png" + }, + "Germany": { + "text": "", + "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/ba/Flag_of_Germany.svg/1920px-Flag_of_Germany.svg.png" + }, + "Greece": { + "text": "", + "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/Flag_of_Greece.svg/1920px-Flag_of_Greece.svg.png" + }, + "Iceland": { + "text": "", + "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/ce/Flag_of_Iceland.svg/1280px-Flag_of_Iceland.svg.png" + }, + "India": { + "text": "", + "flag": "https://upload.wikimedia.org/wikipedia/en/thumb/4/41/Flag_of_India.svg/1920px-Flag_of_India.svg.png" + }, + "Indonesia": { + "text": "", + "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9f/Flag_of_Indonesia.svg/1920px-Flag_of_Indonesia.svg.png" + }, + "Ireland": { + "text": "", + "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/45/Flag_of_Ireland.svg/1920px-Flag_of_Ireland.svg.png" + }, + "Italy": { + "text": "", + "flag": "https://upload.wikimedia.org/wikipedia/en/thumb/0/03/Flag_of_Italy.svg/1920px-Flag_of_Italy.svg.png" + }, + "Mexico": { + "text": "", + "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/fc/Flag_of_Mexico.svg/1920px-Flag_of_Mexico.svg.png" + }, + "New Zealand": { + "text": "", + "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Flag_of_New_Zealand.svg/1920px-Flag_of_New_Zealand.svg.png" + }, + "Norway": { + "text": "", + "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Flag_of_Norway.svg/1280px-Flag_of_Norway.svg.png" + }, + "Peru": { + "text": "", + "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Flag_of_Peru.svg/1920px-Flag_of_Peru.svg.png" + }, + "Portugal": { + "text": "", + "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/Flag_of_Portugal.svg/1920px-Flag_of_Portugal.svg.png" + }, + "Scotland": { + "text": "", + "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/10/Flag_of_Scotland.svg/1920px-Flag_of_Scotland.svg.png" + }, + "Slovenia": { + "text": "", + "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f0/Flag_of_Slovenia.svg/1920px-Flag_of_Slovenia.svg.png" + }, + "South Africa": { + "text": "", + "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Flag_of_South_Africa.svg/1920px-Flag_of_South_Africa.svg.png" + }, + "Spain": { + "text": "", + "flag": "https://upload.wikimedia.org/wikipedia/en/thumb/9/9a/Flag_of_Spain.svg/1920px-Flag_of_Spain.svg.png" + }, + "Sweden": { + "text": "", + "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Flag_of_Sweden.svg/1920px-Flag_of_Sweden.svg.png" + }, + "Switzerland": { + "text": "", + "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/08/Flag_of_Switzerland_%28Pantone%29.svg/1024px-Flag_of_Switzerland_%28Pantone%29.svg.png" + }, + "Turkey": { + "text": "", + "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b4/Flag_of_Turkey.svg/1920px-Flag_of_Turkey.svg.png" + }, + "United States": { + "text": "", + "flag": "https://upload.wikimedia.org/wikipedia/en/thumb/a/a4/Flag_of_the_United_States.svg/1920px-Flag_of_the_United_States.svg.png" + }, + "Vietnam": { + "text": "", + "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/21/Flag_of_Vietnam.svg/1920px-Flag_of_Vietnam.svg.png" + }, + "Wales": { + "text": "", + "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a9/Flag_of_Wales_%281959%E2%80%93present%29.svg/1920px-Flag_of_Wales_%281959%E2%80%93present%29.svg.png" + } +} diff --git a/bot/resources/holidays/valentines/valentine_facts.json b/bot/resources/holidays/valentines/valentine_facts.json new file mode 100644 index 00000000..e6f826c3 --- /dev/null +++ b/bot/resources/holidays/valentines/valentine_facts.json @@ -0,0 +1,24 @@ +{ + "whois": "Saint Valentine, officially Saint Valentine of Rome, was a widely recognized 3rd-century christian saint, commemorated on February 14. He was a priest and bishop, ministering persecuted Christians in the Roman Empire, and is associated with a tradition of courtly love since the High Middle Ages, a period commenced around the year 1000AD and lasting until around 1250AD. He was martyred and buried at a Christian cemetery on the Via Flaminia on February 14.\n\nThere are a bunch of inconsistencies in the identification of the saint, however there are evidences for 3 saints that appear in connection with February 14. One of them, Saint Valentine of Terni, is believed to be the one associated with a vision restoration miracle, which happening during his imprisonment. In that, he restored the eyesight of his jailer's daughter, and, on the evening before his execution, supposedly sent her a letter signed with 'Your Valentine' (tuum valentinum). This makes this saint the one we today associate with Saint Valentine's Day.\n\nThe artist Cicero Moraes attempted a facial reconstruction of Saint Valentine, which can be seen in the thumbnail.", + "titles": [ + "\u2764 Facts \u00e1 la carte \u2764", + "\u2764 Would you like some cheese with your wi... facts? \u2764", + "\u2764 Facts to raise your pulse \u2764", + "\u2764 Love Facts, Episode #42 \u2764", + "\u2764 It's a fact not a fact, duh \u2764", + "\u2764 Candlelight din... facts! \u2764" + ], + "text": [ + "The expression 'From your Valentine' derives from a legend in which Saint Valentine, imprisoned after persecution and not wanting to convert to Roman paganism, performed a miracle on Julia, his jailer Asterius's blind daughter, restoring her eyesight. On the evening before his execution, he is supposed to have written a letter to the jailers daughter, signing as 'Your Valentine' (tuum valentinum).", + "Valentine's Day wasn't really associated with anything romantic, until the 14th century England where it's association with romantic love had begun from within the circle of Geoffrey Chaucer, a famous english poet and author, also called 'Father of English literature' for his work. He is best known for 'The Caunterbury Tales', a collection of 24 stories, which are presented as part of a story-telling contest by a group of pilgrims on their travel from London to Canterbury.", + "It's only been roughly 300 years, that the Valentine's Day evolved into what we know today.", + "The wide usage of hearts on Valentine's day derived from a legend, in which Saint Valentine cut hearts from parchment, giving them to persecuted Christians and soldiers married by him. He did that \"to remind these man of their vows and God's love\"", + "In 1797, a British publisher developed \"The Young Man's Valentine Writer\", to assist young men in composing their own sentimental verses to ladies they felt attracted to.", + "If you've never gotten any handwritten Valentine cards, this may be due to the fact, that in the 19th century, handwritten notes have given away to mass-produced greeting cards.", + "In 1868, a British chocolate company called Cadbury created so called 'Fancy Boxes', which essentially were a decorated box of chocolates in the shape of a heart. This set a trend, such that these boxes were quickly associated with Valentine's Day.", + "Roses are red,\nviolet's are blue,\nI can't rhyme,\nbut I still do.\n\u200b\nThis poem in particular,\nit will stay forever,\nderives from The Faerie Queene,\nan epic poem you probably have never seen.\n\n\"She bath'd with roses red, and violets blew,\nAnd all the sweetest flowres, that in the forrest grew.\"\n\nThese verses, with most immense sway,\nlead to the poem we still hear today.", + "The earliest Valentine poem known is a rondeau, a form of medieval/renaissance French poetry, composed by Charles, Duke of Orl\u00e9ans to his wife:\n\n\"Je suis desja d'amour tann\u00e9,\nMa tres doulce Valentin\u00e9e\"", + "There's a form of cryptological communication called 'Floriography', in which you communicate through flowers. Meaning has been attributed to flowers for thousands of years, and some form of floriography has been practiced in traditional cultures throughout Europe, Asia, and Africa. Here are some meanings for roses you might want to take a look at, if you plan on gifting your loved one a bouquet of roses on Valentine's Day:\n\u200b\nRed: eternal love\nPink: young, developing love\nWhite: innocence, fervor, loyalty\nOrange: happiness, security\nViolet: love at first sight\nBlue: unfulfilled longing, quiet desire\nYellow: friendship, jealousy, envy, infidelity\nBlack: unfulfilled longing, quiet desire, grief, hatred, misfortune, death", + "Traditionally, young girls in the U.S. and the U.K. believed they could tell what type of man they would marry depending on the type of bird they saw first on Valentine's Day. If they saw a blackbird, they would marry a clergyman, a robin redbreast indicated a sailor, and a goldfinch indicated a rich man. A sparrow meant they would marry a farmer, a bluebird indicated a happy man, and a crossbill meant an argumentative man. If they saw a dove, they would marry a good man, but seeing a woodpecker meant they would not marry at all." + ] +} diff --git a/bot/resources/holidays/valentines/zodiac_compatibility.json b/bot/resources/holidays/valentines/zodiac_compatibility.json new file mode 100644 index 00000000..ea9a7b37 --- /dev/null +++ b/bot/resources/holidays/valentines/zodiac_compatibility.json @@ -0,0 +1,262 @@ +{ + "Aries":[ + { + "Zodiac" : "Sagittarius", + "description" : "The Archer is one of the most compatible signs Aries should consider when searching out relationships that will bear fruit. Sagittarians share a certain love of freedom with Aries that will help the two of them conquer new territory together.", + "compatibility_score" : "87%" + }, + { + "Zodiac" : "Leo", + "description" : "Leo is the center of attention and typically the life of the party, but can also be courageous, bold, and powerful. These two signs share a gregarious nature that helps them walk life's path in sync. They may vie occasionally to see which one leads the way, but all things considered, they share a great capacity for compatibility.", + "compatibility_score" : "83%" + }, + { + "Zodiac" : "Aquarius", + "description" : "Aquarius' need for personal space dovetails nicely with Aries' love of freedom. This doesn't mean that the Ram and the Water Bearer can't forge a deep bond; in fact, quite the opposite. Their mutual respect for one another's needs and space leaves room for both to grow on their own and together.", + "compatibility_score" : "68%" + }, + { + "Zodiac" : "Gemini", + "description" : "The Twins are known for their adaptability, a trait that easily follows Aries' need to lead their closest companions down new paths. Geminis are also celebrated for their personal charm and intellect, traits the discerning Ram is also capable of fully appreciating.", + "compatibility_score" : "74%" + } + ], + "Taurus":[ + { + "Zodiac" : "Virgo", + "description" : "Although these signs have their set of differences, the Virgo Taurus compatibility is usually pretty strong. This is because both the signs want the same thing ultimately and have generally synchronous ways of reaching those points. This helps them complement each other and create a healthy relationship between them.", + "compatibility_score" : "73%" + }, + { + "Zodiac" : "Capricorn", + "description" : "A great compatibility is seen in this match as far as the philosophical and spiritual aspects of life are concerned. Taurus and Capricorn have a practical approach towards life. The ambitions and calmness of the Goat will attract the Bull, who will attract the former with his strong determination.The compatibility between these two zodiac signs is at the greatest height due to their mutual understanding, faith and consonance.", + "compatibility_score" : "89%" + }, + { + "Zodiac" : "Pisces", + "description" : "This relationship will survive the test of time if both parties involved have unbreakable trust in each other and nurture that connection they have painstakingly built over the years. They must remember to be honest and committed to their partner through all times.If natural communication flows between them like clockwork, this will be a beautiful love story with a prominent tag of 'happily-ever-after' pinned right to it!", + "compatibility_score" : "88%" + }, + { + "Zodiac" : "Cancer", + "description" : "This is a peaceful union of two reliable and kind souls. It is one of the strong zodiac pairings in terms of compatibility, and certainly has a real chance of lasting a lifetime in astrological charts. If Taurus man and Cancer woman and vice-versa are mature enough to handle the occasional friction, which they usually are, their bond will transcend all boundaries and is likely to grow in strength through the years.", + "compatibility_score" : "91%" + } + ], + "Gemini":[ + { + "Zodiac" : "Aries", + "description" : "The theorem of astrology says that Aries and Gemini have a zero tolerance for boredom and will at once get rid of anything dull. An Arian will let a Geminian enjoy his personal freedom and the Gemini will respect his individuality.", + "compatibility_score" : "74%" + }, + { + "Zodiac" : "Leo", + "description" : "Gemini and Leo love match that can go through extravagant heights and crushing lows, but one is sure to leave both of them breathless. This is a pair that forms one of the most exciting relationships of the zodiac chart, but the converse is equally true; they are vulnerable to experiencing terrible lows.", + "compatibility_score" : "82%" + }, + { + "Zodiac" : "Libra", + "description" : "It is relatively easier for them to adjust to each other as while they might have different outlooks to some things in life, they rarely collide or crash against one another. Hence, it is easy for them to go forward in harmony, forming a formidable bond in the process.", + "compatibility_score" : "78%" + }, + { + "Zodiac" : "Aquarius", + "description" : "This is one of the most successful pairs of the zodiac chart.If they manage to smooth this solitary wrinkle, this will be a beautiful union for both the parties involved. It will turn into a gift that will keep giving happiness, contentment and encouragement to the air signs.", + "compatibility_score" : "91%" + } + ], + "Cancer":[ + { + "Zodiac" : "Taurus", + "description" : "The Cancer Taurus zodiac relationship compatibility is strong because of their mutual love for safety, stability, and comfort. Their mutual understanding will always be powerful, which will be the pillar of strength of their relationship.", + "compatibility_score" : "91%" + }, + { + "Zodiac" : "Scorpio", + "description" : "The Cancer man and Scorpio woman and vice-versa connect on an intuitive level and will find refuge in each other from the outset of the relationship.", + "compatibility_score" : "79%" + }, + { + "Zodiac" : "Virgo", + "description" : "This is a match made in heaven! Very few zodiac combinations work as well as Cancer and Virgo. Their blissful union is one which is generally filled with memories of happiness, contentment, loyalty, and harmony. They will build an extremely strong bond with each other that can pass all the tests of time and emerge stronger after every challenge that is thrown in its way!", + "compatibility_score" : "77%" + } + ], + "Leo":[ + { + "Zodiac" : "Aries", + "description" : "A Leo is generous and an Arian is open to life. Sharing the same likes and dislikes, they both crave for fun, romance and excitement. A Leo respects an Arian's need for freedom because an Arian does not interfere much in the life of a Leo. Aries will love the charisma and ideas of the Leo.", + "compatibility_score" : "83%" + }, + { + "Zodiac" : "Gemini", + "description" : "This is one of the most compatible pairings in the zodiac chart and if the minor friction is handled with maturity by both the parties, the Leo and Gemini compatibility relationship can last a lifetime. A lifetime, which will be filled with love, happiness, and success.", + "compatibility_score" : "82%" + }, + { + "Zodiac" : "Libra", + "description" : "he thing that attributes for the greater compatibility of this love match is that both the signs like to complement each other. Leo and Libra love to attend social gatherings. They like to engage themselves in romance and act as lovers. This love match is strong enough to face adverse situations due to their opposite individual characters. This pair likes to enjoy candlelit dinners, long drives, dancing", + "compatibility_score" : "75%" + }, + { + "Zodiac" : "Sagittarius", + "description" : "The key for this relationship to work is that both Leo star sign and Sagittarius star sign natives should know where they want it to go in the long run. If they are ready for a long-time commitment and are mutually aware of the same, they will form a brilliant and buoyant bond together. It can last for a lifetime and will be characterized by the excitement, love, happiness, and unending loyalty that Leo and Sagittarius will bring to each other’s life.", + "compatibility_score" : "75%" + } + ], + "Virgo":[ + { + "Zodiac" : "Taurus", + "description" : "Although these signs have their set of differences, the Virgo Taurus compatibility is usually pretty strong. This is because both the signs want the same thing ultimately and have generally synchronous ways of reaching those points. This helps them complement each other and create a healthy relationship between them.", + "compatibility_score" : "73%" + }, + { + "Zodiac" : "Cancer", + "description" : "This is one of the few zodiac compatibilities that look great not only on paper, but also in reality. The shared outlook that Cancer and Virgo have towards life makes their relationship a positive, reliable, and beautiful entity for both the sides.", + "compatibility_score" : "77%" + }, + { + "Zodiac" : "Scorpio", + "description" : "The Virgo Scorpio love match definitely has something unique to offer to the zodiac world, and to both the parties involved in this pair. If they manage to control their negative traits, this relationship truly has the chance to survive everything life throws at it.", + "compatibility_score" : "76%" + }, + { + "Zodiac" : "Capricorn", + "description" : "The compatibility of this match is quite well as both rely on each other and possess the maturity to understand their individual outlook. Capricorn plans in advance and steadily reaches his goal and a Virgo has faith in his abilities and skills.", + "compatibility_score" : "77%" + } + ], + "Libra":[ + { + "Zodiac" : "Leo", + "description" : "Libra and Leo love match can work well for both the partners and truly help them learn from each other and grow individually, as well as together. Libra and Leo, when in the right frame of mind, form a formidable couple that attracts admiration and respect everywhere it goes.", + "compatibility_score" : "75%" + }, + { + "Zodiac" : "Aquarius", + "description" : "Libra Aquarius Relationship has a good chance of working because of the immense understanding that both the zodiac signs have for each other. They are likely to fight less as Libra believes in avoiding conflict and Aquarius usually is an extremely open-minded and non-judgmental sign.", + "compatibility_score" : "68%" + }, + { + "Zodiac" : "Gemini", + "description" : "It is relatively easier for them to adjust to each other as while they might have different outlooks to some things in life, they rarely collide or crash against one another. Hence, it is easy for them to go forward in harmony, forming a formidable bond in the process.", + "compatibility_score" : "78%" + }, + { + "Zodiac" : "sagittarius", + "description" : "If Sagittarius and Libra want to make it with each other, they must give themselves the time to understand each other fully. Rushing through the relationship will only need to problems in the future and that can be avoided if both the parties are careful not to get too ahead of themselves at any point.", + "compatibility_score" : "71%" + } + ], + "Scorpio":[ + { + "Zodiac" : "Cancer", + "description" : "This union is not unusual, but will take a fair share of work in the start. A strong foundation of clear cut communication is mandatory to make this a loving and stress free relationship!", + "compatibility_score" : "79%" + }, + { + "Zodiac" : "Virgo", + "description" : "Very rarely does it so happen that a pairing can be so perfect and perfectly horrid at the same time. As such, it is imperative that the individuals involved take time before they jump into a serious commitment. Knowing these two zodiacs, commitments last for a lifetime.", + "compatibility_score" : "76%" + }, + { + "Zodiac" : "Capricorn", + "description" : "The relationship of Scorpio and Capricorn can be inspiring for both partners to search for the truth, dig up under their family tree and deal with any unresolved karma and debt. They are both deep and don’t take things lightly, and this will help them build a strong foundation for a relationship that can last for a long time.", + "compatibility_score" : "72%" + }, + { + "Zodiac" : "Pisces", + "description" : "Scorpio-Pisces is one of the most compatible signs of the zodiac calendar. They have a gamut of intense emotions that are consistently in sync with each other. Only if the Scorpion learns to let it go once in a while and the Pisces develops a sense of self-assurance, it will be a successful partnership that will meet its short-term as well as long-term goals.", + "compatibility_score" : "81%" + } + ], + "Sagittarius":[ + { + "Zodiac" : "Aries", + "description" : "Sagittarius and Aries can make a very compatible pair. Their relationship will have a lot of passion, enthusiasm, and energy. These are very good traits to make their relationship deeper and stronger. Both Aries and Sagittarius will enjoy each other's company and their energy level rises as the relationship grows. Both will support and help in fighting hardships and failures.", + "compatibility_score" : "87%" + }, + { + "Zodiac" : "Leo", + "description" : "While there might be a few blips in the Sagittarius Leo relationship, they are certainly one of the most compatible couples when it comes to astrological studies. They can bring the best out of each other and shine in the light of their positive all exciting relationship.", + "compatibility_score" : "75%" + }, + { + "Zodiac" : "Libra", + "description" : "The connectivity between Sagittarians and Librans is amazing. Librans are inclined towards maintaining balance and harmony. Sagittarians are intelligent and fun loving. But, Librans have a strange trait of transiting from one phase of emotion to other.", + "compatibility_score" : "71%" + }, + { + "Zodiac" : "Aquarius", + "description" : "This is a combination where the positives outweigh the negatives by a considerable margin. As long as this pair builds and retains their passion for each other in the relationship, it will be a hit that can pass every test that is thrown at it.The Sagittarius Aquarius compatibility is one of a kind and can go the distance in most cases.", + "compatibility_score" : "83%" + } + ], + "Capricorn":[ + { + "Zodiac" : "Taurus", + "description" : "This is one of the most grounded and reliable bonds of the zodiac chart. If Capricorn and Taurus do find a way to handle their minor issues, they have a good chance of making it together and that too, in a happy, peaceful, and healthy relationship.", + "compatibility_score" : "89%" + }, + { + "Zodiac" : "Virgo", + "description" : "Virgo and Capricorn will connect to each other on a visceral level and will find enduring stability in their relationship. Since this bond is something they can rely on, they tend to ease up individually and thus, are likely to be more relaxed and happier in life.", + "compatibility_score" : "77%" + }, + { + "Zodiac" : "Scorpio", + "description" : "Though they have a couple of blips in the relationship, the combination of Scorpion and Capricorn is a match with powerful compatibility. They will shine with each other, develop each other, and build a beautiful bond with each other. If and when the two decide to commit to each other, their relationship is one that is likely to go the distance nine times out of ten!", + "compatibility_score" : "70%" + }, + { + "Zodiac" : "Pisces", + "description" : "Pisces and Capricorn signs have primary difference of qualities, but their union is aided seamlessly due to that very discrepancy of their personas. It is a highly compatible relationship that can go a long way with mutual respect, amicable understanding and immense trust between the concerned parties.", + "compatibility_score" : "76%" + } + ], + "Aquarius":[ + { + "Zodiac" : "Aries", + "description" : "The relationship of Aries and Aquarius is very exciting, adventurous and interesting. They will enjoy each other's company as both of them love fun and freedom.This is a couple that lacks tenderness. They are not two brutes who let their relationship fade as soon as their passion does.", + "compatibility_score" : "72%" + }, + { + "Zodiac" : "Gemini", + "description" : "If you want to see a relationship that is full of conversation, ideas and \"eureka moments\", you observe the Aquarius Gemini relationship. They will enjoy a camaraderie that you won't find in most zodiac relationships.", + "compatibility_score" : "85%" + }, + { + "Zodiac" : "Libra", + "description" : "The couple will share a lot of similar qualities and will enjoy the relationship. Both of them love to socialize with people and to make new friends.", + "compatibility_score" : "68%" + }, + { + "Zodiac" : "Sagittarius", + "description" : "These two will get together when it is time for both of them to go through a change in their lives or leave a partner they feel restricted with. Their relationship is often a shiny beacon to everyone around them because it gives priority to the future and brings hope of a better time.", + "compatibility_score" : "83%" + } + ], + "Pisces":[ + { + "Zodiac" : "Taurus", + "description" : "This relationship will survive the test of time if both parties involved have unbreakable trust in each other and nurture that connection they have painstakingly built over the years. They must remember to be honest and committed to their partner through all times.If natural communication flows between them like clockwork, this will be a beautiful love story with a prominent tag of ‘happily-ever-after’ pinned right to it!", + "compatibility_score" : "88%" + }, + { + "Zodiac" : "Cancer", + "description" : "The Pisces Cancer union is a beautiful one. Both zodiacs are normally blessed with appealing looks and attractive minds. They are both prone to be drawn to each other. Mostly, for very valid reasons. However, both the zodiac star signs need to make sure that they do not let their love overpower them.", + "compatibility_score" : "72%" + }, + { + "Zodiac" : "Scorpio", + "description" : "Though there are a few problems that might test this relationship, these star sign compatibility of two water signs has many features that can help it survive. Pisces and Scorpio are both passionate in their own ways and thus, end up striking the perfect rhythm with each other.If and when they decide to commit to the relationship, they can script a special story of camaraderie and bliss with each other.", + "compatibility_score" : "81%" + }, + { + "Zodiac" : "Capricorn", + "description" : "A relationship between Capricorn and Pisces tells a story about possibilities of inspiration. If someone like Capricorn can be pulled into a crazy love story, exciting and unpredictable, this must be done by Pisces. In return, Capricorn will offer their Pisces partner stability, peace and some rest from their usual emotional tornadoes. There is a fine way in which Capricorn can help Pisces be more realistic and practical, while feeling more cheerful and optimistic themselves.", + "compatibility_score" : "76%" + } + ] + +} diff --git a/bot/resources/holidays/valentines/zodiac_explanation.json b/bot/resources/holidays/valentines/zodiac_explanation.json new file mode 100644 index 00000000..33864ea5 --- /dev/null +++ b/bot/resources/holidays/valentines/zodiac_explanation.json @@ -0,0 +1,122 @@ +{ + "Aries": { + "start_at": "2020-03-21", + "end_at": "2020-04-19", + "About": "Amazing people born between **March 21** to **April 19**. Aries loves to be number one, so it\u2019s no surprise that these audacious rams are the first sign of the zodiac. Bold and ambitious, Aries dives headfirst into even the most challenging situations.", + "Motto": "***\u201cWhen you know yourself, you're empowered. When you accept yourself, you're invincible.\u201d***", + "Strengths": "Courageous, determined, confident, enthusiastic, optimistic, honest, passionate.", + "Weaknesses": "Impatient, moody, short-tempered, impulsive, aggressive.", + "full_form": "__**A**__ssertive, __**R**__efreshing, __**I**__ndependent, __**E**__nergetic, __**S**__exy", + "url": "https://www.horoscope.com/images-US/signs/profile-aries.png" + }, + "Taurus": { + "start_at": "2020-04-20", + "end_at": "2020-05-20", + "About": "Amazing people born between **April 20** to **May 20**. Taurus is an earth sign represented by the bull. Like their celestial spirit animal, Taureans enjoy relaxing in serene, bucolic environments surrounded by soft sounds, soothing aromas, and succulent flavors", + "Motto": "***\u201cNothing worth having comes easy.\u201d***", + "Strengths": "Reliable, patient, practical, devoted, responsible, stable.", + "Weaknesses": "Stubborn, possessive, uncompromising.", + "full_form": "__**T**__railblazing, __**A**__mbitious, __**U**__nwavering, __**R**__eliable, __**U**__nderstanding, __**S**__table", + "url": "https://www.horoscope.com/images-US/signs/profile-taurus.png" + }, + "Gemini": { + "start_at": "2020-05-21", + "end_at": "2020-06-20", + "About": "Amazing people born between **May 21** to **June 20**. Have you ever been so busy that you wished you could clone yourself just to get everything done? That\u2019s the Gemini experience in a nutshell. Appropriately symbolized by the celestial twins, this air sign was interested in so many pursuits that it had to double itself.", + "Motto": "***\u201cI manifest my reality.\u201d***", + "Strengths": "Gentle, affectionate, curious, adaptable, ability to learn quickly and exchange ideas.", + "Weaknesses": "Nervous, inconsistent, indecisive.", + "full_form": "__**G**__enerous, __**E**__motionally in tune, __**M**__otivated, __**I**__maginative, __**N**__ice, __**I**__ntelligent", + "url": "https://www.horoscope.com/images-US/signs/profile-gemini.png" + }, + "Cancer": { + "start_at": "2020-06-21", + "end_at": "2020-07-22", + "About": "Amazing people born between **June 21 ** to **July 22**. Cancer is a cardinal water sign. Represented by the crab, this crustacean seamlessly weaves between the sea and shore representing Cancer\u2019s ability to exist in both emotional and material realms. Cancers are highly intuitive and their psychic abilities manifest in tangible spaces: For instance, Cancers can effortlessly pick up the energies in a room.", + "Motto": "***\u201cI feel, therefore I am.\u201d***", + "Strengths": "Tenacious, highly imaginative, loyal, emotional, sympathetic, persuasive.", + "Weaknesses": "Moody, pessimistic, suspicious, manipulative, insecuremoody, pessimistic, suspicious, manipulative, insecure.", + "full_form": "__**C**__aring, __**A**__mbitious, __**N**__ourishing, __**C**__reative, __**E**__motionally intelligent, __**R**__esilient", + "url": "https://www.horoscope.com/images-US/signs/profile-cancer.png" + }, + "Leo": { + "start_at": "2020-07-23", + "end_at": "2020-08-22", + "About": "Amazing people born between **July 23** to **August 22**. Roll out the red carpet because Leo has arrived. Leo is represented by the lion and these spirited fire signs are the kings and queens of the celestial jungle. They\u2019re delighted to embrace their royal status: Vivacious, theatrical, and passionate, Leos love to bask in the spotlight and celebrate themselves.", + "Motto": "***\u201cIf you know the way, go the way and show the way\u2014you're a leader.\u201d***", + "Strengths": "Creative, passionate, generous, warm-hearted, cheerful, humorous.", + "Weaknesses": "Arrogant, stubborn, self-centered, lazy, inflexible.", + "full_form": "__**L**__eaders, __**E**__nergetic, __**O**__ptimistic", + "url": "https://www.horoscope.com/images-US/signs/profile-leo.png" + }, + "Virgo": { + "start_at": "2020-08-23", + "end_at": "2020-09-22", + "About": "Amazing people born between **August 23** to **September 22**. Virgo is an earth sign historically represented by the goddess of wheat and agriculture, an association that speaks to Virgo\u2019s deep-rooted presence in the material world. Virgos are logical, practical, and systematic in their approach to life. This earth sign is a perfectionist at heart and isn\u2019t afraid to improve skills through diligent and consistent practice.", + "Motto": "***\u201cMy best can always be better.\u201d***", + "Strengths": "Loyal, analytical, kind, hardworking, practical.", + "Weaknesses": "Shyness, worry, overly critical of self and others, all work and no play.", + "full_form": "__**V**__irtuous, __**I**__ntelligent, __**R**__esponsible, __**G**__enerous, __**O**__ptimistic", + "url": "https://www.horoscope.com/images-US/signs/profile-virgo.png" + }, + "Libra": { + "start_at": "2020-09-23", + "end_at": "2020-10-22", + "About": "Amazing people born between **September 23** to **October 22**. Libra is an air sign represented by the scales (interestingly, the only inanimate object of the zodiac), an association that reflects Libra's fixation on balance and harmony. Libra is obsessed with symmetry and strives to create equilibrium in all areas of life.", + "Motto": "***\u201cNo person is an island.\u201d***", + "Strengths": "Cooperative, diplomatic, gracious, fair-minded, social.", + "Weaknesses": "Indecisive, avoids confrontations, will carry a grudge, self-pity.", + "full_form": "__**L**__oyal, __**I**__nquisitive, __**B**__alanced, __**R**__esponsible, __**A**__ltruistic", + "url": "https://www.horoscope.com/images-US/signs/profile-libra.png" + }, + "Scorpio": { + "start_at": "2020-10-23", + "end_at": "2020-11-21", + "About": "Amazing people born between **October 23** to **November 21**. Scorpio is one of the most misunderstood signs of the zodiac. Because of its incredible passion and power, Scorpio is often mistaken for a fire sign. In fact, Scorpio is a water sign that derives its strength from the psychic, emotional realm.", + "Motto": "***\u201cYou never know what you are capable of until you try.\u201d***", + "Strengths": "Resourceful, brave, passionate, stubborn, a true friend.", + "Weaknesses": "Distrusting, jealous, secretive, violent.", + "full_form": "__**S**__eductive, __**C**__erebral, __**O**__riginal, __**R**__eactive, __**P**__assionate, __**I**__ntuitive, __**O**__utstanding", + "url": "https://www.horoscope.com/images-US/signs/profile-scorpio.png" + }, + "Sagittarius": { + "start_at": "2020-11-22", + "end_at": "2020-12-21", + "About": "Amazing people born between **November 22** to **December 21**. Represented by the archer, Sagittarians are always on a quest for knowledge. The last fire sign of the zodiac, Sagittarius launches its many pursuits like blazing arrows, chasing after geographical, intellectual, and spiritual adventures.", + "Motto": "***\u201cTowering genius disdains a beaten path.\u201d***", + "Strengths": "Generous, idealistic, great sense of humor.", + "Weaknesses": "Promises more than can deliver, very impatient, will say anything no matter how undiplomatic.", + "full_form": "__**S**__eductive, __**A**__dventurous, __**G**__rateful, __**I**__ntelligent, __**T**__railblazing, __**T**__enacious adept, __**A**__dept, __**R**__esponsible, __**I**__dealistic, __**U**__nparalled, __**S**__ophisticated", + "url": "https://www.horoscope.com/images-US/signs/profile-sagittarius.png" + }, + "Capricorn": { + "start_at": "2020-12-22", + "end_at": "2021-01-19", + "About": "Amazing people born between **December 22** to **January 19**. The last earth sign of the zodiac, Capricorn is represented by the sea goat, a mythological creature with the body of a goat and tail of a fish. Accordingly, Capricorns are skilled at navigating both the material and emotional realms.", + "Motto": "***\u201cI can succeed at anything I put my mind to.\u201d***", + "Strengths": "Responsible, disciplined, self-control, good managers.", + "Weaknesses": "Know-it-all, unforgiving, condescending, expecting the worst.", + "full_form": "__**C**__onfident, __**A**__nalytical, __**P**__ractical, __**R**__esponsible, __**I**__ntelligent, __**C**__aring, __**O**__rganized, __**R**__ealistic, __**N**__eat", + "url": "https://www.horoscope.com/images-US/signs/profile-capricorn.png" + }, + "Aquarius": { + "start_at": "2020-01-20", + "end_at": "2020-02-18", + "About": "Amazing people born between **January 20** to **February 18**. Despite the \u201caqua\u201d in its name, Aquarius is actually the last air sign of the zodiac. Aquarius is represented by the water bearer, the mystical healer who bestows water, or life, upon the land. Accordingly, Aquarius is the most humanitarian astrological sign.", + "Motto": "***\u201cThere is no me, there is only we.\u201d***", + "Strengths": "Progressive, original, independent, humanitarian.", + "Weaknesses": "Runs from emotional expression, temperamental, uncompromising, aloof.", + "full_form": "__**A**__nalytical, __**Q**__uirky, __**U**__ncompromising, __**A**__ction-focused, __**R**__espectful, __**I**__ntelligent, __**U**__nique, __**S**__incere", + "url": "https://www.horoscope.com/images-US/signs/profile-aquarius.png" + }, + "Pisces": { + "start_at": "2020-02-19", + "end_at": "2020-03-20", + "About": "Amazing people born between **February 19** to **March 20**. Pisces, a water sign, is the last constellation of the zodiac. It's symbolized by two fish swimming in opposite directions, representing the constant division of Pisces' attention between fantasy and reality. As the final sign, Pisces has absorbed every lesson \u2014 the joys and the pain, the hopes and the fears \u2014 learned by all of the other signs.", + "Motto": "***\u201cI have a lot of love to give, it only takes a little patience and those worth giving it all to.\u201d***", + "Strengths": "Compassionate, artistic, intuitive, gentle, wise, musical.", + "Weaknesses": "Fearful, overly trusting, sad, desire to escape reality, can be a victim or a martyr.", + "full_form": "__**P**__sychic, __**I**__ntelligent, __**S**__urprising, __**C**__reative, __**E**__motionally-driven, __**S**__ensitive", + "url": "https://www.horoscope.com/images-US/signs/profile-pisces.png" + } +} diff --git a/bot/resources/valentines/bemyvalentine_valentines.json b/bot/resources/valentines/bemyvalentine_valentines.json deleted file mode 100644 index 7d5d3705..00000000 --- a/bot/resources/valentines/bemyvalentine_valentines.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "valentine_poems": [ - - "If you were my rose,\nthen I'd be your sun,\npainting you rainbows when the rains come.\nI'd change my orbit to banish the night,\nas to keep you in my nurturing light.", - "If you were my world, then I'd be your moon,\nyour silent protector, a night-light in the gloom.\nOur fates intertwined, two bodies in motion through time and space,\nour dance of devotion.", - "If you were my island, then I'd be your sea,\ncaressing your shores, soft and gentle I'd be.\nMy tidal embrace would leave gifts on your sands,\nbut by current and storm, I'd ward your gentle lands.", - "If you were love's promise, then I would be time,\nyour constant companion till stars align.\nAnd though we are mere mortals,\ntrue love is divine,and my devotion eternal,\nto my one valentine.", - "Have I told you,\nValentine, That I’m all wrapped up in you?\nMy feelings for you bring to me A joy I never knew.\n \n You light up everything for me; In my heart you shine;\nIlluminating my whole life,\nMy darling Valentine.", - "My days are filled with yearning;\nMy nights are full of dreams.\nI’m always thinking of you;\nI’m in a trance, it seems.\n\n You’re all I ever wanted;\nI wish you could be mine;\nAnd so I have to ask you: Will you be my Valentine?", - "My Valentine, I love just you;\nMy devotion I declare.\nI’ll spend my life looking for ways To show you that I care.\n\nPlease say you feel the same for me;\nSay you’ll be forever mine;\nWe’ll share a life of happiness,\nMy treasured Valentine.", - "Every day with you is Valentine's Day, my love.\nEvery day is filled with romance, with love, with sharing and caring.\nEvery day I am reminded how blessed I am to have you as my,\nValentine, my sweetheart, my lover, my friend, my playmate, my companion.\nNo Valentine card, no words at all could express how much I love You,\nhow ecstatic I feel to know that you are mine.\nMy Valentine, every day,\nI'll try to show you that every day I love you more.", - "I lucked out when I met you, sweet thing.\nYou've brought richness to each day I exist.\nYou fill my days with the excitement of love,\nAnd you have since the moment we kissed.\nSo I celebrate Valentine's Day with you,\nWith a love that will always stay fresh and new.", - "You are my everything, Valentine.\nAs a desert creature longs for water, my thirst for you can never be slaked.\nIn a ho-hum day dragging on, thoughts of you bring excitement, joy and pleasure.\nAs a child opens the birthday gift he most wanted,\nI see everything I want in you.\nYou are my everything, Valentine.", - "My love for you is like the raging sea,\nSo powerful and deep it will forever be.\nThrough storm, wind, and heavy rain, It will withstand every pain.\nOur hearts are so pure and love so sweet.\nI love you more with every heartbeat!", - "A million stars up in the sky.\nOne shines brighter - I can't deny.\nA love so precious, a love so true,\na love that comes from me to you.\nThe angels sing when you are near.\nWithin your arms I have nothing to fear.\nYou always know just what to say.\nJust talking to you makes my day.\nI love you, honey, with all of my heart.\nTogether forever and never to part.", - "What do I do,\nWhen I'm still in love with you?\nYou walked away, Cause you didn't want to stay.\nYou broke my heart, you tore me apart.\nEvery day I wait for you, Telling myself our love was true.\nBut when you don't show, more tears start to flow.\nThat's when I know I have to let go.", - "When I say I love you, please believe it's true.\nWhen I say forever, know I'll never leave you.\nWhen I say goodbye, promise me you won't cry,\nBecause the day I'll be saying that will be the day I die.", - "Beauty isn't seen by eyes.\nIt's felt by hearts,\nRecognized by souls,\nIn the presence of love.", - "L is for \"laughter\" we had along the way.\nO is for \"optimism\" you gave me every day.\nV is for \"value\" of being my best friend.\nE is for \"eternity,\" a love that has no end.", - "If roses were red and violets could be blue,\nI'd take us away to a place just for two.\nYou'd see my true colors and all that I felt.\nI'd see that you could love me and nobody else.\nWe'd build ourselves a fortress where we'd run and play.\nYou'd be mine and I'd be yours till our dying day.\nThen I wake and realize you were never here.\nIt's all just my thoughts, my dreams, my hopes...\nBut now it's only tears!" - - ], - "valentine_compliments": [ - - "To the love of my life. I’m the luckiest person on Earth because I have you! I adore you! You’ve taught me that the best thing to hold onto in life is each other. You are my sweetheart, you are my life, you are my everything.", - "It was a million tiny little things that, when you added them all up, they meant we were supposed to be together.", - "When you smile, the whole world stops and stares for a while, cause you're amazing, just the way you are.", - "Take love, multiply it by infinity and take it to the depths of forever... and you still have only a glimpse of how I feel for you.", - "When you kiss me, the world just melts away. When you hold me in your arms, I feel safe. Being in love with you has made me see how wonderful life can be. I love you.", - "No matter how dark the days get, you still know how to make me smile. Even after all this time, you still take my breath away.", - "I don't know what my future holds, but I know I want you in it. I would travel to the moon and back just to see you smile.", - "I may not always say it, but know that with every breath in my body and every beat of my heart I know I will always love you.", - "Darling I will be loving you till we're 70. And baby my heart could still fall as hard at 23. And I'm thinking about how people fall in love in mysterious ways. Maybe just the touch of a hand. Oh me, I fall in love with you every single day. And I just wanna tell you I am. So honey now. Take me into your loving arms. Kiss me under the light of a thousand stars. Place your head on my beating heart. I'm thinking out loud. Maybe we found love right where we are.", - "I love you. I knew it the minute I met you. I'm sorry it took so long for me to catch up. I just got stuck.", - "You are truly beautiful from within. I am serious! It's not just about how pretty you are (which you are, of course), but you have a beautiful heart.", - "If you could see yourself through my eyes, you would know how much I love you. You hold a very special place in my heart! I will love you forever!", - "I don’t need a thousand reasons to feel special. All I need is you to live in this world. You are the sunshine of my life.", - "I wish to be everything that brings a smile on your face and happiness in your heart. I want to love you like no else ever did!", - "Every morning of my life gives you a new reason to love you and to appreciate you for what you’ve given me. You are the one that holds the key to my heart!", - "Each time I look at you, I just smile to myself and think, ‘I certainly could not have done better’. You are perfect the way you are. I love you honey.", - "Look at the computer keyboard, U and I were placed side by side. That’s how the alphabets should be arranged because my love will never cease to exist as long as it’s you and me." - - ] - -} diff --git a/bot/resources/valentines/date_ideas.json b/bot/resources/valentines/date_ideas.json deleted file mode 100644 index 995f14bb..00000000 --- a/bot/resources/valentines/date_ideas.json +++ /dev/null @@ -1,125 +0,0 @@ -{ - "ideas": [ - { - "name": "Chick flick marathon", - "description": "This is a very basic yet highly romantic way of spending the day with your partner. Take a few days to prepare the right playlist and create a romantic atmosphere at home. You can order out some food, open a bottle of wine and cuddle up in front of the TV." - }, - - { - "name": "Recreate your first date", - "description": "Rated pretty high on the “romantic gestures scale,” this is guaranteed to impress your significant other. It requires a good memory and a bit of work to make it just right, but it is well worth it. Walk down the same streets where you first kissed and have a couple of drinks in that old coffee shop where you had your first drinks together. Don’t be afraid to spend a bit extra and add a little romantic gift into the mix." - }, - { - "name": "Cook for your loved one", - "description": "Start researching good recipes for a romantic dinner for two, get the right ingredients and prepare a couple of practice dinners to make sure you’ve got your technique and presentation down pat. Cooking for someone can be a big turn on and you can create some incredible meals without spending too much money. Take it up a notch by dressing classy, decorating your dining room and presenting your partner with a printed menu." - }, - { - "name": "Organize your very own ancient Greek party", - "description": "Here’s another one of those creative date ideas for the stay-at-home couple. The ancient Greek private party can be a very fun and erotic experience. You can decorate by using big bowls full of grapes, spreading some white sheets all over the place, placing some plastic vines here and there, putting up a few posters depicting Greek parties and having plenty of wine lying around. Wear nothing but light sheets or costumes and channel some of that hot-blooded Greek spirit." - }, - { - "name": "A romantic weekend getaway in the mountains", - "description": "For those looking for a change of scenery and an escape from the busy city, there is nothing better than a quiet, romantic weekend in the mountains. There are plenty of fun activities like skiing that will keep you active. You can have fun making a snowman or engaging in a snowball fight, and, of course, there is plenty of privacy and great room service waiting for you back at your room." - }, - { - "name": "Fun day at the shooting range", - "description": "A bit unconventional but an incredibly fun and exciting date that will get your blood pumping and put a huge smile on your faces. Try out a number of guns and have a bit of a competition. Some outdoor ranges have fully automatic rifles, which are a blast to shoot." - }, - { - "name": "Rent an expensive sports car for a day", - "description": "Don’t be afraid to live large from time to time—even if you can’t afford the glamorous lifestyle of the stars, you can most definitely play pretend for a day. Put on some classy clothes and drive around town in a rented sports car. The quick acceleration and high speed are sure to provide an exhilarating experience. " - }, - { - "name": "Go on a shopping spree together", - "description": "Very few things can elicit such a huge dopamine rush as a good old shopping spree. Get some new sexy lingerie, pretty shoes, a nice shirt and tie, a couple of new video games or whatever else you need or want. This is a unique chance to bond, have fun and get some stuff that you’ve been waiting to buy for a while now." - }, - { - "name": "Hit the clubs", - "description": "For all the party animals out there, one of the best date ideas is to go out drinking, dancing, and just generally enjoying the night life. Visit a few good clubs, then go to an after-party and keep that party spirit going for as long as you can." - }, - { - "name": "Spend the day driving around the city and visiting new places", - "description": "This one is geared towards couples who have been together for a year or two and want to experience a few new things together. Visit a few cool coffee places on the other side of town, check out interesting restaurants you’ve never been to, and consider going to see a play or having fun at a comedy club on open mic night." - }, - { - "name": "Wine and chocolates at sunset", - "description": "Pick out a romantic location, such as a camping spot on a hill overlooking the city or a balcony in a restaurant with a nice view, open a bottle of wine and a box of chocolates and wait for that perfect moment when the sky turns fiery red to embrace and share a passionate kiss." - }, - { - "name": "Ice skating", - "description": "There is something incredibly fun about ice skating that brings people closer together and just keeps you laughing (maybe it’s all the falling and clinging to the other person for dear life). You can have some great fun and then move on to a more private location for some alone time." - }, - { - "name": "Model clothes for each other", - "description": "This one goes well when combined with a shopping spree, but you can just get a bunch of your clothes—old and new—from the closet, set up a catwalk area and then try on different combinations. You can be stylish, funny, handsome and sexy. It’s a great after-dinner show and a good way to transition into a more intimate atmosphere." - }, - { - "name": "Dance the night away", - "description": "If you and your significant other are relatively good dancers, or if you simply enjoy moving your body to the rhythm of the music, then a night at salsa club or similar venue is the perfect thing for you. Alternatively, you can set up dance floor at home, play your favorite music, have a few drinks and dance like there is no tomorrow." - }, - { - "name": "Organize a nature walk", - "description": "Being outside has many health benefits, but what you are going for is the beautiful view, seclusion, and the thrill of engaging in some erotic behavior out in the open. You can rent a cottage far from the city, bring some food and drinks, and explore the wilderness. This is nice way to spice things up a bit and get away from the loud and busy city life." - }, - { - "name": "Travel abroad", - "description": "This takes a bit of planning in advance and may be a bit costly, but if you can afford it, there are very few things that can match a trip to France, Italy, Egypt, Turkey, Greece, or a number of other excellent locations." - }, - { - "name": "Go on a hot-air balloon ride", - "description": "These are very fun and romantic—you get an incredible view, get to experience the thrill of flying, and you’ve got enough room for a romantic dinner and some champagne. Just be sure to wear warm clothes, it can get pretty cold high up in the air." - }, - { - "name": "A relaxing day at the spa", - "description": "Treat your body, mind and senses to a relaxing day at the spa. You and your partner will feel fresh, comfortable, relaxed, and sexy as hell—a perfect date for the more serious couples who don’t get to spend as much time with each other as they’d like." - }, - { - "name": "Fun times at a karaoke bar", - "description": "A great choice for couples celebrating their first Valentine’s Day together—it’s fairly informal and inexpensive, yet incredibly fun and allows for deeper bonding. Once you have a few drinks in your system and come to terms with the fact that you are making a complete fool of yourself, you’ll have the time of your life!" - }, - { - "name": "Horseback riding", - "description": "Horseback riding is incredibly fun, especially if you’ve never done it before. And what girl doesn’t dream of a prince coming to take her on an adventure on his noble steed? It evokes a sense of nobility and is a very good bonding experience." - }, - { - "name": "Plan a fun date night with other couples", - "description": "Take a break and rent a cabin in the woods, go to a mountain resort, a couple’s retreat, or just organize a huge date night at someone’s place and hang out with other couples. This is a great option for couples who have spent at least one Valentine’s Day together and allows you to customize your experience to suit your needs. Also, you can always retire early and get some alone time with your partner if you so desire." - }, - { - "name": "Go to a concert", - "description": "There are a whole bunch of things happening around Valentine’s Day, so go online and check out what’s happening near you. You’ll surely be able to find tickets for a cool concert or some type of festival with live music." - }, - { - "name": "Fancy night on the town", - "description": "Buy some elegant new clothes, rent a limo for the night and go to a nice restaurant, followed by a jazz club or gallery exhibition. Walk tall, make a few sarcastic quips, and have a few laughs with your partner while letting your inner snob take charge for a few hours." - }, - { - "name": "Live out a James Bond film at a casino", - "description": "A beautiful lady in a simple yet sensual, form-fitting, black dress, and a strong and handsome, if somewhat stern-looking man in a fine suit walk up to a roulette table with drinks in hand and place bets at random as they smile at each other seductively. This is a scenario most of us wish to play out, but rarely get a chance. It can be a bit costly, but this is one of the most incredibly adventurous and romantic date ideas." - }, - { - "name": "Go bungee jumping", - "description": "People in long-term relationships often talk about things like keeping a relationship fun and exciting, doing new things together, trusting each other and using aphrodisiacs. Well, bungee jumping is a fun, exhilarating activity you can both enjoy; it requires trust and the adrenaline rush you get from it is better than any aphrodisiac out there. Just saying, give it a shot and you won’t regret it. " - }, - { - "name": "Play some sports", - "description": "Some one-on-one basketball, a soccer match against another couple, a bit of tennis, or even something as simple as a table tennis tournament (make it fun by stripping off items of clothing when you lose a game). You can combine this with date idea #13 and paint team uniforms on each other and play in the nude." - }, - { - "name": "Take skydiving lessons", - "description": "An adrenaline-filled date, skydiving is sure to get your heart racing like crazy and leave you with a goofy grin for the rest of the day. You can offset all the excitement by ending the day with a quiet dinner at home." - }, - { - "name": "Go for some paintball", - "description": "Playing war games is an excellent way to get your body moving, focus on some of that hand-eye-coordination, and engage your brain in coming up with tactical solutions in the heat of the moment. It is also a great bonding experience, adrenaline-fueled fun, and role-playing all wrapped into one. And when you get back home, you can always act out the wounded soldier scenario." - }, - { - "name": "Couples’ Yoga", - "description": "Getting up close, hot, and sweaty? Sounds like a Valentine’s Day movie to me. By signing up with your partner for a couples’ yoga class, you can sneak in a workout while getting some face-to-face time with your date.This type of yoga focuses on poses that can be done with a partner, such as back-to-back bends, assisted stretches, and face-to-face breathing exercises. By working out together, you strengthen your bond while stretching away the stress of the week. Finish the date off by heading to the juice bar for a smoothie, or indulging in healthy salads for two. Expect to spend around $35 per person, or approximately $50 to $60 per couple." - }, - { - "name": "Volunteer Together", - "description": "Getting your hands dirty for a good cause might not be the first thing that pops into your mind when you think “romance,” but there’s something to be said for a date that gives you a glimpse of your partner’s charitable side. Consider volunteering at an animal rescue, where you might be able to play with pups or help a few lovebirds pick out their perfect pet. Or, sign up to visit the elderly at a care center, where you can be a completely different kind of Valentine for someone in need." - } - ] -} diff --git a/bot/resources/valentines/love_matches.json b/bot/resources/valentines/love_matches.json deleted file mode 100644 index 7df2dbda..00000000 --- a/bot/resources/valentines/love_matches.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "0": { - "titles": [ - "\ud83d\udc94 There's no real connection between you two \ud83d\udc94" - ], - "text": "The chance of this relationship working out is really low. You can get it to work, but with high costs and no guarantee of working out. Do not sit back, spend as much time together as possible, talk a lot with each other to increase the chances of this relationship's survival." - }, - "5": { - "titles": [ - "\ud83d\udc99 A small acquaintance \ud83d\udc99" - ], - "text": "There might be a chance of this relationship working out somewhat well, but it is not very high. With a lot of time and effort you'll get it to work eventually, however don't count on it. It might fall apart quicker than you'd expect." - }, - "20": { - "titles": [ - "\ud83d\udc9c You two seem like casual friends \ud83d\udc9c" - ], - "text": "The chance of this relationship working is not very high. You both need to put time and effort into this relationship, if you want it to work out well for both of you. Talk with each other about everything and don't lock yourself up. Spend time together. This will improve the chances of this relationship's survival by a lot." - }, - "30": { - "titles": [ - "\ud83d\udc97 You seem like you are good friends \ud83d\udc97" - ], - "text": "The chance of this relationship working is not very high, but its not that low either. If you both want this relationship to work, and put time and effort into it, meaning spending time together, talking to each other etc., than nothing shall stand in your way." - }, - "45": { - "titles": [ - "\ud83d\udc98 You two are really close aren't you? \ud83d\udc98" - ], - "text": "Your relationship has a reasonable amount of working out. But do not overestimate yourself there. Your relationship will suffer good and bad times. Make sure to not let the bad times destroy your relationship, so do not hesitate to talk to each other, figure problems out together etc." - }, - "60": { - "titles": [ - "\u2764 So when will you two go on a date? \u2764" - ], - "text": "Your relationship will most likely work out. It won't be perfect and you two need to spend a lot of time together, but if you keep on having contact, the good times in your relationship will outweigh the bad ones." - }, - "80": { - "titles": [ - "\ud83d\udc95 Aww look you two fit so well together \ud83d\udc95" - ], - "text": "Your relationship will most likely work out well. Don't hesitate on making contact with each other though, as your relationship might suffer from a lack of time spent together. Talking with each other and spending time together is key." - }, - "95": { - "titles": [ - "\ud83d\udc96 Love is in the air \ud83d\udc96", - "\ud83d\udc96 Planned your future yet? \ud83d\udc96" - ], - "text": "Your relationship will most likely work out perfect. This doesn't mean thought that you don't need to put effort into it. Talk to each other, spend time together, and you two won't have a hard time." - }, - "100": { - "titles": [ - "\ud83d\udc9b When will you two marry? \ud83d\udc9b", - "\ud83d\udc9b Now kiss already \ud83d\udc9b" - ], - "text": "You two will most likely have the perfect relationship. But don't think that this means you don't have to do anything for it to work. Talking to each other and spending time together is key, even in a seemingly perfect relationship." - } -} diff --git a/bot/resources/valentines/pickup_lines.json b/bot/resources/valentines/pickup_lines.json deleted file mode 100644 index eb01290f..00000000 --- a/bot/resources/valentines/pickup_lines.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "placeholder": "https://i.imgur.com/BB52sxj.jpg", - "lines": [ - { - "line": "Hey baby are you allergic to dairy cause I **laktose** clothes you're wearing", - "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8f/Cheese_%281105942243%29.jpg/800px-Cheese_%281105942243%29.jpg" - }, - { - "line": "I’m not a photographer, but I can **picture** me and you together.", - "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/57/2016_Minolta_Dynax_404si.JPG/220px-2016_Minolta_Dynax_404si.JPG" - }, - { - "line": "I seem to have lost my phone number. Can I have yours?" - }, - { - "line": "Are you French? Because **Eiffel** for you.", - "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/85/Tour_Eiffel_Wikimedia_Commons_%28cropped%29.jpg/240px-Tour_Eiffel_Wikimedia_Commons_%28cropped%29.jpg" - }, - { - "line": "Hey babe are you a cat? Because I'm **feline** a connection between us.", - "image": "https://upload.wikimedia.org/wikipedia/commons/4/4d/Cat_November_2010-1a.jpg" - }, - { - "line": "Baby, life without you is like a broken pencil... **pointless**.", - "image": "https://upload.wikimedia.org/wikipedia/commons/0/08/Pencils_hb.jpg" - }, - { - "line": "Babe did it hurt when you fell from heaven?" - }, - { - "line": "If I could rearrange the alphabet, I would put **U** and **I** together.", - "image": "https://images-na.ssl-images-amazon.com/images/I/51wJaFX%2BnGL._SX425_.jpg" - }, - { - "line": "Is your name Google? Because you're everything I'm searching for.", - "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/53/Google_%22G%22_Logo.svg/1024px-Google_%22G%22_Logo.svg.png" - }, - { - "line": "Are you from Starbucks? Because I like you a **latte**.", - "image": "https://upload.wikimedia.org/wikipedia/en/thumb/d/d3/Starbucks_Corporation_Logo_2011.svg/1200px-Starbucks_Corporation_Logo_2011.svg.png" - }, - { - "line": "Are you a banana? Because I find you **a peeling**.", - "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/44/Bananas_white_background_DS.jpg/220px-Bananas_white_background_DS.jpg" - }, - { - "line": "Do you like vegetables because I love you from my head **tomatoes**.", - "image": "https://vignette.wikia.nocookie.net/veggietales-the-ultimate-veggiepedia/images/e/ec/Bobprofile.jpg/revision/latest?cb=20161227190344" - }, - { - "line": "Do you like science because I've got my **ion** you.", - "image": "https://www.chromacademy.com/lms/sco101/assets/c1_010_equations.jpg" - }, - { - "line": "Are you an angle? Because you are **acute**.", - "image": "https://juicebubble.co.za/wp-content/uploads/2018/03/acute-angle-white-400x400.png" - }, - { - "line": "If you were a fruit, you'd be a **fineapple**." - }, - { - "line": "Did you swallow magnets? Cause you're **attractive**.", - "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/93/Magnetic_quadrupole_moment.svg/1200px-Magnetic_quadrupole_moment.svg.png" - }, - { - "line": "Hey pretty thang, do you have a name or can I call you mine?" - }, - { - "line": "Is your name Wi-Fi? Because I'm feeling a connection.", - "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/ae/WiFi_Logo.svg/1200px-WiFi_Logo.svg.png" - }, - { - "line": "Are you Australian? Because you meet all of my **koala**fications.", - "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/49/Koala_climbing_tree.jpg/240px-Koala_climbing_tree.jpg" - }, - { - "line": "If I were a cat I'd spend all 9 lives with you.", - "image": "https://upload.wikimedia.org/wikipedia/commons/4/4d/Cat_November_2010-1a.jpg" - }, - { - "line": "My love for you is like dividing by 0. It's undefinable.", - "image": "https://i.pinimg.com/originals/05/f5/9a/05f59a9fa44689e3435b5e46937544bb.png" - }, - { - "line": "Take away gravity, I'll still fall for you.", - "image": "https://i.pinimg.com/originals/05/f5/9a/05f59a9fa44689e3435b5e46937544bb.png" - }, - { - "line": "Are you a criminal? Because you just stole my heart.", - "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/98/Hinged_Handcuffs_Rear_Back_To_Back.JPG/174px-Hinged_Handcuffs_Rear_Back_To_Back.JPG" - }, - { - "line": "Hey babe I'm here. What were your other two wishes?", - "image": "https://upload.wikimedia.org/wikipedia/en/thumb/0/0c/The_Genie_Aladdin.png/220px-The_Genie_Aladdin.png" - } - ] -} diff --git a/bot/resources/valentines/valenstates.json b/bot/resources/valentines/valenstates.json deleted file mode 100644 index c58a5b7c..00000000 --- a/bot/resources/valentines/valenstates.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "Australia": { - "text": "Australia is the oldest, flattest and driest inhabited continent on earth. It is one of the 18 megadiverse countries, featuring a wide variety of plants and animals, the most iconic ones being the koalas and kangaroos, as well as its deadly wildlife and trees falling under the Eucalyptus genus.", - "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/88/Flag_of_Australia_%28converted%29.svg/1920px-Flag_of_Australia_%28converted%29.svg.png" - }, - "Austria": { - "text": "Austria is part of the european continent, lying in the alps. Due to its location, Austria possesses a variety of very tall mountains like the Großglockner (3798 m) or the Wildspitze (3772 m).", - "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/Flag_of_Austria.svg/1920px-Flag_of_Austria.svg.png" - }, - "Brazil": { - "text": "Being the largest and most populated country in South and Latin America, Brazil, as one of the 18 megadiverse countries, features a wide variety of plants and animals, especially in the Amazon rainforest, the most biodiverse rainforest in the world.", - "flag": "https://upload.wikimedia.org/wikipedia/en/thumb/0/05/Flag_of_Brazil.svg/1280px-Flag_of_Brazil.svg.png" - }, - "Canada": { - "text": "Canada is the second-largest country in the world measured by total area, only surpassed by Russia. It's widely known for its astonishing national parks.", - "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Flag_of_Canada_%28Pantone%29.svg/1920px-Flag_of_Canada_%28Pantone%29.svg.png" - }, - "Croatia": { - "text": "Croatia is a country at the crossroads of Central and Southeast Europe, mostly known for its beautiful beaches and waters.", - "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Flag_of_Croatia.svg/1920px-Flag_of_Croatia.svg.png" - }, - "England": { - "text": "", - "flag": "https://upload.wikimedia.org/wikipedia/en/thumb/b/be/Flag_of_England.svg/1920px-Flag_of_England.svg.png" - }, - "Finland": { - "text": "", - "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Flag_of_Finland.svg/1920px-Flag_of_Finland.svg.png" - }, - "France": { - "text": "", - "flag": "https://upload.wikimedia.org/wikipedia/en/thumb/c/c3/Flag_of_France.svg/1920px-Flag_of_France.svg.png" - }, - "Germany": { - "text": "", - "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/ba/Flag_of_Germany.svg/1920px-Flag_of_Germany.svg.png" - }, - "Greece": { - "text": "", - "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/Flag_of_Greece.svg/1920px-Flag_of_Greece.svg.png" - }, - "Iceland": { - "text": "", - "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/ce/Flag_of_Iceland.svg/1280px-Flag_of_Iceland.svg.png" - }, - "India": { - "text": "", - "flag": "https://upload.wikimedia.org/wikipedia/en/thumb/4/41/Flag_of_India.svg/1920px-Flag_of_India.svg.png" - }, - "Indonesia": { - "text": "", - "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9f/Flag_of_Indonesia.svg/1920px-Flag_of_Indonesia.svg.png" - }, - "Ireland": { - "text": "", - "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/45/Flag_of_Ireland.svg/1920px-Flag_of_Ireland.svg.png" - }, - "Italy": { - "text": "", - "flag": "https://upload.wikimedia.org/wikipedia/en/thumb/0/03/Flag_of_Italy.svg/1920px-Flag_of_Italy.svg.png" - }, - "Mexico": { - "text": "", - "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/fc/Flag_of_Mexico.svg/1920px-Flag_of_Mexico.svg.png" - }, - "New Zealand": { - "text": "", - "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Flag_of_New_Zealand.svg/1920px-Flag_of_New_Zealand.svg.png" - }, - "Norway": { - "text": "", - "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Flag_of_Norway.svg/1280px-Flag_of_Norway.svg.png" - }, - "Peru": { - "text": "", - "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Flag_of_Peru.svg/1920px-Flag_of_Peru.svg.png" - }, - "Portugal": { - "text": "", - "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/Flag_of_Portugal.svg/1920px-Flag_of_Portugal.svg.png" - }, - "Scotland": { - "text": "", - "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/10/Flag_of_Scotland.svg/1920px-Flag_of_Scotland.svg.png" - }, - "Slovenia": { - "text": "", - "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f0/Flag_of_Slovenia.svg/1920px-Flag_of_Slovenia.svg.png" - }, - "South Africa": { - "text": "", - "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Flag_of_South_Africa.svg/1920px-Flag_of_South_Africa.svg.png" - }, - "Spain": { - "text": "", - "flag": "https://upload.wikimedia.org/wikipedia/en/thumb/9/9a/Flag_of_Spain.svg/1920px-Flag_of_Spain.svg.png" - }, - "Sweden": { - "text": "", - "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Flag_of_Sweden.svg/1920px-Flag_of_Sweden.svg.png" - }, - "Switzerland": { - "text": "", - "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/08/Flag_of_Switzerland_%28Pantone%29.svg/1024px-Flag_of_Switzerland_%28Pantone%29.svg.png" - }, - "Turkey": { - "text": "", - "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b4/Flag_of_Turkey.svg/1920px-Flag_of_Turkey.svg.png" - }, - "United States": { - "text": "", - "flag": "https://upload.wikimedia.org/wikipedia/en/thumb/a/a4/Flag_of_the_United_States.svg/1920px-Flag_of_the_United_States.svg.png" - }, - "Vietnam": { - "text": "", - "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/21/Flag_of_Vietnam.svg/1920px-Flag_of_Vietnam.svg.png" - }, - "Wales": { - "text": "", - "flag": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a9/Flag_of_Wales_%281959%E2%80%93present%29.svg/1920px-Flag_of_Wales_%281959%E2%80%93present%29.svg.png" - } -} diff --git a/bot/resources/valentines/valentine_facts.json b/bot/resources/valentines/valentine_facts.json deleted file mode 100644 index e6f826c3..00000000 --- a/bot/resources/valentines/valentine_facts.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "whois": "Saint Valentine, officially Saint Valentine of Rome, was a widely recognized 3rd-century christian saint, commemorated on February 14. He was a priest and bishop, ministering persecuted Christians in the Roman Empire, and is associated with a tradition of courtly love since the High Middle Ages, a period commenced around the year 1000AD and lasting until around 1250AD. He was martyred and buried at a Christian cemetery on the Via Flaminia on February 14.\n\nThere are a bunch of inconsistencies in the identification of the saint, however there are evidences for 3 saints that appear in connection with February 14. One of them, Saint Valentine of Terni, is believed to be the one associated with a vision restoration miracle, which happening during his imprisonment. In that, he restored the eyesight of his jailer's daughter, and, on the evening before his execution, supposedly sent her a letter signed with 'Your Valentine' (tuum valentinum). This makes this saint the one we today associate with Saint Valentine's Day.\n\nThe artist Cicero Moraes attempted a facial reconstruction of Saint Valentine, which can be seen in the thumbnail.", - "titles": [ - "\u2764 Facts \u00e1 la carte \u2764", - "\u2764 Would you like some cheese with your wi... facts? \u2764", - "\u2764 Facts to raise your pulse \u2764", - "\u2764 Love Facts, Episode #42 \u2764", - "\u2764 It's a fact not a fact, duh \u2764", - "\u2764 Candlelight din... facts! \u2764" - ], - "text": [ - "The expression 'From your Valentine' derives from a legend in which Saint Valentine, imprisoned after persecution and not wanting to convert to Roman paganism, performed a miracle on Julia, his jailer Asterius's blind daughter, restoring her eyesight. On the evening before his execution, he is supposed to have written a letter to the jailers daughter, signing as 'Your Valentine' (tuum valentinum).", - "Valentine's Day wasn't really associated with anything romantic, until the 14th century England where it's association with romantic love had begun from within the circle of Geoffrey Chaucer, a famous english poet and author, also called 'Father of English literature' for his work. He is best known for 'The Caunterbury Tales', a collection of 24 stories, which are presented as part of a story-telling contest by a group of pilgrims on their travel from London to Canterbury.", - "It's only been roughly 300 years, that the Valentine's Day evolved into what we know today.", - "The wide usage of hearts on Valentine's day derived from a legend, in which Saint Valentine cut hearts from parchment, giving them to persecuted Christians and soldiers married by him. He did that \"to remind these man of their vows and God's love\"", - "In 1797, a British publisher developed \"The Young Man's Valentine Writer\", to assist young men in composing their own sentimental verses to ladies they felt attracted to.", - "If you've never gotten any handwritten Valentine cards, this may be due to the fact, that in the 19th century, handwritten notes have given away to mass-produced greeting cards.", - "In 1868, a British chocolate company called Cadbury created so called 'Fancy Boxes', which essentially were a decorated box of chocolates in the shape of a heart. This set a trend, such that these boxes were quickly associated with Valentine's Day.", - "Roses are red,\nviolet's are blue,\nI can't rhyme,\nbut I still do.\n\u200b\nThis poem in particular,\nit will stay forever,\nderives from The Faerie Queene,\nan epic poem you probably have never seen.\n\n\"She bath'd with roses red, and violets blew,\nAnd all the sweetest flowres, that in the forrest grew.\"\n\nThese verses, with most immense sway,\nlead to the poem we still hear today.", - "The earliest Valentine poem known is a rondeau, a form of medieval/renaissance French poetry, composed by Charles, Duke of Orl\u00e9ans to his wife:\n\n\"Je suis desja d'amour tann\u00e9,\nMa tres doulce Valentin\u00e9e\"", - "There's a form of cryptological communication called 'Floriography', in which you communicate through flowers. Meaning has been attributed to flowers for thousands of years, and some form of floriography has been practiced in traditional cultures throughout Europe, Asia, and Africa. Here are some meanings for roses you might want to take a look at, if you plan on gifting your loved one a bouquet of roses on Valentine's Day:\n\u200b\nRed: eternal love\nPink: young, developing love\nWhite: innocence, fervor, loyalty\nOrange: happiness, security\nViolet: love at first sight\nBlue: unfulfilled longing, quiet desire\nYellow: friendship, jealousy, envy, infidelity\nBlack: unfulfilled longing, quiet desire, grief, hatred, misfortune, death", - "Traditionally, young girls in the U.S. and the U.K. believed they could tell what type of man they would marry depending on the type of bird they saw first on Valentine's Day. If they saw a blackbird, they would marry a clergyman, a robin redbreast indicated a sailor, and a goldfinch indicated a rich man. A sparrow meant they would marry a farmer, a bluebird indicated a happy man, and a crossbill meant an argumentative man. If they saw a dove, they would marry a good man, but seeing a woodpecker meant they would not marry at all." - ] -} diff --git a/bot/resources/valentines/zodiac_compatibility.json b/bot/resources/valentines/zodiac_compatibility.json deleted file mode 100644 index ea9a7b37..00000000 --- a/bot/resources/valentines/zodiac_compatibility.json +++ /dev/null @@ -1,262 +0,0 @@ -{ - "Aries":[ - { - "Zodiac" : "Sagittarius", - "description" : "The Archer is one of the most compatible signs Aries should consider when searching out relationships that will bear fruit. Sagittarians share a certain love of freedom with Aries that will help the two of them conquer new territory together.", - "compatibility_score" : "87%" - }, - { - "Zodiac" : "Leo", - "description" : "Leo is the center of attention and typically the life of the party, but can also be courageous, bold, and powerful. These two signs share a gregarious nature that helps them walk life's path in sync. They may vie occasionally to see which one leads the way, but all things considered, they share a great capacity for compatibility.", - "compatibility_score" : "83%" - }, - { - "Zodiac" : "Aquarius", - "description" : "Aquarius' need for personal space dovetails nicely with Aries' love of freedom. This doesn't mean that the Ram and the Water Bearer can't forge a deep bond; in fact, quite the opposite. Their mutual respect for one another's needs and space leaves room for both to grow on their own and together.", - "compatibility_score" : "68%" - }, - { - "Zodiac" : "Gemini", - "description" : "The Twins are known for their adaptability, a trait that easily follows Aries' need to lead their closest companions down new paths. Geminis are also celebrated for their personal charm and intellect, traits the discerning Ram is also capable of fully appreciating.", - "compatibility_score" : "74%" - } - ], - "Taurus":[ - { - "Zodiac" : "Virgo", - "description" : "Although these signs have their set of differences, the Virgo Taurus compatibility is usually pretty strong. This is because both the signs want the same thing ultimately and have generally synchronous ways of reaching those points. This helps them complement each other and create a healthy relationship between them.", - "compatibility_score" : "73%" - }, - { - "Zodiac" : "Capricorn", - "description" : "A great compatibility is seen in this match as far as the philosophical and spiritual aspects of life are concerned. Taurus and Capricorn have a practical approach towards life. The ambitions and calmness of the Goat will attract the Bull, who will attract the former with his strong determination.The compatibility between these two zodiac signs is at the greatest height due to their mutual understanding, faith and consonance.", - "compatibility_score" : "89%" - }, - { - "Zodiac" : "Pisces", - "description" : "This relationship will survive the test of time if both parties involved have unbreakable trust in each other and nurture that connection they have painstakingly built over the years. They must remember to be honest and committed to their partner through all times.If natural communication flows between them like clockwork, this will be a beautiful love story with a prominent tag of 'happily-ever-after' pinned right to it!", - "compatibility_score" : "88%" - }, - { - "Zodiac" : "Cancer", - "description" : "This is a peaceful union of two reliable and kind souls. It is one of the strong zodiac pairings in terms of compatibility, and certainly has a real chance of lasting a lifetime in astrological charts. If Taurus man and Cancer woman and vice-versa are mature enough to handle the occasional friction, which they usually are, their bond will transcend all boundaries and is likely to grow in strength through the years.", - "compatibility_score" : "91%" - } - ], - "Gemini":[ - { - "Zodiac" : "Aries", - "description" : "The theorem of astrology says that Aries and Gemini have a zero tolerance for boredom and will at once get rid of anything dull. An Arian will let a Geminian enjoy his personal freedom and the Gemini will respect his individuality.", - "compatibility_score" : "74%" - }, - { - "Zodiac" : "Leo", - "description" : "Gemini and Leo love match that can go through extravagant heights and crushing lows, but one is sure to leave both of them breathless. This is a pair that forms one of the most exciting relationships of the zodiac chart, but the converse is equally true; they are vulnerable to experiencing terrible lows.", - "compatibility_score" : "82%" - }, - { - "Zodiac" : "Libra", - "description" : "It is relatively easier for them to adjust to each other as while they might have different outlooks to some things in life, they rarely collide or crash against one another. Hence, it is easy for them to go forward in harmony, forming a formidable bond in the process.", - "compatibility_score" : "78%" - }, - { - "Zodiac" : "Aquarius", - "description" : "This is one of the most successful pairs of the zodiac chart.If they manage to smooth this solitary wrinkle, this will be a beautiful union for both the parties involved. It will turn into a gift that will keep giving happiness, contentment and encouragement to the air signs.", - "compatibility_score" : "91%" - } - ], - "Cancer":[ - { - "Zodiac" : "Taurus", - "description" : "The Cancer Taurus zodiac relationship compatibility is strong because of their mutual love for safety, stability, and comfort. Their mutual understanding will always be powerful, which will be the pillar of strength of their relationship.", - "compatibility_score" : "91%" - }, - { - "Zodiac" : "Scorpio", - "description" : "The Cancer man and Scorpio woman and vice-versa connect on an intuitive level and will find refuge in each other from the outset of the relationship.", - "compatibility_score" : "79%" - }, - { - "Zodiac" : "Virgo", - "description" : "This is a match made in heaven! Very few zodiac combinations work as well as Cancer and Virgo. Their blissful union is one which is generally filled with memories of happiness, contentment, loyalty, and harmony. They will build an extremely strong bond with each other that can pass all the tests of time and emerge stronger after every challenge that is thrown in its way!", - "compatibility_score" : "77%" - } - ], - "Leo":[ - { - "Zodiac" : "Aries", - "description" : "A Leo is generous and an Arian is open to life. Sharing the same likes and dislikes, they both crave for fun, romance and excitement. A Leo respects an Arian's need for freedom because an Arian does not interfere much in the life of a Leo. Aries will love the charisma and ideas of the Leo.", - "compatibility_score" : "83%" - }, - { - "Zodiac" : "Gemini", - "description" : "This is one of the most compatible pairings in the zodiac chart and if the minor friction is handled with maturity by both the parties, the Leo and Gemini compatibility relationship can last a lifetime. A lifetime, which will be filled with love, happiness, and success.", - "compatibility_score" : "82%" - }, - { - "Zodiac" : "Libra", - "description" : "he thing that attributes for the greater compatibility of this love match is that both the signs like to complement each other. Leo and Libra love to attend social gatherings. They like to engage themselves in romance and act as lovers. This love match is strong enough to face adverse situations due to their opposite individual characters. This pair likes to enjoy candlelit dinners, long drives, dancing", - "compatibility_score" : "75%" - }, - { - "Zodiac" : "Sagittarius", - "description" : "The key for this relationship to work is that both Leo star sign and Sagittarius star sign natives should know where they want it to go in the long run. If they are ready for a long-time commitment and are mutually aware of the same, they will form a brilliant and buoyant bond together. It can last for a lifetime and will be characterized by the excitement, love, happiness, and unending loyalty that Leo and Sagittarius will bring to each other’s life.", - "compatibility_score" : "75%" - } - ], - "Virgo":[ - { - "Zodiac" : "Taurus", - "description" : "Although these signs have their set of differences, the Virgo Taurus compatibility is usually pretty strong. This is because both the signs want the same thing ultimately and have generally synchronous ways of reaching those points. This helps them complement each other and create a healthy relationship between them.", - "compatibility_score" : "73%" - }, - { - "Zodiac" : "Cancer", - "description" : "This is one of the few zodiac compatibilities that look great not only on paper, but also in reality. The shared outlook that Cancer and Virgo have towards life makes their relationship a positive, reliable, and beautiful entity for both the sides.", - "compatibility_score" : "77%" - }, - { - "Zodiac" : "Scorpio", - "description" : "The Virgo Scorpio love match definitely has something unique to offer to the zodiac world, and to both the parties involved in this pair. If they manage to control their negative traits, this relationship truly has the chance to survive everything life throws at it.", - "compatibility_score" : "76%" - }, - { - "Zodiac" : "Capricorn", - "description" : "The compatibility of this match is quite well as both rely on each other and possess the maturity to understand their individual outlook. Capricorn plans in advance and steadily reaches his goal and a Virgo has faith in his abilities and skills.", - "compatibility_score" : "77%" - } - ], - "Libra":[ - { - "Zodiac" : "Leo", - "description" : "Libra and Leo love match can work well for both the partners and truly help them learn from each other and grow individually, as well as together. Libra and Leo, when in the right frame of mind, form a formidable couple that attracts admiration and respect everywhere it goes.", - "compatibility_score" : "75%" - }, - { - "Zodiac" : "Aquarius", - "description" : "Libra Aquarius Relationship has a good chance of working because of the immense understanding that both the zodiac signs have for each other. They are likely to fight less as Libra believes in avoiding conflict and Aquarius usually is an extremely open-minded and non-judgmental sign.", - "compatibility_score" : "68%" - }, - { - "Zodiac" : "Gemini", - "description" : "It is relatively easier for them to adjust to each other as while they might have different outlooks to some things in life, they rarely collide or crash against one another. Hence, it is easy for them to go forward in harmony, forming a formidable bond in the process.", - "compatibility_score" : "78%" - }, - { - "Zodiac" : "sagittarius", - "description" : "If Sagittarius and Libra want to make it with each other, they must give themselves the time to understand each other fully. Rushing through the relationship will only need to problems in the future and that can be avoided if both the parties are careful not to get too ahead of themselves at any point.", - "compatibility_score" : "71%" - } - ], - "Scorpio":[ - { - "Zodiac" : "Cancer", - "description" : "This union is not unusual, but will take a fair share of work in the start. A strong foundation of clear cut communication is mandatory to make this a loving and stress free relationship!", - "compatibility_score" : "79%" - }, - { - "Zodiac" : "Virgo", - "description" : "Very rarely does it so happen that a pairing can be so perfect and perfectly horrid at the same time. As such, it is imperative that the individuals involved take time before they jump into a serious commitment. Knowing these two zodiacs, commitments last for a lifetime.", - "compatibility_score" : "76%" - }, - { - "Zodiac" : "Capricorn", - "description" : "The relationship of Scorpio and Capricorn can be inspiring for both partners to search for the truth, dig up under their family tree and deal with any unresolved karma and debt. They are both deep and don’t take things lightly, and this will help them build a strong foundation for a relationship that can last for a long time.", - "compatibility_score" : "72%" - }, - { - "Zodiac" : "Pisces", - "description" : "Scorpio-Pisces is one of the most compatible signs of the zodiac calendar. They have a gamut of intense emotions that are consistently in sync with each other. Only if the Scorpion learns to let it go once in a while and the Pisces develops a sense of self-assurance, it will be a successful partnership that will meet its short-term as well as long-term goals.", - "compatibility_score" : "81%" - } - ], - "Sagittarius":[ - { - "Zodiac" : "Aries", - "description" : "Sagittarius and Aries can make a very compatible pair. Their relationship will have a lot of passion, enthusiasm, and energy. These are very good traits to make their relationship deeper and stronger. Both Aries and Sagittarius will enjoy each other's company and their energy level rises as the relationship grows. Both will support and help in fighting hardships and failures.", - "compatibility_score" : "87%" - }, - { - "Zodiac" : "Leo", - "description" : "While there might be a few blips in the Sagittarius Leo relationship, they are certainly one of the most compatible couples when it comes to astrological studies. They can bring the best out of each other and shine in the light of their positive all exciting relationship.", - "compatibility_score" : "75%" - }, - { - "Zodiac" : "Libra", - "description" : "The connectivity between Sagittarians and Librans is amazing. Librans are inclined towards maintaining balance and harmony. Sagittarians are intelligent and fun loving. But, Librans have a strange trait of transiting from one phase of emotion to other.", - "compatibility_score" : "71%" - }, - { - "Zodiac" : "Aquarius", - "description" : "This is a combination where the positives outweigh the negatives by a considerable margin. As long as this pair builds and retains their passion for each other in the relationship, it will be a hit that can pass every test that is thrown at it.The Sagittarius Aquarius compatibility is one of a kind and can go the distance in most cases.", - "compatibility_score" : "83%" - } - ], - "Capricorn":[ - { - "Zodiac" : "Taurus", - "description" : "This is one of the most grounded and reliable bonds of the zodiac chart. If Capricorn and Taurus do find a way to handle their minor issues, they have a good chance of making it together and that too, in a happy, peaceful, and healthy relationship.", - "compatibility_score" : "89%" - }, - { - "Zodiac" : "Virgo", - "description" : "Virgo and Capricorn will connect to each other on a visceral level and will find enduring stability in their relationship. Since this bond is something they can rely on, they tend to ease up individually and thus, are likely to be more relaxed and happier in life.", - "compatibility_score" : "77%" - }, - { - "Zodiac" : "Scorpio", - "description" : "Though they have a couple of blips in the relationship, the combination of Scorpion and Capricorn is a match with powerful compatibility. They will shine with each other, develop each other, and build a beautiful bond with each other. If and when the two decide to commit to each other, their relationship is one that is likely to go the distance nine times out of ten!", - "compatibility_score" : "70%" - }, - { - "Zodiac" : "Pisces", - "description" : "Pisces and Capricorn signs have primary difference of qualities, but their union is aided seamlessly due to that very discrepancy of their personas. It is a highly compatible relationship that can go a long way with mutual respect, amicable understanding and immense trust between the concerned parties.", - "compatibility_score" : "76%" - } - ], - "Aquarius":[ - { - "Zodiac" : "Aries", - "description" : "The relationship of Aries and Aquarius is very exciting, adventurous and interesting. They will enjoy each other's company as both of them love fun and freedom.This is a couple that lacks tenderness. They are not two brutes who let their relationship fade as soon as their passion does.", - "compatibility_score" : "72%" - }, - { - "Zodiac" : "Gemini", - "description" : "If you want to see a relationship that is full of conversation, ideas and \"eureka moments\", you observe the Aquarius Gemini relationship. They will enjoy a camaraderie that you won't find in most zodiac relationships.", - "compatibility_score" : "85%" - }, - { - "Zodiac" : "Libra", - "description" : "The couple will share a lot of similar qualities and will enjoy the relationship. Both of them love to socialize with people and to make new friends.", - "compatibility_score" : "68%" - }, - { - "Zodiac" : "Sagittarius", - "description" : "These two will get together when it is time for both of them to go through a change in their lives or leave a partner they feel restricted with. Their relationship is often a shiny beacon to everyone around them because it gives priority to the future and brings hope of a better time.", - "compatibility_score" : "83%" - } - ], - "Pisces":[ - { - "Zodiac" : "Taurus", - "description" : "This relationship will survive the test of time if both parties involved have unbreakable trust in each other and nurture that connection they have painstakingly built over the years. They must remember to be honest and committed to their partner through all times.If natural communication flows between them like clockwork, this will be a beautiful love story with a prominent tag of ‘happily-ever-after’ pinned right to it!", - "compatibility_score" : "88%" - }, - { - "Zodiac" : "Cancer", - "description" : "The Pisces Cancer union is a beautiful one. Both zodiacs are normally blessed with appealing looks and attractive minds. They are both prone to be drawn to each other. Mostly, for very valid reasons. However, both the zodiac star signs need to make sure that they do not let their love overpower them.", - "compatibility_score" : "72%" - }, - { - "Zodiac" : "Scorpio", - "description" : "Though there are a few problems that might test this relationship, these star sign compatibility of two water signs has many features that can help it survive. Pisces and Scorpio are both passionate in their own ways and thus, end up striking the perfect rhythm with each other.If and when they decide to commit to the relationship, they can script a special story of camaraderie and bliss with each other.", - "compatibility_score" : "81%" - }, - { - "Zodiac" : "Capricorn", - "description" : "A relationship between Capricorn and Pisces tells a story about possibilities of inspiration. If someone like Capricorn can be pulled into a crazy love story, exciting and unpredictable, this must be done by Pisces. In return, Capricorn will offer their Pisces partner stability, peace and some rest from their usual emotional tornadoes. There is a fine way in which Capricorn can help Pisces be more realistic and practical, while feeling more cheerful and optimistic themselves.", - "compatibility_score" : "76%" - } - ] - -} diff --git a/bot/resources/valentines/zodiac_explanation.json b/bot/resources/valentines/zodiac_explanation.json deleted file mode 100644 index 33864ea5..00000000 --- a/bot/resources/valentines/zodiac_explanation.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "Aries": { - "start_at": "2020-03-21", - "end_at": "2020-04-19", - "About": "Amazing people born between **March 21** to **April 19**. Aries loves to be number one, so it\u2019s no surprise that these audacious rams are the first sign of the zodiac. Bold and ambitious, Aries dives headfirst into even the most challenging situations.", - "Motto": "***\u201cWhen you know yourself, you're empowered. When you accept yourself, you're invincible.\u201d***", - "Strengths": "Courageous, determined, confident, enthusiastic, optimistic, honest, passionate.", - "Weaknesses": "Impatient, moody, short-tempered, impulsive, aggressive.", - "full_form": "__**A**__ssertive, __**R**__efreshing, __**I**__ndependent, __**E**__nergetic, __**S**__exy", - "url": "https://www.horoscope.com/images-US/signs/profile-aries.png" - }, - "Taurus": { - "start_at": "2020-04-20", - "end_at": "2020-05-20", - "About": "Amazing people born between **April 20** to **May 20**. Taurus is an earth sign represented by the bull. Like their celestial spirit animal, Taureans enjoy relaxing in serene, bucolic environments surrounded by soft sounds, soothing aromas, and succulent flavors", - "Motto": "***\u201cNothing worth having comes easy.\u201d***", - "Strengths": "Reliable, patient, practical, devoted, responsible, stable.", - "Weaknesses": "Stubborn, possessive, uncompromising.", - "full_form": "__**T**__railblazing, __**A**__mbitious, __**U**__nwavering, __**R**__eliable, __**U**__nderstanding, __**S**__table", - "url": "https://www.horoscope.com/images-US/signs/profile-taurus.png" - }, - "Gemini": { - "start_at": "2020-05-21", - "end_at": "2020-06-20", - "About": "Amazing people born between **May 21** to **June 20**. Have you ever been so busy that you wished you could clone yourself just to get everything done? That\u2019s the Gemini experience in a nutshell. Appropriately symbolized by the celestial twins, this air sign was interested in so many pursuits that it had to double itself.", - "Motto": "***\u201cI manifest my reality.\u201d***", - "Strengths": "Gentle, affectionate, curious, adaptable, ability to learn quickly and exchange ideas.", - "Weaknesses": "Nervous, inconsistent, indecisive.", - "full_form": "__**G**__enerous, __**E**__motionally in tune, __**M**__otivated, __**I**__maginative, __**N**__ice, __**I**__ntelligent", - "url": "https://www.horoscope.com/images-US/signs/profile-gemini.png" - }, - "Cancer": { - "start_at": "2020-06-21", - "end_at": "2020-07-22", - "About": "Amazing people born between **June 21 ** to **July 22**. Cancer is a cardinal water sign. Represented by the crab, this crustacean seamlessly weaves between the sea and shore representing Cancer\u2019s ability to exist in both emotional and material realms. Cancers are highly intuitive and their psychic abilities manifest in tangible spaces: For instance, Cancers can effortlessly pick up the energies in a room.", - "Motto": "***\u201cI feel, therefore I am.\u201d***", - "Strengths": "Tenacious, highly imaginative, loyal, emotional, sympathetic, persuasive.", - "Weaknesses": "Moody, pessimistic, suspicious, manipulative, insecuremoody, pessimistic, suspicious, manipulative, insecure.", - "full_form": "__**C**__aring, __**A**__mbitious, __**N**__ourishing, __**C**__reative, __**E**__motionally intelligent, __**R**__esilient", - "url": "https://www.horoscope.com/images-US/signs/profile-cancer.png" - }, - "Leo": { - "start_at": "2020-07-23", - "end_at": "2020-08-22", - "About": "Amazing people born between **July 23** to **August 22**. Roll out the red carpet because Leo has arrived. Leo is represented by the lion and these spirited fire signs are the kings and queens of the celestial jungle. They\u2019re delighted to embrace their royal status: Vivacious, theatrical, and passionate, Leos love to bask in the spotlight and celebrate themselves.", - "Motto": "***\u201cIf you know the way, go the way and show the way\u2014you're a leader.\u201d***", - "Strengths": "Creative, passionate, generous, warm-hearted, cheerful, humorous.", - "Weaknesses": "Arrogant, stubborn, self-centered, lazy, inflexible.", - "full_form": "__**L**__eaders, __**E**__nergetic, __**O**__ptimistic", - "url": "https://www.horoscope.com/images-US/signs/profile-leo.png" - }, - "Virgo": { - "start_at": "2020-08-23", - "end_at": "2020-09-22", - "About": "Amazing people born between **August 23** to **September 22**. Virgo is an earth sign historically represented by the goddess of wheat and agriculture, an association that speaks to Virgo\u2019s deep-rooted presence in the material world. Virgos are logical, practical, and systematic in their approach to life. This earth sign is a perfectionist at heart and isn\u2019t afraid to improve skills through diligent and consistent practice.", - "Motto": "***\u201cMy best can always be better.\u201d***", - "Strengths": "Loyal, analytical, kind, hardworking, practical.", - "Weaknesses": "Shyness, worry, overly critical of self and others, all work and no play.", - "full_form": "__**V**__irtuous, __**I**__ntelligent, __**R**__esponsible, __**G**__enerous, __**O**__ptimistic", - "url": "https://www.horoscope.com/images-US/signs/profile-virgo.png" - }, - "Libra": { - "start_at": "2020-09-23", - "end_at": "2020-10-22", - "About": "Amazing people born between **September 23** to **October 22**. Libra is an air sign represented by the scales (interestingly, the only inanimate object of the zodiac), an association that reflects Libra's fixation on balance and harmony. Libra is obsessed with symmetry and strives to create equilibrium in all areas of life.", - "Motto": "***\u201cNo person is an island.\u201d***", - "Strengths": "Cooperative, diplomatic, gracious, fair-minded, social.", - "Weaknesses": "Indecisive, avoids confrontations, will carry a grudge, self-pity.", - "full_form": "__**L**__oyal, __**I**__nquisitive, __**B**__alanced, __**R**__esponsible, __**A**__ltruistic", - "url": "https://www.horoscope.com/images-US/signs/profile-libra.png" - }, - "Scorpio": { - "start_at": "2020-10-23", - "end_at": "2020-11-21", - "About": "Amazing people born between **October 23** to **November 21**. Scorpio is one of the most misunderstood signs of the zodiac. Because of its incredible passion and power, Scorpio is often mistaken for a fire sign. In fact, Scorpio is a water sign that derives its strength from the psychic, emotional realm.", - "Motto": "***\u201cYou never know what you are capable of until you try.\u201d***", - "Strengths": "Resourceful, brave, passionate, stubborn, a true friend.", - "Weaknesses": "Distrusting, jealous, secretive, violent.", - "full_form": "__**S**__eductive, __**C**__erebral, __**O**__riginal, __**R**__eactive, __**P**__assionate, __**I**__ntuitive, __**O**__utstanding", - "url": "https://www.horoscope.com/images-US/signs/profile-scorpio.png" - }, - "Sagittarius": { - "start_at": "2020-11-22", - "end_at": "2020-12-21", - "About": "Amazing people born between **November 22** to **December 21**. Represented by the archer, Sagittarians are always on a quest for knowledge. The last fire sign of the zodiac, Sagittarius launches its many pursuits like blazing arrows, chasing after geographical, intellectual, and spiritual adventures.", - "Motto": "***\u201cTowering genius disdains a beaten path.\u201d***", - "Strengths": "Generous, idealistic, great sense of humor.", - "Weaknesses": "Promises more than can deliver, very impatient, will say anything no matter how undiplomatic.", - "full_form": "__**S**__eductive, __**A**__dventurous, __**G**__rateful, __**I**__ntelligent, __**T**__railblazing, __**T**__enacious adept, __**A**__dept, __**R**__esponsible, __**I**__dealistic, __**U**__nparalled, __**S**__ophisticated", - "url": "https://www.horoscope.com/images-US/signs/profile-sagittarius.png" - }, - "Capricorn": { - "start_at": "2020-12-22", - "end_at": "2021-01-19", - "About": "Amazing people born between **December 22** to **January 19**. The last earth sign of the zodiac, Capricorn is represented by the sea goat, a mythological creature with the body of a goat and tail of a fish. Accordingly, Capricorns are skilled at navigating both the material and emotional realms.", - "Motto": "***\u201cI can succeed at anything I put my mind to.\u201d***", - "Strengths": "Responsible, disciplined, self-control, good managers.", - "Weaknesses": "Know-it-all, unforgiving, condescending, expecting the worst.", - "full_form": "__**C**__onfident, __**A**__nalytical, __**P**__ractical, __**R**__esponsible, __**I**__ntelligent, __**C**__aring, __**O**__rganized, __**R**__ealistic, __**N**__eat", - "url": "https://www.horoscope.com/images-US/signs/profile-capricorn.png" - }, - "Aquarius": { - "start_at": "2020-01-20", - "end_at": "2020-02-18", - "About": "Amazing people born between **January 20** to **February 18**. Despite the \u201caqua\u201d in its name, Aquarius is actually the last air sign of the zodiac. Aquarius is represented by the water bearer, the mystical healer who bestows water, or life, upon the land. Accordingly, Aquarius is the most humanitarian astrological sign.", - "Motto": "***\u201cThere is no me, there is only we.\u201d***", - "Strengths": "Progressive, original, independent, humanitarian.", - "Weaknesses": "Runs from emotional expression, temperamental, uncompromising, aloof.", - "full_form": "__**A**__nalytical, __**Q**__uirky, __**U**__ncompromising, __**A**__ction-focused, __**R**__espectful, __**I**__ntelligent, __**U**__nique, __**S**__incere", - "url": "https://www.horoscope.com/images-US/signs/profile-aquarius.png" - }, - "Pisces": { - "start_at": "2020-02-19", - "end_at": "2020-03-20", - "About": "Amazing people born between **February 19** to **March 20**. Pisces, a water sign, is the last constellation of the zodiac. It's symbolized by two fish swimming in opposite directions, representing the constant division of Pisces' attention between fantasy and reality. As the final sign, Pisces has absorbed every lesson \u2014 the joys and the pain, the hopes and the fears \u2014 learned by all of the other signs.", - "Motto": "***\u201cI have a lot of love to give, it only takes a little patience and those worth giving it all to.\u201d***", - "Strengths": "Compassionate, artistic, intuitive, gentle, wise, musical.", - "Weaknesses": "Fearful, overly trusting, sad, desire to escape reality, can be a victim or a martyr.", - "full_form": "__**P**__sychic, __**I**__ntelligent, __**S**__urprising, __**C**__reative, __**E**__motionally-driven, __**S**__ensitive", - "url": "https://www.horoscope.com/images-US/signs/profile-pisces.png" - } -} -- cgit v1.2.3