Hatena::ブログ(Diary)

goinger的日記

2008年01月06日 rubyでirc botつくりたいけど、資料が少ないのでpythonの情報を調べ

[python][irc] bot作成

import socket

network = 'irc.insert.a.network.here'
port = 6667
irc = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
irc.connect ( ( network, port ) )
irc.send ( 'NICK PyIRC\r\n' )
irc.send ( 'USER PyIRC PyIRC PyIRC :Python IRC\r\n' )
irc.send ( 'JOIN #pyirc\r\n' )
irc.send ( 'PRIVMSG #pyirc :Can you hear me?\r\n' )
irc.send ( 'PART #pyirc\r\n' )
irc.send ( 'QUIT\r\n' )
irc.close()

結構簡単ですねww

[python][bot] 外国のサーバーからircにつなげる場合のサンプル

import socket

network = 'irc.media.kyoto-u.ac.jp'
port = 6667
irc = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
irc.connect ( ( network, port ) )
irc.send ( 'PASS yatsuhashi\r\n' )
irc.send ( 'NICK sayuchof\r\n' )
irc.send ( 'USER PI PyIRC PyIRC :Python IRC\r\n' )

irc.send ( 'JOIN #twitter\r\n' )
irc.send ( 'JOIN #japanese\r\n' )
irc.send ( 'PRIVMSG #pyirc :Can you hear me?\r\n' )
irc.send ( 'PART #pyirc\r\n' )
while True:
   data = irc.recv ( 4096 )
   if data.find ( 'PING' ) != -1:
      irc.send ( 'PONG ' + data.split() [ 1 ] + '\r\n' )

こんな感じで作る。 PASSの部分がポイント

[irc][bot] 単純な単語に反応するbot

import socket

network = 'irc.2ch.net'
port = 6667
irc = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
irc.connect ( ( network, port ) )
irc.send ( 'NICK sayuchof\r\n' )
irc.send ( 'USER PI PyIRC PyIRC :Python IRC\r\n' )

irc.send ( 'JOIN #apt-get\r\n' )
irc.send ( 'PRIVMSG #apt-get :sayuchofたこすけ\r\n' )
irc.send ( 'PART #pyirc\r\n' )

while True:
   data = irc.recv ( 4096 )
   if data.find ( 'PING' ) != -1:
      irc.send ( 'PONG ' + data.split() [ 1 ] + '\r\n' )
   elif data.find ( 'PRIVMSG' ) != -1:
      nick = data.split ( '!' ) [ 0 ].replace ( ':', '' )
      message = ':'.join ( data.split ( ':' ) [ 2: ] )
      if message.find('baka') != -1:
         irc.send ( 'PRIVMSG #apt-get :sayuchofのあほ\r\n' )

      if data.find('sayuchof') != -1:
	 irc.send ( 'PRIVMSG #apt-get :sayuchofさんは天才ですって\r\n')

どうでもいいけど、日本語に反応しないのだけど、文字エンコードってどうすればいいんだろか???

次は辞書でもつくろうかしら

[ruby][bot] 超簡易irc bot作成

#!/usr/bin/ruby

require "socket"

begin
	sock = TCPSocket.open("irc.2ch.net",6667)
rescue
	puts "TCPSocket.open failed :#$!\n"
else
	sock.write ( "NICK sayuchof\r\n" )
	sock.write ( "USER PI PyIRC PyIRC :Python IRC\r\n" )

	sock.write ( "JOIN #apt-get\r\n" )

	sock.write ( "PRIVMSG #apt-get :sayuchof\r\n" )
	sock.write ( "PART #apt-get\r\n" )
end

超簡易botを作ってみた はてさて、これからどう改造すべきか