読者です 読者をやめる 読者になる 読者になる

RieceのLogから加工してircに定期的に発言させるBot

IRC Ruby

Limechatとかで検索ができなさげなので、もうbotを作ることにした。channelにfiltterをかけたchannelみたいなのってすぐに作れないもんなのかなー?

tig.rbでtwitterの発言とかはrieceのlogにたまってきている。だから、定期的にそのlogを特定userとかでgrepみたいなことしてあげればおk。RubyのIRC Botはいくつか種類があったんだけど、笹田さんが作られているnadokaさんというのがよいかなと思った。

そんなわけでRubyのスクリプト。pluginsディレクトリ以下に下のプログラムをTwitterBot.nbなどと付けて保存する。

# -*- coding: utf-8 -*-
require "date"

class Twitter
  def initialize(file_dir)
    @file_dir = file_dir
    @timelines = []
  end
  def timeline(users)
    old_length = @timelines.length
    day = Time.now
    f = open(@file_dir + day.year.to_s + sprintf("%02d",day.month.to_s) + sprintf("%02d",day.day.to_s) + ".txt.mule-utf-8")
    f.each {|line|
      if users.any?{|user|line.index(user)}
        @timelines.push line
      end
    }
    f.close
    @timelines = @timelines.uniq
    return @timelines[old_length..@timelines.length]
  end
end

class TwitterBot < Nadoka::NDK_Bot
  def bot_initialize
    @ch = @bot_config[:ch]
    @users = @bot_config[:users]
    @twitter = Twitter.new(@bot_config[:file_dir])
  end
  def on_timer t
    @twitter.timeline(@users).each{|tl|
      send_privmsg(@ch,tl)
      #連投しすぎると怒られて、追い出される時があるから
      sleep 1
    }
  end
end

とりあえずこれでRubyの俺俺botは書けるようになったから、変なの作りまくろう(ぉ