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
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
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)
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