You only have a few ways to keep posts from spammers from showing up on your client that I am aware of.
1. Block their nostr:npubs manually in an endless game of whack-a-mole.
2. Blocking certain words, domains, or other content that is common to their posts, which is still a bit of whack-a-mole, but less so than manually blocking nostr:npubs.
3. Only using relays that the spammers don't have access to, such as web-of-trust relays or paid relays.
4. Implement web-of-trust at the client level similar to how Coracle has done it, so that each user who logs in may see different notes based on their own web-of-trust, regardless of what relays they are using.
Now, the most "Nostr" way of doing this would be to show questions from a default relay or set of relays that is web-of-trust or otherwise aggressively filtered for spam, but when the user logs in, you show questions posted to their preferred relay set. If the spammers have access to those relays, then that is on each user to determine if they should use different relays, or just mute the spammers.