Player format

This commit is contained in:
ciomek committed 2026-09-04 17:47:36 +02:00
1 parent 3dcd4173c2
commit 632d990c85
5 files changed
+27 -13

No files matched your search

@@ -4,7 +4,7 @@ from sqlalchemy.exc import IntegrityError
from sqlmodel import Session, select from sqlmodel import Session, select
from loon.web.db import engine from loon.web.db import engine
from loon.web.logs.service import write_log from loon.web.logs.service import write_log, player_tag
from loon.web.logs.types import LogTypeEnum from loon.web.logs.types import LogTypeEnum
from loon.web.users.models import MinecraftUser, User from loon.web.users.models import MinecraftUser, User
@@ -47,6 +47,6 @@ async def change_password_handler(client, userdata, msg, data):
return return
await write_log(LogTypeEnum.PLAYER_PASSWORD_CHANGED, f"Player {internal_username} ({uuid}) changed their password.") await write_log(LogTypeEnum.PLAYER_PASSWORD_CHANGED, f"Player {player_tag(uuid, internal_username)} changed their password.")
client.publish(f"loon/auth/change_password/{uuid}/response", json.dumps({"success": True, "error": None})) client.publish(f"loon/auth/change_password/{uuid}/response", json.dumps({"success": True, "error": None}))
+9 -9
View File
@@ -1,7 +1,7 @@
import json import json
import random import random
from loon.web.logs.service import write_log from loon.web.logs.service import write_log, player_tag
from loon.web.logs.types import LogTypeEnum from loon.web.logs.types import LogTypeEnum
from loon.web.users.state import user_threads from loon.web.users.state import user_threads
@@ -94,41 +94,41 @@ async def marquee_handler(client, userdata, msg, data):
templates = DEATH_BY_KILLER.get(damage_type, DEATH_BY_KILLER_DEFAULT) templates = DEATH_BY_KILLER.get(damage_type, DEATH_BY_KILLER_DEFAULT)
message = get_random(templates, username=username, killer=killer) message = get_random(templates, username=username, killer=killer)
await write_log(LogTypeEnum.PLAYER_DEAD, f"Player {username} ({uuid}) was killed by {killer}.") await write_log(LogTypeEnum.PLAYER_DEAD, f"Player {player_tag(uuid, username)} was killed by {killer}.")
elif damage_type in DEATH_BY_DAMAGE: elif damage_type in DEATH_BY_DAMAGE:
message = get_random(DEATH_BY_DAMAGE[damage_type], username=username) message = get_random(DEATH_BY_DAMAGE[damage_type], username=username)
await write_log(LogTypeEnum.PLAYER_DEAD, f"Player {username} ({uuid}) died of {damage_type}.") await write_log(LogTypeEnum.PLAYER_DEAD, f"Player {player_tag(uuid, username)} died of {damage_type}.")
elif damage_type: elif damage_type:
message = f"{username} died of {damage_type}" message = f"{username} died of {damage_type}"
await write_log(LogTypeEnum.PLAYER_DEAD, f"Player {username} ({uuid}) died of {damage_type}.") await write_log(LogTypeEnum.PLAYER_DEAD, f"Player {player_tag(uuid, username)} died of {damage_type}.")
else: else:
message = f"{username} died" message = f"{username} died"
await write_log(LogTypeEnum.PLAYER_DEAD, f"Player {username} ({uuid}) died.") await write_log(LogTypeEnum.PLAYER_DEAD, f"Player {player_tag(uuid, username)} died.")
elif subtopic == "joined": elif subtopic == "joined":
message = f"{username} joined the game" message = f"{username} joined the game"
await write_log(LogTypeEnum.PLAYER_JOINED, f"Player {username} ({uuid}) joined the game.") await write_log(LogTypeEnum.PLAYER_JOINED, f"Player {player_tag(uuid, username)} joined the game.")
elif subtopic == "kicked": elif subtopic == "kicked":
reason = data.get("reason") reason = data.get("reason")
if reason == BAN_KICK_REASON: if reason == BAN_KICK_REASON:
message = f"{username} was banned" message = f"{username} was banned"
await write_log(LogTypeEnum.PLAYER_BANNED, f"Player {username} ({uuid}) was banned.") await write_log(LogTypeEnum.PLAYER_BANNED, f"Player {player_tag(uuid, username)} was banned.")
else: else:
message = f"{username} was kicked: {reason}" if reason else f"{username} was kicked" message = f"{username} was kicked: {reason}" if reason else f"{username} was kicked"
await write_log( await write_log(
LogTypeEnum.PLAYER_KICKED, LogTypeEnum.PLAYER_KICKED,
f"Player {username} ({uuid}) was kicked: {reason}." if reason else f"Player {username} ({uuid}) was kicked.", f"Player {player_tag(uuid, username)} was kicked: {reason}." if reason else f"Player {player_tag(uuid, username)} was kicked.",
) )
else: else:
message = f"{username} left the game" message = f"{username} left the game"
await write_log(LogTypeEnum.PLAYER_LEFT, f"Player {username} ({uuid}) left the game.") await write_log(LogTypeEnum.PLAYER_LEFT, f"Player {player_tag(uuid, username)} left the game.")
envelope = json.dumps({"topic": "server/marquee", "payload": {"message": message}}) envelope = json.dumps({"topic": "server/marquee", "payload": {"message": message}})
+2 -2
View File
@@ -4,7 +4,7 @@ from sqlalchemy.exc import IntegrityError
from sqlmodel import Session, select from sqlmodel import Session, select
from loon.web.db import engine from loon.web.db import engine
from loon.web.logs.service import write_log from loon.web.logs.service import write_log, player_tag
from loon.web.logs.types import LogTypeEnum from loon.web.logs.types import LogTypeEnum
from loon.web.users.models import MinecraftUser, User from loon.web.users.models import MinecraftUser, User
@@ -59,6 +59,6 @@ async def register_request_handler(client, userdata, msg, data):
return return
await write_log(LogTypeEnum.PLAYER_REGISTERED, f"Player {internal_username} ({uuid}) registered.") await write_log(LogTypeEnum.PLAYER_REGISTERED, f"Player {player_tag(uuid, internal_username)} registered.")
client.publish(f"loon/auth/register/{uuid}/response", json.dumps({"success": True, "error": None})) client.publish(f"loon/auth/register/{uuid}/response", json.dumps({"success": True, "error": None}))
+10
View File
@@ -7,6 +7,8 @@ from loon.web.auth.middleware import admin
from loon.web.db import engine from loon.web.db import engine
from loon.web.logs.models import LogEntry from loon.web.logs.models import LogEntry
from loon.web.logs.schema import LogEntryResponse from loon.web.logs.schema import LogEntryResponse
from loon.web.users.models import MinecraftUser
from loon.web.users.schema import MinecraftUserPublic
router = APIRouter(prefix="/admin", tags=["admin"]) router = APIRouter(prefix="/admin", tags=["admin"])
@@ -30,3 +32,11 @@ async def list_logs(request: Request):
) )
for entry in entries for entry in entries
] ]
@router.get("/mc-users", response_model=list[MinecraftUserPublic])
@admin
async def list_mc_users(request: Request):
with Session(engine) as session:
statement = select(MinecraftUser).order_by(MinecraftUser.username)
return session.exec(statement).all()
+4
View File
@@ -7,6 +7,10 @@ from loon.web.logs.models import LogType, LogEntry
from loon.web.logs.types import LogTypeEnum from loon.web.logs.types import LogTypeEnum
def player_tag(uuid: str, username: str) -> str:
return f"[player:{uuid}]{username}[/player]"
def _write_log(log_type: LogTypeEnum, message: str) -> None: def _write_log(log_type: LogTypeEnum, message: str) -> None:
with Session(engine) as session: with Session(engine) as session:
statement = select(LogType).where(LogType.code == log_type.value) statement = select(LogType).where(LogType.code == log_type.value)