mirror of https://gitlab.com/litecord/litecord.git
parent
6608db7bf1
commit
d44541748e
|
|
@ -133,36 +133,29 @@ async def get_prune(guild_id: int, days: int) -> list:
|
||||||
- did not login in ``days`` days.
|
- did not login in ``days`` days.
|
||||||
- don't have any roles.
|
- don't have any roles.
|
||||||
"""
|
"""
|
||||||
# a good solution would be in pure sql.
|
|
||||||
|
# @everyone role is always counted as a role in the db
|
||||||
|
# (its not implicit to every member as one would think)
|
||||||
|
# (that is probably the best solution in the future)
|
||||||
|
# (but we live with what we got)
|
||||||
member_ids = await app.db.fetch(
|
member_ids = await app.db.fetch(
|
||||||
f"""
|
f"""
|
||||||
SELECT id
|
SELECT id
|
||||||
FROM users
|
FROM users
|
||||||
JOIN members
|
JOIN members
|
||||||
ON members.guild_id = $1 AND members.user_id = users.id
|
ON members.guild_id = $1 AND members.user_id = users.id
|
||||||
WHERE users.last_session < (now() - (interval '{days} days'))
|
WHERE
|
||||||
""",
|
users.last_session < (now() - (interval '{days} days'))
|
||||||
guild_id,
|
AND (
|
||||||
)
|
SELECT COUNT(member_roles.role_id)
|
||||||
|
|
||||||
member_ids = [r["id"] for r in member_ids]
|
|
||||||
members = []
|
|
||||||
|
|
||||||
for member_id in member_ids:
|
|
||||||
role_count = await app.db.fetchval(
|
|
||||||
"""
|
|
||||||
SELECT COUNT(*)
|
|
||||||
FROM member_roles
|
FROM member_roles
|
||||||
WHERE guild_id = $1 AND user_id = $2
|
WHERE member_roles.user_id = members.user_id
|
||||||
|
) <= 1
|
||||||
""",
|
""",
|
||||||
guild_id,
|
guild_id,
|
||||||
member_id,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if role_count == 1: # only the @everyone role
|
return [r["id"] for r in member_ids]
|
||||||
members.append(member_id)
|
|
||||||
|
|
||||||
return members
|
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/<int:guild_id>/prune", methods=["GET"])
|
@bp.route("/<int:guild_id>/prune", methods=["GET"])
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue