chore(deps): auto fix by pre-commit hooks

This commit is contained in:
pre-commit-ci[bot]
2025-08-24 03:18:58 +00:00
committed by MingxuanGame
parent b4fd4e0256
commit 7625cd99f5
25 changed files with 241 additions and 320 deletions

View File

@@ -96,6 +96,7 @@ async def send_message(
if channel_type == ChannelType.MULTIPLAYER:
try:
from app.dependencies.database import get_redis
redis = get_redis()
key = f"channel:{channel_id}:messages"
key_type = await redis.type(key)
@@ -162,13 +163,9 @@ async def get_message(
):
# 1) 查频道
if channel.isdigit():
db_channel = (await session.exec(
select(ChatChannel).where(ChatChannel.channel_id == int(channel))
)).first()
db_channel = (await session.exec(select(ChatChannel).where(ChatChannel.channel_id == int(channel)))).first()
else:
db_channel = (await session.exec(
select(ChatChannel).where(ChatChannel.name == channel)
)).first()
db_channel = (await session.exec(select(ChatChannel).where(ChatChannel.name == channel))).first()
if db_channel is None:
raise HTTPException(status_code=404, detail="Channel not found")
@@ -176,7 +173,6 @@ async def get_message(
channel_id = db_channel.channel_id
try:
messages = await redis_message_system.get_messages(channel_id, limit, since)
if len(messages) >= 2 and messages[0].message_id > messages[-1].message_id:
messages.reverse()
@@ -188,11 +184,7 @@ async def get_message(
if since > 0 and until is None:
# 向前加载新消息 → 直接 ASC
query = (
base.where(col(ChatMessage.message_id) > since)
.order_by(col(ChatMessage.message_id).asc())
.limit(limit)
)
query = base.where(col(ChatMessage.message_id) > since).order_by(col(ChatMessage.message_id).asc()).limit(limit)
rows = (await session.exec(query)).all()
resp = [await ChatMessageResp.from_db(m, session) for m in rows]
# 已经 ASC无需反转
@@ -202,9 +194,7 @@ async def get_message(
if until is not None:
# 用 DESC 取最近的更早消息,再反转为 ASC
query = (
base.where(col(ChatMessage.message_id) < until)
.order_by(col(ChatMessage.message_id).desc())
.limit(limit)
base.where(col(ChatMessage.message_id) < until).order_by(col(ChatMessage.message_id).desc()).limit(limit)
)
rows = (await session.exec(query)).all()
rows = list(rows)
@@ -221,7 +211,6 @@ async def get_message(
return resp
@router.put(
"/chat/channels/{channel}/mark-as-read/{message}",
status_code=204,

View File

@@ -76,20 +76,21 @@ class ChatServer:
async def broadcast(self, channel_id: int, event: ChatEvent):
users_in_channel = self.channels.get(channel_id, [])
logger.info(f"Broadcasting to channel {channel_id}, users: {users_in_channel}")
# 如果频道中没有用户,检查是否是多人游戏频道
if not users_in_channel:
try:
async with with_db() as session:
from sqlmodel import select
channel = await session.get(ChatChannel, channel_id)
if channel and channel.type == ChannelType.MULTIPLAYER:
logger.warning(f"No users in multiplayer channel {channel_id}, message will not be delivered to anyone")
logger.warning(
f"No users in multiplayer channel {channel_id}, message will not be delivered to anyone"
)
# 对于多人游戏房间,这可能是正常的(用户都离开了房间)
# 但我们仍然记录这个情况以便调试
except Exception as e:
logger.error(f"Failed to check channel type for {channel_id}: {e}")
for user_id in users_in_channel:
await self.send_event(user_id, event)
logger.debug(f"Sent event to user {user_id} in channel {channel_id}")