commit cf64f64b89ff6926b992e6d2211afecf27375fcc Author: Robert "ar" Gerus Date: Wed May 29 16:46:16 2013 +0200 First semi-reasonable version of the code. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..11b08e2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +config.rb +*.swp +*.swo +*~ diff --git a/repost.rb b/repost.rb new file mode 100644 index 0000000..e3d5721 --- /dev/null +++ b/repost.rb @@ -0,0 +1,17 @@ +class Repost < EventMachine::IRC::Client + + attr_accessor :triggers + + def dispatch_raw_message(message = {}) + self.triggers = [] if self.triggers.nil? + self.triggers.each do |trigger| + trigger[:code].call(message) if message[:command] == trigger[:command] + end + end + + def register_trigger(command, &code) + self.triggers = [] if self.triggers.nil? + self.triggers << {:command => command, :code => code} + end + +end diff --git a/run.rb b/run.rb new file mode 100755 index 0000000..be03d39 --- /dev/null +++ b/run.rb @@ -0,0 +1,34 @@ +#!env ruby + +require 'rubygems' +require 'eventmachine' +require 'em-irc' +require './config' +require './repost' + +repost = Repost.new do + + host Config[:server][:host] + port Config[:server][:port] + + on :connect do + puts "connected! changing nick to #{Config[:client][:nick]}" + nick Config[:client][:nick] + end + + on :nick do + Config[:client][:channels].each do |channel| + puts "joining #{channel}" + join channel + end + end + + on :raw do |message| + self.dispatch_raw_message message + end + +end + +#repost.register_trigger("PRIVMSG") { |msg| p msg } + +repost.run!