blob: 835694e1eb7fa487c8c93e0a33f55dac75774bcf (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
require 'socket'
module Dinobot
class IRC
def initialize(server, port, nick, pass=nil)
@server = server
@port = port
@nick = nick
@pass = pass
@socket = nil
end
def connect
log :info, "Connecting to #{@server}:#{@port}."
@socket = TCPSocket.new(@server, @port)
puts "PASS #{@pass}" if @pass
puts "NICK #{@nick}"
puts "USER #{@nick} 0 * :#{@nick}"
end
def disconnect
@socket.close
end
def connected?
!(@socket.nil? || @socket.closed?)
end
def gets
str = @socket.gets
log :in, str.inspect
str
end
def puts(str)
log :out, str.inspect
@socket.puts str
end
def join(channel)
puts "JOIN #{channel}"
end
def part(channel)
puts "PART #{channel}"
end
def privmsg(channel, message)
puts "PRIVMSG #{channel} :#{message}"
end
def pong(message)
puts "PONG #{message}"
end
private
def log(type, *lines)
str = lines.join("\n")
case type
when :in
prefix = "\e[32m<<\e[0m "
when :out
prefix = "\e[36m>>\e[0m "
when :error
prefix = "\e[31m!!\e[0m "
when :info
prefix = "\e[33m==\e[0m "
when :indent
prefix = ' '
else
raise "unknown type specified -- #{type}"
end
Kernel.puts str.gsub(/^/, prefix)
end
end
end
|