Difference between revisions of "Hive13 IRC Bot"

From Hive13 Wiki
Jump to navigation Jump to search
(What Needs to be Done)
(What Needs to be Done)
Line 36: Line 36:
 
** Mostly done, still working out the details.
 
** Mostly done, still working out the details.
 
* Hammer out what all features people might like to see.
 
* Hammer out what all features people might like to see.
 +
* Figure out how to authenticate users are who they say they are.
 +
** This is because we do not want to auto-op someone named "Paul_Hive13" when it is really a random person who is just using my username.
  
 
= Project Needs =
 
= Project Needs =

Revision as of 17:09, 12 July 2010


Property "ProjectImage" (as page type) with input value "Image:IRSSI.png|240px" contains invalid characters or is incomplete and therefore can cause unexpected results during a query or annotation process.

Hive13 Project
Hive13 IRC Bot
[[IRSSI.png|200px]]
Status: Active
Start Date: 6/14/2010


Overview

Summary

For a while now I have been meaning to work on an IRC bot for the Hive13 IRC room hosted on freenode.net (Webchat Link).

This bot will start off by just automating simple tasks, for example auto-opping members. A goal of the project is to make the bot easily extensible with new features allowing us to adapt and improve the bot as time goes on.

Source code is currently located at Paul's SVN server http://svn.caffeinesystems.com/hive13/trunk/Hive13JavaChat . It is currently implemented as a NetBeans 6.8 java project. I currently have the project set up so that people can check out the code, but check-ins are disallowed unless you have an account. Until we move the code to a more appropriate location anyone that wants to commit changes can contact me and I (Paul) will set up an SVN account for you.

Longer term goals include tieing the bot into the Twitter API and the Google Calendar API.

Project Manager

Contributors

  • Add yourself here if you have contributed to this project.

Project Status

User:Paul has found a Java IRC API library that makes accessing the IRC room a lot easier and has established the basic framework upon which various types of commands can be easily added.

"Passive" commands have their framework completed, these are commands that only respond to user input on the channels. For example, "!time" will activate the 'time' command which spits out the current time.

"Threaded" commands have most of their framework completed, but are still being investigated. These are commands that respond to external data and provide updates to the channel. For example, an RssReader that publishes updates to Hive13 related content to the channel.

What Needs to be Done

  • Research the feasibility of various ideas mentioned below.
    • Google Calendar API
    • Twitter API
  • Figure out an easily extensible design for the actual bot.
    • Mostly done, still working out the details.
  • Hammer out what all features people might like to see.
  • Figure out how to authenticate users are who they say they are.
    • This is because we do not want to auto-op someone named "Paul_Hive13" when it is really a random person who is just using my username.

Project Needs

Project Information

Goals

IRC Task Automator

Goals

  1. Automatically give operator status to Hive13 members who join the IRC room.
    • Username is too easily spoofed, so we need a way to check if the user is logged into an approved Freenode.net account before opping.

Communication Aggregator

CommunicationMediumsCurrent.png

A bot would enable us to better tie the chat room into the other communication mediums we use as a group. As it stands now we are fractured into 3 major communication groups:

  1. Mailing List
  2. IRC Room
  3. Meetings

With numerous less utilized mediums:

  • Twitter
  • Youtube
  • Flickr
  • Google Calendar
  • Hive13 Blog
  • Hive13 Wiki

There are of course people that utilize all of these communications mediums, but there are also people that tends to stick to only one or two of them. The bot could help tie the other communication mediums into the IRC room while also tieing the chat room back into the communication loop.

Goals

  • Automate alerting other people when someone says they are going to be at the hackerspace.
    • Ex. User123 says, "I am going to be @hive13 in about an hour", Hive13Bot uses the Twitter API to send out a tweet stating: User13 said 'I am going to be @hvie13 in about an hour'
  • Someone posts an update on either Youtube, Flickr, or the Hive13 Blog we send out an alert to the chat room, "Jimbo Jones just made a post on the Hive13 blog titled 'Lockpicking at Hive13' http://hive13.org/LockpickingLink"
  • Use the Google calendar API to automatically update the topic of the chat room as events draw near.

Research

This section is documenting research that has been done on the various goals. It will have links to additional information if needed.

IRC Automation Research

Auto-Opping Users on Freenode

The simplest way to implement this would be to just have a list of usernames, then when a new user joins a channel, or when the bot joins the channel, simply run through the list of usernames giving each one operator status. However, a major problem with this is that as soon as someone realizes that this is how the bot works, they can just join the channel, set their nick to a members username and receive operator status.

Freenode.net allows users to register usernames and then login with those usernames. If we can find a way to easily confirm that each user is genuinely that user prior to sending the op command, then it would greatly enhance the security of this operation. A quick Google search turns up the following: http://freenode.net/faq.shtml#spoofing . This page hints at using something called 'CAPAB IDENTIFY-MSG'. I have yet to determine exactly what this is or how we can use it. The section also links to a perl script, but I do not quite understand what the script is doing.

After some further research I found that if you message the nickserv bot it will tell you if a certain user is logged in or not. For example, '/msg nickserv info pvince' returns several messages that consist of a variety of information, if the user is logged in the "Last seen:" row says 'Now' if they are not logged in, there is a date.

Communication Aggregation Research

@Hive13 Alerts

RSS Feed Alerts

Google Calendar Topic Updates

Resources