Requirements: Miranda 0.8+ Unicode
The logic of Spam-o-tron is simple. We will leave Bayes alone for now. By default, any message or authorization request from a not-in-list contact is blocked and contact is hidden until verified to be a human. You have several options to do that: a challenge request with static/regexp response (“no-spam” by default, multiple answers can be provided with all/round-robin/random selection) and a simple dynamic math expression like 3 + 2 (generated randomly). Numbers are 1 to 10 so that no one needs a calculator to get an answer. Upon receiving correct answer contact gets approved and optionally gets added to the contact list.
By default Bayes is in learning mode. That is no actions are being done to block or pass through a message or authorization request. If a contact gets approved, his previous messages are considered ham and are added to a Bayes database. If a contact doesn’t respond with a correct answer for 2 days all previous messages are considered spam. The database is an SQLite database located in Plugins/spamotron folder. Since ICQ spam is not that frequent as email spam, you might need some time for Bayes engine to learn sufficient number of messages. To speed things up you have an option to manually learn any message as spam or ham. A good place to start is a System history. Mine had a lot of spam authorization requests. Having learned at least 50 of spam and 20 of ham messages you may try to enable blocking of messages with a high spam score and/or automatically approve contacts with a low score. Both are configurable.
When multiple answers are specified %response% variable is populated with the first response value for the simple mode, random value for the random mode and a value sequentially rotated with each message from a contact for round-robin mode. Each response value can be a perl regular expression (examples: /^no[-_]?spam$/i, /no-Spam/). For simple mode the message is matched against all of the responses and for round-robin/random modes for the one used in a last challenge request that was sent to the contact. You can also use %response-n% (%response-1%, %response-2%, and so on) variables to insert a specific response in the challenge request (which makes sense only for the simple mode).
The latest version and x64 build is always available at http://vu1tur.eu.org/spamotron