It's been a few weeks since I launched "Beta 1" and felt an update.

The indexer bot is almost complete, I've literally got 1 major bug I am trying to fix, plus a few things to add, before launching them entirely.

Technically all of the bots are rolled into one script using Python/Twisted. I've automated the entire system on a push based method.

Here is some details of the bots

PreSignup Bot

This is the bot that will verify your network meets our minimum requirements.

Steps Taken
1. User submits a network to the network submission page
2. Literally as soon as the form is submitted a bot is dispatched to the network to check for a few things:
* NETWORK token matches network name
* There are 5 or more users on the network
* There is at least 1 channel on the network with 2 users.
3. Once presignup is complete, regardless of results an email is sent. If passed, the email will contain a verification code/url
4. Once you verify your email, a full submission will be added to the database and admins will be notified.
5. Once we approve the submission the network will be added to the index and an immediately crawl will take place.

Admin Check Bot

This bot will be dispatched when someone requests access to a network or channel page.
It is only ran for the initial admin, all other admins must be added by the original admin.

Steps Taken
1. Submit request from gain access page.
2. Again, literally as form is submitted, a bot is dispatched to the network
3. The bot will /whois the nickname specified and verify it has the OPER umode. This is verified using IRC RPL numerics.
4. If verified, it will send a link allowing you to approve or deny the request.
5. If not verified, a new request must be made.

Index Bot

This is the heart of the crawler. This bot will crawl an IRC network, and submit the statistics to the IRC Driven API.
There are going to be a few methods made available to crawl a network with it.
Crawls will be done on a timed rotation based on the user count your network.
There will be options to change how often you want your network indexed with certain limitations.
There will be 3 tiers, each tier is based off user count. The larger the network, the longer the rotation is.
1) < 1000 users - Indexed every 4 hours.
2) > 10000 - Indexed every 8 hours.
3) > 20000 - Indexed every 12 hours.

There will be an exemption for the largest IRC networks which will be once ever 24 hours.

Steps Taken
1) Connect to IRC network
2) Collect capabilities, basic server stats
3) Collect user count
4) Collect channel count
5) Disconnect from network
6) Send all data to the API

Unlike before, where the bot would send the data as it went, this time it will store all the data in memory, and the submit after disconnecting from the IRC network.
This prevents unnecessary idling.
For all bots:

No DATA actually touches the MySQL database. I have built an API using Django's DRF app. This REST framework will eventually be available to all network admins so they can actually pull their stats from our website and use whereever they please.

Final thoughts

Looking forward to getting the bots up, already have some networks interested in signing up. It's been years in the making but this time I have a good feeling something is going to come from this.

If you want to discuss this more with us, join us on Freenode/#ircdriven