chore(deps): auto fix by pre-commit hooks
This commit is contained in:
committed by
MingxuanGame
parent
b4fd4e0256
commit
7625cd99f5
@@ -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,
|
||||
|
||||
@@ -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}")
|
||||
|
||||
Reference in New Issue
Block a user