async def lockdown(ctx: discord.message, client: discord.client): if not (_checkrole.author_has_role( ctx, _mongoFunctions.get_admin_role(ctx.guild.id)) or _util.author_is_bot_owner(ctx)): replyEmbed = _embedMessage.create("Lockdown Reply", "Invalid Permissions", "red") await ctx.channel.send(embed=replyEmbed) return args = parse_message(ctx.content) if len(args) == 2: try: role = get(ctx.guild.roles, name=args[1]) except: replyEmbed = _embedMessage.create("Lockdown reply", "Invalid Role", "red") await ctx.channel.send(embed=replyEmbed) return replyEmbed = _embedMessage.create( "Lockdown Reply", "Channel Locked for {}".format(args[1]), "green") await ctx.channel.send(embed=replyEmbed) await ctx.channel.set_permissions(role, send_messages=False) else: replyEmbed = _embedMessage.create("Lockdown reply", "Error 404: Something went wrong", "red") await ctx.channel.send(embed=replyEmbed)
async def force_birthdays(ctx, client): if not (_checkrole.author_has_role( ctx, _mongoFunctions.get_admin_role(ctx.guild.id)) or _util.author_is_bot_owner(ctx)): replyEmbed = _embedMessage.create("ForceBirthdays Reply", "Invalid Permissions", "red") await ctx.channel.send(embed=replyEmbed) return await _birthdayMessage.send_birthday_message( client, ctx.guild.id, _mongoFunctions.get_bedi_bot_channel_id(ctx.guild.id)) await ctx.channel.send(embed=_embedMessage.create( "ForceBirthdays Reply", "Birthdays have been Forced", "blue")) return
async def say(ctx, client): if not (_checkrole.author_has_role( ctx, _mongoFunctions.get_admin_role(ctx.guild.id)) or _util.author_is_bot_owner(ctx)): replyEmbed = _embedMessage.create("Say Reply", "Invalid Permissions", "red") await ctx.channel.send(embed=replyEmbed) return global target_channel args = _util.parse_message(ctx.content) if len(args) != 4: await ctx.channel.send(embed=_embedMessage.create( "Say Reply", "Invalid Syntax! You need three arguments for this function!", "red")) return title = args[1] content = args[2] channel_mention = args[3] channels = client.get_all_channels() for channel in channels: if channel.mention == channel_mention: target_channel = channel break if target_channel is None: await ctx.channel.send(embed=_embedMessage.create( "Say Reply", "Channel not Found!", "red")) return await ctx.delete() await target_channel.send( embed=_embedMessage.create(title, content, "green")) return
async def unlock(ctx: discord.message, client: discord.client): if not (_checkrole.author_has_role( ctx, _mongoFunctions.get_admin_role(ctx.guild.id)) or _util.author_is_bot_owner(ctx)): replyEmbed = _embedMessage.create("Unlock Reply", "Invalid Permissions", "red") await ctx.channel.send(embed=replyEmbed) return args = parse_message(ctx.content) try: role = get(ctx.guild.roles, name=args[1]) except: replyEmbed = _embedMessage.create("Unlock reply", "Invalid Role", "red") await ctx.channel.send(embed=replyEmbed) replyEmbed = _embedMessage.create( "Unlock Reply", "Channel Unlocked for {}".format(args[1]), "green") await ctx.channel.send(embed=replyEmbed) await ctx.channel.set_permissions(role, send_messages=True)
async def set_bedi_bot_channel(ctx, client): if not (_checkrole.author_has_role(ctx, _mongoFunctions.get_admin_role(ctx.guild.id)) or _util.author_is_bot_owner(ctx)): replyEmbed = _embedMessage.create("SetBediBotChannel Reply", "Invalid Permissions", "red") await ctx.channel.send(embed = replyEmbed) return await ctx.channel.purge(limit = None) await ctx.channel.send(embed = _embedMessage.create("SetBediBotChannel Reply", "The channel has been set!", "blue")) dueDateEmbeds = {} dueDateMessages = {} for stream in _mongoFunctions.get_list_of_streams(ctx.guild.id): dueDateEmbeds[stream] = _embedMessage.create("Stream {0} Due Dates Message".format(stream), "Temporary Message", "green") dueDateMessages[stream] = await ctx.channel.send(embed = dueDateEmbeds[stream]) await dueDateMessages[stream].pin() _mongoFunctions.set_due_date_message_id(ctx.guild.id, stream, dueDateMessages[stream].id) _mongoFunctions.set_bedi_bot_channel_id(ctx.guild.id, ctx.channel.id) await _dueDateMessage.edit_due_date_message(client) await ctx.channel.purge(limit = None, check = lambda msg: not msg.pinned)
async def remove_due_date(ctx, client): global course, due_date_type, stream, time, title, year, month, day wait_timeout = 60.0 sleep_time = 2 if not (_checkrole.author_has_role( ctx, _mongoFunctions.get_admin_role(ctx.guild.id)) or _util.author_is_bot_owner(ctx)): await ctx.channel.send(embed=_embedMessage.create( "RemoveDueDate Reply", "Invalid Permissions", "red")) return def check(message): return message.author == ctx.author and message.channel == ctx.channel response_message = await ctx.channel.send(embed=_embedMessage.create( "RemoveDueDate Reply", "What course is this due date for?\nOptions: " + ', '.join(_mongoFunctions.get_list_of_courses(ctx.guild.id)), "blue")) while True: await response_message.edit(embed=_embedMessage.create( "RemoveDueDate Reply", "What course is this due date for?\nOptions: " + ', '.join(_mongoFunctions.get_list_of_courses(ctx.guild.id)), "blue")) try: course_message = await client.wait_for('message', timeout=wait_timeout, check=check) except asyncio.TimeoutError: await response_message.edit(embed=_embedMessage.create( "RemoveDueDate Reply", "You took too long to respond.", "red")) return else: course = course_message.content if course not in _mongoFunctions.get_list_of_courses(ctx.guild.id): await response_message.edit(embed=_embedMessage.create( "RemoveDueDate Reply", "The course name is invalid!", "red")) await asyncio.sleep(sleep_time) else: break while True: await response_message.edit(embed=_embedMessage.create( "RemoveDueDate Reply", "What is the due date type?\nOptions: " + ', '.join(_mongoFunctions.get_list_of_due_date_types( ctx.guild.id)), "blue")) try: due_date_type_message = await client.wait_for('message', timeout=wait_timeout, check=check) except asyncio.TimeoutError: await response_message.edit(embed=_embedMessage.create( "RemoveDueDate Reply", "You took too long to respond.", "red")) return else: due_date_type = due_date_type_message.content if due_date_type not in _mongoFunctions.get_list_of_due_date_types( ctx.guild.id): await response_message.edit(embed=_embedMessage.create( "RemoveDueDate Reply", "The due date type is invalid!", "red")) await asyncio.sleep(sleep_time) else: break if len(_mongoFunctions.get_list_of_streams(ctx.guild.id)) == 1: stream = _mongoFunctions.get_list_of_streams(ctx.guild.id)[0] else: while True: await response_message.edit(embed=_embedMessage.create( "RemoveDueDate Reply", "Which stream is this for?\nOptions: " + ', '.join(_mongoFunctions.get_list_of_streams(ctx.guild.id)), "blue")) try: stream_message = await client.wait_for('message', timeout=wait_timeout, check=check) except asyncio.TimeoutError: await response_message.edit(embed=_embedMessage.create( "RemoveDueDate Reply", "You took too long to respond.", "red")) return else: stream = stream_message.content if stream not in _mongoFunctions.get_list_of_streams( ctx.guild.id): await response_message.edit(embed=_embedMessage.create( "RemoveDueDate Reply", "The stream is invalid!", "red") ) await asyncio.sleep(sleep_time) else: break while True: await response_message.edit(embed=_embedMessage.create( "RemoveDueDate Reply", "What is the title?", "blue")) try: title_message = await client.wait_for('message', timeout=wait_timeout, check=check) except asyncio.TimeoutError: await response_message.edit(embed=_embedMessage.create( "RemoveDueDate Reply", "You took too long to respond.", "red")) return else: title = title_message.content break while True: await response_message.edit(embed=_embedMessage.create( "RemoveDueDate Reply", "What is the date? (YYYY MM DD)", "blue")) try: date_message = await client.wait_for('message', timeout=wait_timeout, check=check) except asyncio.TimeoutError: await response_message.edit(embed=_embedMessage.create( "RemoveDueDate Reply", "You took too long to respond.", "red")) return else: global error_check date = date_message.content.split(" ") if len(date) == 3: year = date[0] month = date[1] day = date[2] error_check = _dateFunctions.check_for_errors_in_date( year, month, day) else: error_check = 1 if error_check == 1: await response_message.edit(embed=_embedMessage.create( "RemoveDueDate Reply", "Invalid syntax. Make sure it is in the format YYYY MM DD", "red")) await asyncio.sleep(sleep_time) elif error_check == 2: await response_message.edit(embed=_embedMessage.create( "RemoveDueDate Reply", "The date is invalid, please ensure that this is a valid date.", "red")) await asyncio.sleep(sleep_time) else: date_object = datetime.date(int(year), int(month), int(day)) if date_object < datetime.date.today(): await response_message.edit(embed=_embedMessage.create( "RemoveDueDate Reply", "That due date has already passed.", "red")) await asyncio.sleep(sleep_time) else: break while True: await response_message.edit(embed=_embedMessage.create( "RemoveDueDate Reply", "What time is the due date? (HH:MM)\nEnter 'None' if there is no time.", "blue")) try: time_message = await client.wait_for('message', timeout=wait_timeout, check=check) except asyncio.TimeoutError: await response_message.edit(embed=_embedMessage.create( "AddDueDate Reply", "You took too long to respond.", "red")) return else: time = time_message.content match = re.match( '^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$', time) # Using regex to check if time format is valid if time == "None": break elif not match: await response_message.edit(embed=_embedMessage.create( "RemoveDueDate Reply", "Invalid syntax. Make sure it is in the format HH:MM or 'None'", "red")) await asyncio.sleep(sleep_time) else: time = time.split(':') time_object = datetime.datetime(int(year), int(month), int(day), int(time[0]), int(time[1])) if time_object < datetime.datetime.now(): await response_message.edit(embed=_embedMessage.create( "RemoveDueDate Reply", "That due date has already passed.", "red")) await asyncio.sleep(sleep_time) else: break if time == "None": if not _mongoFunctions.does_assignment_exist_already( ctx.guild.id, course, due_date_type, title, stream, datetime.datetime(int(year), int(month), int(day)), False): await response_message.edit(embed=_embedMessage.create( "RemoveDueDate Reply", "Your due date does not exist!", "red")) return _mongoFunctions.remove_due_date_from_upcoming_due_dates( ctx.guild.id, course, due_date_type, title, stream, datetime.datetime(int(year), int(month), int(day)), False) await response_message.edit(embed=_embedMessage.create( "RemoveDueDate Reply", "Your due date has been removed!", "blue")) else: if type(time) is str: time = time.split(':') if not _mongoFunctions.does_assignment_exist_already( ctx.guild.id, course, due_date_type, title, stream, datetime.datetime(int(year), int(month), int(day), int( time[0]), int(time[1])), True): await response_message.edit(embed=_embedMessage.create( "RemoveDueDate Reply", "Your due date does not exist!", "red")) return _mongoFunctions.remove_due_date_from_upcoming_due_dates( ctx.guild.id, course, due_date_type, title, stream, datetime.datetime(int(year), int(month), int(day), int(time[0]), int(time[1])), True) await response_message.edit(embed=_embedMessage.create( "RemoveDueDate Reply", "Your due date has been removed!", "blue")) await _dueDateMessage.edit_due_date_message(client) return