From 9b7347a891606f9531ce5ca8850a33c6798ea72f Mon Sep 17 00:00:00 2001 From: ngharo Date: Tue, 3 Jul 2018 17:48:55 -0500 Subject: Ruby port of original bot. No longer dependent on random time --- bot.rb | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 bot.rb (limited to 'bot.rb') diff --git a/bot.rb b/bot.rb new file mode 100644 index 0000000..e07eab3 --- /dev/null +++ b/bot.rb @@ -0,0 +1,56 @@ +require 'thread' +require 'cinch' + +workers = 5 +queue = Queue.new +throttle = 0.1 # lower the faster but easier to hit IRCd sendq +prev_item = nil + +@bots = Array.new(workers) do + Thread.new do + bot = Cinch::Bot.new do + configure do |c| + c.server = "irc.server.local" + c.port = 7001 + c.realname = 'robert' + c.password = "password" + c.channels = ["#test99"] + c.nicks = ['zz1', 'zz2', 'zz3', 'zz4', 'zz5', 'zz6'] + c.user = 'bot' + c.ssl.use = true + c.ssl.verify = false + end + + on :message, /^!spam (\d+)/ do |m, count| + if queue.empty? + count.to_i.times do |i| + queue << i + end + + prev_item = queue.pop + + # This kicks off the chain reaction + m.reply prev_item + end + end + + on :message do |m| + debug "#{m.bot.nick}: '#{m.message}' =/= '#{prev_item}' and queue empty: #{queue.empty?}'" + + if m.message == prev_item.to_s + if queue.empty? + prev_item = nil + else + sleep(throttle) + prev_item = queue.pop + m.reply prev_item + end + end + end + end + + bot.start + end +end + +@bots.each(&:join) -- cgit v1.2.3