Help with operating MCP2515 with micropython

Hi, I am really struggling to get my code to work with the MCP2515. I am using a waveshare Pico B and a raspberry pi pico coding in micropython. Its connected to a CAN simulator which is giving out 4 CAN_IDs every 1s. The bus speed is 1Mbps.
I am not very well versed in python and integrating the MCP2515 has been very difficult trying to understand the registry control in the documentation that sparkfun supplies.

I am finding that if I have more than one CAN_ID on the bus, then when running my code it gets really confused and rather than showing me all 4 CAN_IDs and their payloads it gets stuck printing one CAN_ID, sometimes swapping between two. I figured this is just because there is one buffer so it may be just reading the one CAN_ID each time?

This is when I run the RXB0CTRL with a hex of 0x60 which means unfiltered.

When I try to run it in 0x20 which should be SID filtered, it stops working and the buffer never fills.
I made sure to set the filters in the initialisation which you can see on lines 490 - 506

When sending messages, it works fine and sends them with the correct IDs.

I have no idea what I am doing wrong. Can someone take a look at my code and tell me what im doing wrong!

roamingtxcontroller/mcp2515control at main ยท Gallen1124/roamingtxcontroller