async def create_user(pg, user_id): await pg.execute("INSERT INTO \"user\"(user_id) VALUES($1) ON CONFLICT DO NOTHING", user_id) async def ignore_user(pg, user_id): await pg.execute("UPDATE \"user\" SET ignore = TRUE WHERE user_id = $1", user_id) async def unignore_user(pg, user_id): await pg.execute("UPDATE \"user\" SET ignore = FALSE WHERE user_id = $1", user_id) async def is_ignored(pg, user_id): return await pg.fetchval("SELECT ignore FROM \"user\" WHERE user_id = $1", user_id) async def get_level(pg, user_id): return await pg.fetchval("SELECT level FROM \"user\" WHERE user_id = $1", user_id) async def get_xp(pg, user_id): message_array = await pg.fetch("SELECT total_messages FROM channel_user WHERE \"user\" = $1", user_id) total_xp = 0 for messages in message_array: total_xp += messages[0] extras_array = await pg.fetch("SELECT invites_created, integrations_created, member_updated, user_updated, member_banned, member_unbanned, presence_updated, messages_edited, messages_deleted, reacted, events_created, events_joined, threads_created, threads_joined FROM \"user\" WHERE user_id = $1", user_id) invites_created, integrations_created, member_updated, user_updated, member_banned, member_unbanned, presence_updated, messages_edited, messages_deleted, reacted, events_created, events_joined, threads_created, threads_joined = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 for extra in extras_array: invites_created += extra[0] integrations_created += extra[1] member_updated += extra[2] user_updated += extra[3] member_banned += extra[4] member_unbanned += extra[5] presence_updated += extra[6] messages_edited += extra[7] messages_deleted += extra[8] reacted += extra[9] events_created += extra[10] events_joined += extra[11] threads_created += extra[12] threads_joined += extra[13] total_xp += (invites_created * 100) + ((integrations_created + events_created) * 200) + ((member_updated + user_updated + presence_updated + events_joined + threads_joined) * 10) + member_banned + member_unbanned + messages_edited + messages_deleted + (reacted * 2) + (threads_created * 50) xp_spent = await pg.fetchval("SELECT xp_spent FROM \"user\" WHERE user_id = $1", user_id) return xp_spent, total_xp async def level_up(pg, user_id, xp): await pg.execute("UPDATE \"user\" SET (level, xp_spent) = (+ 1, $2) WHERE user_id = $1", user_id, xp) async def created_invite(pg, user_id): await pg.execute("UPDATE \"user\" SET (invites_created, karma) = (+1, +1) WHERE user_id = $1", user_id) async def deleted_invite(pg, user_id): await pg.execute("UPDATE \"user\" SET karma = -1 WHERE user_id = $1", user_id) async def invites_created(pg, user_id): return await pg.fetchval("SELECT invites_created FROM \"user\" WHERE user_id = $1", user_id) async def created_integration(pg, user_id): await pg.execute("UPDATE \"user\" SET integrations_created = +1 WHERE user_id = $1", user_id) async def member_joined(pg, user_id): await pg.execute("UPDATE \"user\" SET karma = +1 WHERE user_id = $1", user_id) async def member_updated(pg, user_id): await pg.execute("UPDATE \"user\" SET member_updated = +1 WHERE user_id = $1", user_id) async def user_updated(pg, user_id): await pg.execute("UPDATE \"user\" SET user_updated = +1 WHERE user_id = $1", user_id) async def member_banned(pg, user_id): await pg.execute("UPDATE \"user\" SET (member_banned, karma) = (+1, -1) WHERE user_id = $1", user_id) async def member_unbanned(pg, user_id): await pg.execute("UPDATE \"user\" SET member_unbanned = +1 WHERE user_id = $1", user_id) async def presence_updated(pg, user_id): await pg.execute("UPDATE \"user\" SET presence_updated = +1 WHERE user_id = $1", user_id) async def message_edited(pg, user_id): await pg.execute("UPDATE \"user\" SET (messages_edited, karma) = (+1, +1) WHERE user_id = $1", user_id) async def message_deleted(pg, user_id): await pg.execute("UPDATE \"user\" SET (messages_deleted, karma) = (+1, -1) WHERE user_id = $1", user_id) async def reacted(pg, user_id): await pg.execute("UPDATE \"user\" SET (reacted, karma) = (+1, +1) WHERE user_id = $1", user_id) async def unreacted(pg, user_id): await pg.execute("UPDATE \"user\" SET karma = -1 WHERE user_id = $1", user_id) async def event_created(pg, user_id): await pg.execute("UPDATE \"user\" SET (events_created, karma) = (+1, +1) WHERE user_id = $1", user_id) async def event_joined(pg, user_id): await pg.execute("UPDATE \"user\" SET (events_joined, karma) = (+1, +1) WHERE user_id = $1", user_id) async def event_parted(pg, user_id): await pg.execute("UPDATE \"user\" SET karma = -1 WHERE user_id = $1", user_id) async def thread_created(pg, user_id): await pg.execute("UPDATE \"user\" SET (threads_created, karma) = (+1, +1) WHERE user_id = $1", user_id) async def thread_deleted(pg, user_id): await pg.execute("UPDATE \"user\" SET karma = - 1 WHERE user_id = $1", user_id) async def joined_thread(pg, user_id): await pg.execute("UPDATE \"user\" SET (threads_joined, karma) = (+1, +1) WHERE user_id = $1", user_id) async def left_thread(pg, user_id): await pg.execute("UPDATE \"user\" SET karma = -1 WHERE user_id = $1", user_id) async def get_ability_points_spent(pg, user_id): return await pg.fetchval("SELECT ability_points_spent FROM \"user\" WHERE user_id = $1", user_id) async def increment_all_coin(pg): await pg.execute("UPDATE \"user\" SET coin = + 1 WHERE level > 0") async def get_coin(pg, user_id): return await pg.fetchval("SELECT coin FROM \"user\" WHERE user_id = $1", user_id) async def get_karma(pg, user_id): return await pg.fetchval("SELECT karma FROM \"user\" WHERE user_id = $1", user_id)