async def next_student(ctx) -> str:
    queue = get_queue(ctx.guild.id)

    if len(queue) == 0:
        return f'The queue is empty.'

    next_student_instance = queue[0]

    if next_student_instance is None:
        return f'There are no more students in the queue.'

    next_member = update_member(ctx, next_student_instance)

    message = f'The next student in the queue is {next_member.mention}, '

    user_moved = await pull_to_voice(ctx, next_member)
    if user_moved[0] is True:
        message = message + 'They have been moved to your help voice channel. '
    else:
        return user_moved[1]

    if await assign_role(ctx, next_member):
        message = message + 'They have been assigned the role to view this channel. '

    if message[-2:-1] == ',':
        message = message + f'{ctx.author.mention} can now help you in {ctx.channel.mention}.'

    queue.pop(0)
    await ctx.channel.send(f'{next_member.mention}, {ctx.author.mention} can now help you in {ctx.channel.mention}')
    return message
async def remove_from_queue(ctx) -> str:
    queue = get_queue(ctx.guild.id)
    user = ctx.author

    if user in queue:
        queue.remove(user)
        return f'You have been removed from the queue.'
    else:
        return f'You are not in the queue.'
async def my_position_in_queue(ctx, button_ctx) -> None:
    queue = get_queue(ctx.guild.id)
    user = ctx.author

    if user in queue:
        await button_ctx.edit_origin(
            content=f'You are in position `{queue.index(user)}`.',
            components=[])
    else:
        await button_ctx.edit_origin(content=f'You are not in the queue.',
                                     components=[])
async def add_to_queue(ctx) -> str:
    queue = get_queue(ctx.guild.id)

    if ctx.author.voice is None:
        return f'You are not in a voice channel.'

    if ctx.author not in queue:
        _QUEUE[ctx.guild.id].append(ctx.author)
        return f'You have been added to the queue.'
    else:
        return f'You are already in the queue.'
async def display_queue(ctx, button_ctx) -> None:
    queue = get_queue(ctx.guild.id)

    if queue is None or len(queue) == 0:
        await button_ctx.edit_origin(
            content=f'No students in the Queue.',
            components=[]
        )
    else:
        temp = ''
        for list_item in queue:
            temp += f'° {str(list_item.name)}\n'

        await button_ctx.edit_origin(
            content=f'`{len(queue)}` students in the queue:\n{temp}',
            components=[]
        )
async def clear_queue(ctx, button_ctx) -> None:
    (get_queue(ctx.guild.id)).clear()
    await button_ctx.edit_origin(
        content=f'The queue has been cleared.',
        components=[]
    )