修复: emit 未 await aiohttp 协程, 走子/匹配帧全部丢失

This commit is contained in:
AwesomeXiangQi committed 2026-09-13 14:39:27 +08:00
1 parent adf3abb5fc
commit ddcf8c4bec
1 file changed
+6 -6
+6 -6
View File
@@ -55,11 +55,11 @@ class OnlineBot:
self._send_lock = asyncio.Lock() self._send_lock = asyncio.Lock()
# ---------- 基础 ---------- # ---------- 基础 ----------
def emit(self, event, data, ack=False): async def emit(self, event, data, ack=False):
self._ack += 1 self._ack += 1
n = self._ack if ack else '' n = self._ack if ack else ''
payload = json.dumps([event, data], ensure_ascii=False) payload = json.dumps([event, data], ensure_ascii=False)
return self.ws.send_str(f'42{NS},{n}{payload}') await self.ws.send_str(f'42{NS},{n}{payload}')
def my_name(self): def my_name(self):
try: try:
@@ -113,7 +113,7 @@ class OnlineBot:
return return
if raw.startswith('40'): if raw.startswith('40'):
log.info('[ws] joined /xiangqi') log.info('[ws] joined /xiangqi')
self.emit('lobby.join', {'room': 'lobby'}) await self.emit('lobby.join', {'room': 'lobby'})
if not self.args.game: if not self.args.game:
await asyncio.sleep(1) await asyncio.sleep(1)
asyncio.create_task(self.quick_challenge()) asyncio.create_task(self.quick_challenge())
@@ -133,9 +133,9 @@ class OnlineBot:
if event == 'lobby.my.game.new': if event == 'lobby.my.game.new':
self.game_id = data.get('game_id') self.game_id = data.get('game_id')
log.info('[game] matched %s', self.game_id) log.info('[game] matched %s', self.game_id)
self.emit('lobby.left', {}) await self.emit('lobby.left', {})
await asyncio.sleep(0.3) await asyncio.sleep(0.3)
self.emit('g_v2.get', {'game_id': self.game_id}, ack=True) await self.emit('g_v2.get', {'game_id': self.game_id}, ack=True)
elif event == 'game.get.success': elif event == 'game.get.success':
d = data.get('data', {}) d = data.get('data', {})
me = self.my_name() me = self.my_name()
@@ -227,7 +227,7 @@ class OnlineBot:
self.last_move_at = asyncio.get_event_loop().time() self.last_move_at = asyncio.get_event_loop().time()
think_ms = int((asyncio.get_event_loop().time() - t0) * 1000) think_ms = int((asyncio.get_event_loop().time() - t0) * 1000)
log.info('[game] %s: %s → %s %s %dms', source, mv, site_mv, score, think_ms) log.info('[game] %s: %s → %s %s %dms', source, mv, site_mv, score, think_ms)
self.emit('g_v2.move', {'game_id': self.game_id, 'move': site_mv, await self.emit('g_v2.move', {'game_id': self.game_id, 'move': site_mv,
'thinking_time': think_ms}) 'thinking_time': think_ms})
except Exception as e: except Exception as e:
log.error('[move] %s: %s', type(e).__name__, e) log.error('[move] %s: %s', type(e).__name__, e)