diff --git a/xiangqi_bot/bot.py b/xiangqi_bot/bot.py index e58a475..42bd3d3 100644 --- a/xiangqi_bot/bot.py +++ b/xiangqi_bot/bot.py @@ -55,11 +55,11 @@ class OnlineBot: self._send_lock = asyncio.Lock() # ---------- 基础 ---------- - def emit(self, event, data, ack=False): + async def emit(self, event, data, ack=False): self._ack += 1 n = self._ack if ack else '' 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): try: @@ -113,7 +113,7 @@ class OnlineBot: return if raw.startswith('40'): log.info('[ws] joined /xiangqi') - self.emit('lobby.join', {'room': 'lobby'}) + await self.emit('lobby.join', {'room': 'lobby'}) if not self.args.game: await asyncio.sleep(1) asyncio.create_task(self.quick_challenge()) @@ -133,9 +133,9 @@ class OnlineBot: if event == 'lobby.my.game.new': self.game_id = data.get('game_id') log.info('[game] matched %s', self.game_id) - self.emit('lobby.left', {}) + await self.emit('lobby.left', {}) 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': d = data.get('data', {}) me = self.my_name() @@ -227,8 +227,8 @@ class OnlineBot: self.last_move_at = asyncio.get_event_loop().time() 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) - self.emit('g_v2.move', {'game_id': self.game_id, 'move': site_mv, - 'thinking_time': think_ms}) + await self.emit('g_v2.move', {'game_id': self.game_id, 'move': site_mv, + 'thinking_time': think_ms}) except Exception as e: log.error('[move] %s: %s', type(e).__name__, e) if self.engine._proc.returncode is not None: