Ejemplo n.º 1
0
def get_channel_messages(guild_id, channel_id, after_snowflake=None):
    if not after_snowflake:
        q = db.session.query(Messages).filter(Messages.channel_id == channel_id).order_by(Messages.timestamp.desc()).limit(50)
    else:
        q = db.session.query(Messages).filter(cast(Messages.channel_id, db.BigInteger) == int(channel_id)).filter(cast(Messages.message_id, db.BigInteger) > after_snowflake).order_by(Messages.timestamp.desc()).limit(50)
    msgs = []
    snowflakes = []
    for x in q:
        if x.message_id in snowflakes:
            continue
        snowflakes.append(x.message_id)
        message = {
            "attachments": json.loads(x.attachments),
            "timestamp": x.timestamp,
            "id": x.message_id,
            "edited_timestamp": x.edited_timestamp,
            "author": json.loads(x.author),
            "content": x.content,
            "channel_id": x.channel_id,
            "mentions": json.loads(x.mentions)
        }
        member = get_guild_member(guild_id, message["author"]["id"])
        message["author"]["nickname"] = None
        if member:
            message["author"]["nickname"] = member.nickname
        for mention in message["mentions"]:
            author = get_guild_member(guild_id, mention["id"])
            mention["nickname"] = None
            if author:
                mention["nickname"] = author.nickname
        msgs.append(message)
    return msgs
Ejemplo n.º 2
0
def get_channel_messages(guild_id, channel_id, after_snowflake=None):
    if not after_snowflake:
        q = db.session.query(Messages).filter(Messages.channel_id == channel_id).order_by(Messages.timestamp.desc()).limit(50)
    else:
        q = db.session.query(Messages).filter(Messages.channel_id == channel_id).filter(Messages.message_id > after_snowflake).order_by(Messages.timestamp.desc()).limit(50)
    msgs = []
    snowflakes = []
    guild_members = {}
    for x in q:
        if x.message_id in snowflakes:
            continue
        snowflakes.append(x.message_id)
        embeds = x.embeds
        if not embeds:
            embeds = "[]"
        message = {
            "attachments": json.loads(x.attachments),
            "timestamp": x.timestamp,
            "id": str(x.message_id),
            "edited_timestamp": x.edited_timestamp,
            "author": json.loads(x.author),
            "content": x.content,
            "channel_id": str(x.channel_id),
            "mentions": json.loads(x.mentions),
            "embeds": json.loads(embeds),
        }
        if message["author"]["id"] not in guild_members:
            member = get_guild_member(guild_id, message["author"]["id"])
            guild_members[message["author"]["id"]] = member
        else:
            member = guild_members[message["author"]["id"]]
        message["author"]["nickname"] = None
        if member:
            message["author"]["nickname"] = member.nickname
            message["author"]["avatar"] = member.avatar
            message["author"]["discriminator"] = member.discriminator
            message["author"]["username"] = member.username
        for mention in message["mentions"]:
            if mention["id"] not in guild_members:
                author = get_guild_member(guild_id, mention["id"])
                guild_members[mention["id"]] = author
            else:
                author = guild_members[mention["id"]]
            mention["nickname"] = None
            if author:
                mention["nickname"] = author.nickname
                mention["avatar"] = author.avatar
                mention["username"] = author.username
                mention["discriminator"] = author.discriminator
        msgs.append(message)
    return msgs
Ejemplo n.º 3
0
 def on_current_user_info(self, data):
     guild_id = data["guild_id"]
     if "user_keys" in session and not session["unauthenticated"]:
         dbMember = get_guild_member(guild_id, session["user_id"])
         usr = {
             'avatar': session["avatar"],
             'username': dbMember.username,
             'nickname': dbMember.nickname,
             'discriminator': dbMember.discriminator,
             'user_id': session['user_id'],
         }
         emit("current_user_info", usr)
Ejemplo n.º 4
0
def update_user_status(guild_id, username, user_key=None):
    if user_unauthenticated():
        ip_address = get_client_ipaddr()
        status = {
            'authenticated': False,
            'avatar': None,
            'manage_embed': False,
            'ip_address': ip_address,
            'username': username,
            'nickname': None,
            'user_key': user_key,
            'guild_id': guild_id,
            'user_id': session['user_id'],
            'banned': checkUserBanned(guild_id, ip_address),
            'revoked': checkUserRevoke(guild_id, user_key),
        }
        if status['banned'] or status['revoked']:
            session['user_keys'].pop(guild_id, None)
            return status
        dbUser = UnauthenticatedUsers.query.filter(
            and_(UnauthenticatedUsers.guild_id == guild_id,
                 UnauthenticatedUsers.user_key == user_key)).first()
        dbUser.bumpTimestamp()
        if dbUser.username != username or dbUser.ip_address != ip_address:
            dbUser.username = username
            dbUser.ip_address = ip_address
            db.session.commit()
    else:
        status = {
            'authenticated': True,
            'avatar': session["avatar"],
            'manage_embed': check_user_can_administrate_guild(guild_id),
            'username': username,
            'nickname': None,
            'discriminator': session['discriminator'],
            'guild_id': guild_id,
            'user_id': session['user_id'],
            'banned': checkUserBanned(guild_id),
            'revoked': checkUserRevoke(guild_id)
        }
        if status['banned'] or status['revoked']:
            return status
        dbMember = get_guild_member(guild_id, status["user_id"])
        if dbMember:
            status["nickname"] = dbMember.nickname
        dbUser = db.session.query(AuthenticatedUsers).filter(
            and_(AuthenticatedUsers.guild_id == guild_id,
                 AuthenticatedUsers.client_id == status['user_id'])).first()
        dbUser.bumpTimestamp()
    return status