aboutsummaryrefslogtreecommitdiffstats
path: root/bot/seasons/valentines
diff options
context:
space:
mode:
Diffstat (limited to 'bot/seasons/valentines')
-rw-r--r--bot/seasons/valentines/__init__.py4
-rw-r--r--bot/seasons/valentines/be_my_valentine.py21
-rw-r--r--bot/seasons/valentines/lovecalculator.py23
-rw-r--r--bot/seasons/valentines/movie_generator.py12
-rw-r--r--bot/seasons/valentines/myvalenstate.py5
-rw-r--r--bot/seasons/valentines/pickuplines.py4
-rw-r--r--bot/seasons/valentines/savethedate.py4
-rw-r--r--bot/seasons/valentines/valentine_zodiac.py11
-rw-r--r--bot/seasons/valentines/whoisvalentine.py5
9 files changed, 30 insertions, 59 deletions
diff --git a/bot/seasons/valentines/__init__.py b/bot/seasons/valentines/__init__.py
index e3e04421..6e5d16f7 100644
--- a/bot/seasons/valentines/__init__.py
+++ b/bot/seasons/valentines/__init__.py
@@ -17,4 +17,6 @@ class Valentines(SeasonBase):
end_date = "01/03"
colour = Colours.pink
- icon = "/logos/logo_seasonal/valentines/loved_up.png"
+ icon = (
+ "/logos/logo_seasonal/valentines/loved_up.png",
+ )
diff --git a/bot/seasons/valentines/be_my_valentine.py b/bot/seasons/valentines/be_my_valentine.py
index 55c4adb1..ac140896 100644
--- a/bot/seasons/valentines/be_my_valentine.py
+++ b/bot/seasons/valentines/be_my_valentine.py
@@ -8,7 +8,7 @@ import discord
from discord.ext import commands
from discord.ext.commands.cooldowns import BucketType
-from bot.constants import Client, Colours, Lovefest
+from bot.constants import Channels, Client, Colours, Lovefest
log = logging.getLogger(__name__)
@@ -25,8 +25,7 @@ class BeMyValentine(commands.Cog):
@staticmethod
def load_json():
"""Load Valentines messages from the static resources."""
-
- p = Path('bot', 'resources', 'valentines', 'bemyvalentine_valentines.json')
+ p = Path("bot/resources/valentines/bemyvalentine_valentines.json")
with p.open() as json_data:
valentines = load(json_data)
return valentines
@@ -41,13 +40,11 @@ class BeMyValentine(commands.Cog):
1) use the command \".lovefest sub\" to get the lovefest role.
2) use the command \".lovefest unsub\" to get rid of the lovefest role.
"""
-
- await ctx.invoke(self.bot.get_command("help"), "lovefest")
+ await ctx.send_help(ctx.command)
@lovefest_role.command(name="sub")
async def add_role(self, ctx):
"""Adds the lovefest role."""
-
user = ctx.author
role = discord.utils.get(ctx.guild.roles, id=Lovefest.role_id)
if Lovefest.role_id not in [role.id for role in ctx.message.author.roles]:
@@ -59,7 +56,6 @@ class BeMyValentine(commands.Cog):
@lovefest_role.command(name="unsub")
async def remove_role(self, ctx):
"""Removes the lovefest role."""
-
user = ctx.author
role = discord.utils.get(ctx.guild.roles, id=Lovefest.role_id)
if Lovefest.role_id not in [role.id for role in ctx.message.author.roles]:
@@ -82,7 +78,6 @@ class BeMyValentine(commands.Cog):
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
msg = "You are supposed to use this command in the server."
@@ -99,7 +94,7 @@ class BeMyValentine(commands.Cog):
emoji_1, emoji_2 = self.random_emoji()
lovefest_role = discord.utils.get(ctx.guild.roles, id=Lovefest.role_id)
- channel = self.bot.get_channel(Lovefest.channel_id)
+ channel = self.bot.get_channel(Channels.seasonalbot_chat)
valentine, title = self.valentine_check(valentine_type)
if user is None:
@@ -132,7 +127,6 @@ class BeMyValentine(commands.Cog):
example : .bemyvalentine secret Iceman#6508 Hey I love you, wanna hang around ? (sends the custom message to
Iceman in DM making you anonymous)
"""
-
if ctx.guild is not None:
# This command is only DM specific
msg = "You are not supposed to use this command in the server, DM the command to the bot."
@@ -172,7 +166,6 @@ class BeMyValentine(commands.Cog):
def valentine_check(self, valentine_type):
"""Return the appropriate Valentine type & title based on the invoking user's input."""
-
if valentine_type is None:
valentine, title = self.random_valentine()
@@ -200,7 +193,6 @@ class BeMyValentine(commands.Cog):
:param author: member who invoked the command
:param members: list of discord.Member objects
"""
-
if author in members:
members.remove(author)
@@ -209,14 +201,12 @@ class BeMyValentine(commands.Cog):
@staticmethod
def random_emoji():
"""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):
"""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])
@@ -228,19 +218,16 @@ class BeMyValentine(commands.Cog):
def valentine_poem(self):
"""Grabs a random poem."""
-
valentine_poem = random.choice(self.valentines['valentine_poems'])
return valentine_poem
def valentine_compliment(self):
"""Grabs a random compliment."""
-
valentine_compliment = random.choice(self.valentines['valentine_compliments'])
return valentine_compliment
def setup(bot):
"""Be my Valentine Cog load."""
-
bot.add_cog(BeMyValentine(bot))
log.info("BeMyValentine cog loaded")
diff --git a/bot/seasons/valentines/lovecalculator.py b/bot/seasons/valentines/lovecalculator.py
index cd684f9d..1d5a028d 100644
--- a/bot/seasons/valentines/lovecalculator.py
+++ b/bot/seasons/valentines/lovecalculator.py
@@ -15,7 +15,7 @@ from bot.constants import Roles
log = logging.getLogger(__name__)
-with Path('bot', 'resources', 'valentines', 'love_matches.json').open() as file:
+with Path("bot/resources/valentines/love_matches.json").open() as file:
LOVE_DATA = json.load(file)
LOVE_DATA = sorted((int(key), value) for key, value in LOVE_DATA.items())
@@ -49,41 +49,39 @@ class LoveCalculator(Cog):
If only one argument is provided, the subject will become one of the helpers at random.
"""
-
if whom is None:
staff = ctx.guild.get_role(Roles.helpers).members
whom = random.choice(staff)
def normalize(arg):
if isinstance(arg, Member):
- # if we are given a member, return name#discrim without any extra changes
+ # If we are given a member, return name#discrim without any extra changes
arg = str(arg)
else:
- # otherwise normalise case and remove any leading/trailing whitespace
+ # Otherwise normalise case and remove any leading/trailing whitespace
arg = arg.strip().title()
- # this has to be done manually to be applied to usernames
+ # This has to be done manually to be applied to usernames
return clean_content(escape_markdown=True).convert(ctx, arg)
who, whom = [await normalize(arg) for arg in (who, whom)]
- # make sure user didn't provide something silly such as 10 spaces
+ # Make sure user didn't provide something silly such as 10 spaces
if not (who and whom):
raise BadArgument('Arguments be non-empty strings.')
- # hash inputs to guarantee consistent results (hashing algorithm choice arbitrary)
+ # Hash inputs to guarantee consistent results (hashing algorithm choice arbitrary)
#
- # hashlib is used over the builtin hash() function
- # to guarantee same result over multiple runtimes
+ # 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]
+ # 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
+ # 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'])
@@ -102,6 +100,5 @@ class LoveCalculator(Cog):
def setup(bot):
"""Love calculator Cog load."""
-
bot.add_cog(LoveCalculator(bot))
log.info("LoveCalculator cog loaded")
diff --git a/bot/seasons/valentines/movie_generator.py b/bot/seasons/valentines/movie_generator.py
index a09a563f..fa5f236a 100644
--- a/bot/seasons/valentines/movie_generator.py
+++ b/bot/seasons/valentines/movie_generator.py
@@ -12,7 +12,7 @@ log = logging.getLogger(__name__)
class RomanceMovieFinder(commands.Cog):
- """A cog that returns a random romance movie suggestion to a user."""
+ """A Cog that returns a random romance movie suggestion to a user."""
def __init__(self, bot):
self.bot = bot
@@ -20,8 +20,7 @@ class RomanceMovieFinder(commands.Cog):
@commands.command(name="romancemovie")
async def romance_movie(self, ctx):
"""Randomly selects a romance movie and displays information about it."""
-
- # selecting a random int to parse it to the page parameter
+ # Selecting a random int to parse it to the page parameter
random_page = random.randint(0, 20)
# TMDB api params
params = {
@@ -33,13 +32,13 @@ class RomanceMovieFinder(commands.Cog):
"page": random_page,
"with_genres": "10749"
}
- # the api request url
+ # The api request url
request_url = "https://api.themoviedb.org/3/discover/movie?" + parse.urlencode(params)
async with self.bot.http_session.get(request_url) as resp:
- # trying to load the json file returned from the api
+ # 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
+ # Selecting random result from results object in the json file
selected_movie = random.choice(data["results"])
embed = discord.Embed(
@@ -60,6 +59,5 @@ class RomanceMovieFinder(commands.Cog):
def setup(bot):
"""Romance movie Cog load."""
-
bot.add_cog(RomanceMovieFinder(bot))
log.info("RomanceMovieFinder cog loaded")
diff --git a/bot/seasons/valentines/myvalenstate.py b/bot/seasons/valentines/myvalenstate.py
index 344f52f6..fad202e3 100644
--- a/bot/seasons/valentines/myvalenstate.py
+++ b/bot/seasons/valentines/myvalenstate.py
@@ -11,7 +11,7 @@ from bot.constants import Colours
log = logging.getLogger(__name__)
-with open(Path('bot', 'resources', 'valentines', 'valenstates.json'), 'r') as file:
+with open(Path("bot/resources/valentines/valenstates.json"), "r") as file:
STATES = json.load(file)
@@ -23,7 +23,6 @@ class MyValenstate(commands.Cog):
def levenshtein(self, source, goal):
"""Calculates the Levenshtein Distance between source and goal."""
-
if len(source) < len(goal):
return self.levenshtein(goal, source)
if len(source) == 0:
@@ -45,7 +44,6 @@ class MyValenstate(commands.Cog):
@commands.command()
async def myvalenstate(self, ctx, *, name=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.message.author.name.lower().replace(' ', '')
@@ -85,6 +83,5 @@ class MyValenstate(commands.Cog):
def setup(bot):
"""Valenstate Cog load."""
-
bot.add_cog(MyValenstate(bot))
log.info("MyValenstate cog loaded")
diff --git a/bot/seasons/valentines/pickuplines.py b/bot/seasons/valentines/pickuplines.py
index ad75c93f..46772197 100644
--- a/bot/seasons/valentines/pickuplines.py
+++ b/bot/seasons/valentines/pickuplines.py
@@ -10,7 +10,7 @@ from bot.constants import Colours
log = logging.getLogger(__name__)
-with open(Path('bot', 'resources', 'valentines', 'pickup_lines.json'), 'r', encoding="utf8") as f:
+with open(Path("bot/resources/valentines/pickup_lines.json"), "r", encoding="utf8") as f:
pickup_lines = load(f)
@@ -27,7 +27,6 @@ class PickupLine(commands.Cog):
Note that most of them are very cheesy.
"""
-
random_line = random.choice(pickup_lines['lines'])
embed = discord.Embed(
title=':cheese: Your pickup line :cheese:',
@@ -42,6 +41,5 @@ class PickupLine(commands.Cog):
def setup(bot):
"""Pickup lines Cog load."""
-
bot.add_cog(PickupLine(bot))
log.info('PickupLine cog loaded')
diff --git a/bot/seasons/valentines/savethedate.py b/bot/seasons/valentines/savethedate.py
index 281625a4..34264183 100644
--- a/bot/seasons/valentines/savethedate.py
+++ b/bot/seasons/valentines/savethedate.py
@@ -12,7 +12,7 @@ log = logging.getLogger(__name__)
HEART_EMOJIS = [":heart:", ":gift_heart:", ":revolving_hearts:", ":sparkling_heart:", ":two_hearts:"]
-with open(Path('bot', 'resources', 'valentines', 'date_ideas.json'), 'r', encoding="utf8") as f:
+with open(Path("bot/resources/valentines/date_ideas.json"), "r", encoding="utf8") as f:
VALENTINES_DATES = load(f)
@@ -25,7 +25,6 @@ class SaveTheDate(commands.Cog):
@commands.command()
async def savethedate(self, ctx):
"""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)
@@ -39,6 +38,5 @@ class SaveTheDate(commands.Cog):
def setup(bot):
"""Save the date Cog Load."""
-
bot.add_cog(SaveTheDate(bot))
log.info("SaveTheDate cog loaded")
diff --git a/bot/seasons/valentines/valentine_zodiac.py b/bot/seasons/valentines/valentine_zodiac.py
index 1700260e..fa849cb2 100644
--- a/bot/seasons/valentines/valentine_zodiac.py
+++ b/bot/seasons/valentines/valentine_zodiac.py
@@ -15,7 +15,7 @@ HEART_EMOJIS = [":heart:", ":gift_heart:", ":revolving_hearts:", ":sparkling_hea
class ValentineZodiac(commands.Cog):
- """A cog that returns a counter compatible zodiac sign to the given user's zodiac sign."""
+ """A Cog that returns a counter compatible zodiac sign to the given user's zodiac sign."""
def __init__(self, bot):
self.bot = bot
@@ -23,9 +23,8 @@ class ValentineZodiac(commands.Cog):
@staticmethod
def load_json():
- """Load Zodiac compatibility from static JSON resource."""
-
- p = Path('bot', 'resources', 'valentines', 'zodiac_compatibility.json')
+ """Load zodiac compatibility from static JSON resource."""
+ p = Path("bot/resources/valentines/zodiac_compatibility.json")
with p.open() as json_data:
zodiacs = load(json_data)
return zodiacs
@@ -33,7 +32,6 @@ class ValentineZodiac(commands.Cog):
@commands.command(name="partnerzodiac")
async def counter_zodiac(self, ctx, zodiac_sign):
"""Provides a counter compatible zodiac sign to the given user's zodiac sign."""
-
try:
compatible_zodiac = random.choice(self.zodiacs[zodiac_sign.lower()])
except KeyError:
@@ -55,7 +53,6 @@ class ValentineZodiac(commands.Cog):
def setup(bot):
- """Valentine Zodiac Cog load."""
-
+ """Valentine zodiac Cog load."""
bot.add_cog(ValentineZodiac(bot))
log.info("ValentineZodiac cog loaded")
diff --git a/bot/seasons/valentines/whoisvalentine.py b/bot/seasons/valentines/whoisvalentine.py
index 96d97e22..d73ccd9b 100644
--- a/bot/seasons/valentines/whoisvalentine.py
+++ b/bot/seasons/valentines/whoisvalentine.py
@@ -10,7 +10,7 @@ from bot.constants import Colours
log = logging.getLogger(__name__)
-with open(Path("bot", "resources", "valentines", "valentine_facts.json"), "r") as file:
+with open(Path("bot/resources/valentines/valentine_facts.json"), "r") as file:
FACTS = json.load(file)
@@ -23,7 +23,6 @@ class ValentineFacts(commands.Cog):
@commands.command(aliases=('whoisvalentine', 'saint_valentine'))
async def who_is_valentine(self, ctx):
"""Displays info about Saint Valentine."""
-
embed = discord.Embed(
title="Who is Saint Valentine?",
description=FACTS['whois'],
@@ -39,7 +38,6 @@ class ValentineFacts(commands.Cog):
@commands.command()
async def valentine_fact(self, ctx):
"""Shows a random fact about Valentine's Day."""
-
embed = discord.Embed(
title=choice(FACTS['titles']),
description=choice(FACTS['text']),
@@ -51,6 +49,5 @@ class ValentineFacts(commands.Cog):
def setup(bot):
"""Who is Valentine Cog load."""
-
bot.add_cog(ValentineFacts(bot))
log.info("ValentineFacts cog loaded")