Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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)
Ejemplo n.º 6
0
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