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を作ってみた はてさて、これからどう改造すべきか