aboutsummaryrefslogtreecommitdiffstats
path: root/bot
diff options
context:
space:
mode:
authorGravatar Rohan <[email protected]>2019-02-18 10:22:52 +0530
committerGravatar Rohan <[email protected]>2019-02-18 10:22:52 +0530
commitbfb0161cf4b92fbeaf49174b8b3e7e356202722f (patch)
tree3ddce8f5c2ab567b4834a5f4ca4978668db13054 /bot
parentfixed linter issues (diff)
I did the following changes :
1.Lovefest invoke the help cmd. 2.Checks whether the user to whome the valentine should be sent has the lovefest role or not.People who have the lovefest role can only receive valentines. 3.Using role.members insted of guild.members. 4.When choosing a random valentine, if there is no one having the lovefest role,then the bot replies saying that there is no one to send a valentine to.This will be required at the initial stages of this command when in production.
Diffstat (limited to 'bot')
-rw-r--r--bot/seasons/valentines/be_my_valentine.py78
1 files changed, 46 insertions, 32 deletions
diff --git a/bot/seasons/valentines/be_my_valentine.py b/bot/seasons/valentines/be_my_valentine.py
index 71df78f2..203c2e36 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 Colours, Lovefest
+from bot.constants import Colours, Lovefest, Client
log = logging.getLogger(__name__)
@@ -19,7 +19,6 @@ class BeMyValentine:
"""
A cog that sends valentines to other users !
"""
- id = Lovefest.role_id
def __init__(self, bot):
self.bot = bot
@@ -35,15 +34,13 @@ class BeMyValentine:
@commands.group(name="lovefest", invoke_without_command=True)
async def lovefest_role(self, ctx):
"""
- By using this command, you can have yourself the lovefest role or remove it.
+ You can have yourself the lovefest role or remove it.
The lovefest role makes you eligible to receive anonymous valentines from other users.
- """
- message = """```
-You can have the lovefest role or get rid of it by using one of the commands shown below:
-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.send(message)
+
+ 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")
@lovefest_role.command(name="sub")
async def add_role(self, ctx):
@@ -81,26 +78,35 @@ You can have the lovefest role or get rid of it by using one of the commands sho
(optional)
example: .bemyvalentine (sends valentine as a poem or a compliment to a random user)
- example: .bemyvalentine @Iceman#6508 p (sends a poem to Iceman)
- example: .bemyvalentine @Iceman#6508 Hey I love you, wanna hang around ? (sends the custom message to Iceman)
+ 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.
"""
- emoji_1, emoji_2 = self.random_emoji()
-
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."
return await ctx.send(msg)
- channel = self.bot.get_channel(Lovefest.channel_id)
+ if user:
+ if Lovefest.role_id not in [role.id for role in user.roles]:
+ message = f"You cannot send a valentine to {user} as he/she does not have the lovefest role!"
+ return await ctx.send(message)
if user == ctx.author:
# Well a user cant valentine himself/herself.
- await ctx.send('Come on dude, you cant send a valentine to yourself :expressionless:')
+ return await ctx.send('Come on dude, you cant send a valentine to yourself :expressionless:')
+
+ emoji_1, emoji_2 = self.random_emoji()
+ Role = discord.utils.get(ctx.guild.roles, id=Lovefest.role_id)
+ channel = self.bot.get_channel(Lovefest.channel_id)
- elif user is None:
+ if user is None:
author = ctx.author
- members = ctx.guild.members
- user = self.random_user(author, members)
+ user = self.random_user(author, Role.members)
+ if user is None:
+ return await ctx.send("There are no users avilable to whome your valentine can be sent.")
+ else:
+ pass
# just making sure that the random does not pick up the same user(ctx.author)
if valentine_type is None:
@@ -144,20 +150,32 @@ You can have the lovefest role or get rid of it by using one of the commands sho
example : .bemyvalentine secret Iceman#6508 Hey I love you, wanna hang around ? (sends the custom message to
Iceman in DM making you anonymous)
"""
- emoji_1, emoji_2 = self.random_emoji()
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."
return await ctx.send(msg)
+ if user:
+ if Lovefest.role_id not in [role.id for role in user.roles]:
+ message = f"You cannot send a valentine to {user} as he/she does not have the lovefest role!"
+ return await ctx.send(message)
+
if user == ctx.author:
# Well a user cant valentine himself/herself.
- await ctx.send('Come on dude, you cant send a valentine to yourself :expressionless:')
+ return await ctx.send('Come on dude, you cant send a valentine to yourself :expressionless:')
+
+ guild = self.bot.get_guild(id=Client.guild)
+ emoji_1, emoji_2 = self.random_emoji()
+ Role = discord.utils.get(guild.roles, id=Lovefest.role_id)
+ print(Role)
if user is None:
author = ctx.author
- members = ctx.guild.members
- user = self.random_user(author, members)
+ user = self.random_user(author, Role.members)
+ if user is None:
+ return await ctx.send("There are no users avilable to whome your valentine can be sent.")
+ else:
+ pass
# just making sure that the random does not pick up the same user(ctx.author)
if valentine_type is None:
@@ -186,15 +204,11 @@ You can have the lovefest role or get rid of it by using one of the commands sho
@staticmethod
def random_user(author, members):
- USER_LOVEFEST = []
- for member in members:
- for role in member.roles:
- if role.id == Lovefest.role_id:
- USER_LOVEFEST.append(member)
-
- USER_LOVEFEST.remove(author)
- user = random.choice(USER_LOVEFEST)
- USER_LOVEFEST.append(author)
+ members.remove(author)
+ if members.__len__() == 0:
+ user = None
+ else:
+ user = random.choice(members)
return user
@staticmethod