Example #1
0
def message_edit(token, message_id, message):
    '''Edit a message'''
    if not Token.isValid(token):
        raise AccessError("Not a valid token!")

    data = db.load_DB()
    message_id = int(message_id)
    if message_id not in db.get_all_messages(data):
        raise ValueError('Message doesnt exist')

    u_id = db.get_from_token('u_id', token, data)
    cur_message = [msg for msg in data['messages'] if msg['message_id'] == message_id][0]
    channel = [channel for channel in data['channels'] if channel['channel_id'] ==\
     cur_message['in_channel']][0]

    if u_id != cur_message['u_id'] and db.get_from_token('permission_id', token, data) == 3 and\
     u_id not in channel['owner_members']:
        raise AccessError('The authorised user is an admin or owner of this channel or the slackr')

    if message == "":
        data['messages'].remove(cur_message)

    else:
        cur_message['message'] = message
        data['messages'].remove(cur_message)
        data['messages'].append(cur_message)

    db.save_DB(data)
    return dumps({})
Example #2
0
def message_pin(token, message_id):
    '''Pin existing message in a channel'''
    if not Token.isValid(token):
        raise AccessError("Not a valid token!")

    message_id = int(message_id)

    database = db.load_DB()
    permission_id = db.get_from_token('permission_id', token,
                                      database)  #true or false
    #loop through database for message ID
    if message_id not in db.get_all_messages(database):
        raise ValueError('message_id is not a valid message')
    #check admin of user
    if permission_id not in [1, 2]:
        raise ValueError('The authorised user is not an admin')

    #check if message_id is pinned
    for message in database['messages']:
        if message['message_id'] == message_id:
            if message['is_pinned']:
                raise ValueError('Message is already pinned')
            message['is_pinned'] = True

    db.save_DB(database)
    return dumps({})
Example #3
0
def message_unreact(token, message_id, react_id):
    '''Remove react from message'''
    if not Token.isValid(token):
        raise AccessError("Not a valid token!")

    if not message_id:
        raise ValueError('Invalid message_id')

    if react_id != '1':
        raise ValueError('Invalid react id')

    message_id = int(message_id)
    react_id = int(react_id)

    data = db.load_DB()
    u_id = db.get_from_token('u_id', token, data)

    if message_id not in db.get_all_messages(data):
        raise ValueError('Invalid message_id')

    reactusers = db.get_react_users(data, u_id, message_id, react_id, False)
    if u_id not in reactusers:
        raise AccessError('Message with ID message_id does not contain\
 an active React with ID react_id')

    cur_message = [
        msg for msg in data['messages'] if msg['message_id'] == message_id
    ][0]
    for react in cur_message['reacts']:
        if react['react_id'] == react_id:
            react['u_ids'].remove(u_id)
    db.save_DB(data)
    return dumps({})
Example #4
0
def message_react(token, message_id, react_id):
    '''Join existing user to a new channel'''
    if not Token.isValid(token):
        raise AccessError("Not a valid token!")

    if not message_id:
        raise ValueError('Invalid message_id')

    if react_id != "1":
        raise ValueError('Invalid react id')

    message_id = int(message_id)
    react_id = int(react_id)
    data = db.load_DB()
    u_id = db.get_from_token('u_id', token, data)

    if message_id not in db.get_all_messages(data):
        raise ValueError('Invalid message_id')

    if u_id in db.get_react_users(data, u_id, message_id, react_id, False):
        raise AccessError('Message with ID message_id already\
 contains an active React with ID react_id')

    cur_message = [
        msg for msg in data['messages'] if msg['message_id'] == message_id
    ][0]
    channel = [channel for channel in data['channels'] if channel['channel_id'] ==\
     cur_message['in_channel']][0]

    valid = False
    for react in cur_message['reacts']:
        if 'react_id' in react.keys():
            if react['react_id'] == react_id:
                react['u_ids'].append(u_id)
                valid = True

    if not valid:
        cur_message['reacts'].append({'react_id': react_id, 'u_ids': \
        db.get_react_users(data, u_id, message_id, react_id)})
    db.save_DB(data)
    return dumps({})
Example #5
0
def message_remove(token, message_id):
    '''Remove message from channel'''
    if not Token.isValid(token):
        raise AccessError("Not a valid token!")

    message_id = int(message_id)
    data = db.load_DB()
    u_id = db.get_from_token('u_id', token, data)

    if message_id not in db.get_all_messages(data):
        raise ValueError('Message (based on ID) no longer exists')

    message = [msg for msg in data['messages'] if msg['message_id'] == message_id][0]
    channel = [channel for channel in data['channels'] if channel['channel_id'] ==\
     message['in_channel']][0]

    if u_id != message['u_id'] and db.get_from_token('permission_id', token, data) == 3\
     and u_id not in channel['owner_members']:
        raise AccessError('The authorised user is an admin or owner of this channel or the slackr')

    data['messages'].remove(message)
    db.save_DB(data)
    return dumps({})
Example #6
0
async def about(ctx, *, channel):
    messages = db.get_all_messages(all_messages_collection, ctx.guild.id,
                                   channel)
    summary = tfidf_summarizer.run_summarization(messages)

    Embed = discord.Embed(
        title=("Newsletter from the " + channel + " channel in the " +
               ctx.guild.name + " server"),
        description=
        "*The summary is sent in multiple paragraphs due to size constrictions when sending it all in one paragraph*"
    )

    if len(summary) < 1024:
        Embed.add_field(name='Summary', value=summary, inline=False)
    else:
        list_summary = summary_split(summary, [])
        for i in range(len(list_summary)):
            para_number = i + 1
            Embed.add_field(name="Paragraph {}".format(para_number),
                            value=list_summary[i],
                            inline=False)

    await ctx.author.send(embed=Embed)