# Bot 無法完整解析 RPC-onEnterRoomList 問題 ## 結論 > 對過程有興趣的讀者,可以閱讀本篇後續內容。 Bot 在解析 Struct[] 時,無法成功將 Struct 中的 Key 填入對應的 Value ```typescript= // 原本寫法 struct[key] = value; console.log(struct[key]); // print undefined --> unexpected // 修正寫法 struct.setKey(key, value); console.log(struct[key]); // print value --> expected ``` 原本的寫法在 NW、V8 專案是正常運作的, <font color=#FF0000>目前尚在釐清 【為何 Bot Struct Reader 結果與 NW、V8 不同】。</font> ## 發現問題 > 版本:0.11.4 SHA-1:8f446b95016809325ee003188ffbf02b7d9a89ff Bot 登入 YL 時獲取之 RPC-onEnterRoomList 的內容為 undefined,具體錯誤如下: ```typescript= // onEnterRoomList Data [{"GameId": undefined, "GameType": undefined, ...}, ...], // GameInfo Array [{"id": undefined, "name": undefined, ...}, ...] // RoomInfo Array ``` 預期內容為: ```typescript= // onEnterRoomList Data [{"GameId": 1111, "GameType": "塗遊捕魚", ...}, ...], // GameInfo Array [{"id": 9999, "name": "高級房", ...}, ...] // RoomInfo Array ``` ## 錯誤猜測 - 登入資訊遺漏 因 Bot 與 YL 登入流程並非完全一致,故猜測是 Bot 在登入流程中有遺漏必要交握資訊,導致 YL Server 回傳不正確的 onEnterRoomList。 <font color=##FF0000>但在調整登入流程至完全一致後,依然無法獲取有效 onEnterRoomList。</font> ## 錯誤猜測 - RPCPacket Reader 有誤 因觀察到 Bot 與 YL 兩邊的 onEnterRoomList 封包內容一致,故猜測為 Reader 有問題; 另外觀察到 onEnterRoomList 解析後是有得到正確的陣列長度與格式,所以先排除 Array Reader 的問題,進一步推測是 **Struct Reader** 有錯誤。 <font color=#FF0000>在測試其他使用 Struct Reader 的 RPC(如:showdown)後,發現亦有相同問題。</font> 在 Struct Reader 中: ```typescript= struct[key] = value; console.log("value: ", value) // 發現得到正確的 value console.log("struct: ", struct[key]); // 發現得到 undefined ``` 進入 Struct Class 可見有 setKey function 處理 key-value-pair, 故,嘗試使用此 function 來填值: ```typescript= struct.setKey(key, value); console.log("struct: ", struct[key]); // 發現得到正確的 value ``` 因此,所有 Struct Reader 經手之 RPC 應都有相同問題; 但為何僅 Bot 會有此問題,需另外釐清。