april 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/HISTORY.markdown +4 -0
- data/README.markdown +41 -0
- data/bin/bot +41 -0
- data/etc/april.conf +16 -0
- data/lib/april.rb +14 -0
- data/lib/april/client.rb +39 -0
- data/lib/april/module.rb +0 -0
- data/lib/april/modules/Logger.rb +0 -0
- data/lib/april/parser.rb +12 -0
- data/lib/april/socket.rb +49 -0
- data/lib/april/utils.rb +6 -0
- metadata +71 -0
data/HISTORY.markdown
ADDED
data/README.markdown
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
april
|
2
|
+
===
|
3
|
+
|
4
|
+
This is a smartless IRC library for bots
|
5
|
+
|
6
|
+
Features
|
7
|
+
--------
|
8
|
+
|
9
|
+
* Tiny
|
10
|
+
* Easy to understand (written in Ruby!)
|
11
|
+
* Free
|
12
|
+
|
13
|
+
Installing
|
14
|
+
----------
|
15
|
+
|
16
|
+
$ rake install
|
17
|
+
|
18
|
+
Using
|
19
|
+
-----
|
20
|
+
|
21
|
+
edit april.conf && ruby bot.rb :)
|
22
|
+
|
23
|
+
Contributing
|
24
|
+
------------
|
25
|
+
|
26
|
+
Once you've made your great commits:
|
27
|
+
|
28
|
+
1. [Fork][0] april
|
29
|
+
2. Create a topic branch - `git checkout -b my_branch`
|
30
|
+
3. Push to your branch - `git push origin my_branch`
|
31
|
+
4. Create an [Issue][1] with a link to your branch
|
32
|
+
5. That's it!
|
33
|
+
|
34
|
+
Author
|
35
|
+
------
|
36
|
+
|
37
|
+
fyskij :: fyskij@gmail.org
|
38
|
+
|
39
|
+
[0]: http://help.github.com/forking/
|
40
|
+
[1]: http://github.com/fyskij/april/issues
|
41
|
+
|
data/bin/bot
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'april'
|
4
|
+
require 'getoptlong'
|
5
|
+
|
6
|
+
home = ENV["HOME"]
|
7
|
+
|
8
|
+
args = GetoptLong.new(
|
9
|
+
['--version', '-v', GetoptLong::NO_ARGUMENT],
|
10
|
+
['--help', '-h', GetoptLong::NO_ARGUMENT],
|
11
|
+
['--config', '-f', GetoptLong::REQUIRED_ARGUMENT]
|
12
|
+
)
|
13
|
+
|
14
|
+
options = {
|
15
|
+
:config => "#{home}/.aprilrc"
|
16
|
+
}
|
17
|
+
|
18
|
+
args.each {|option, value|
|
19
|
+
case option
|
20
|
+
|
21
|
+
when '--version'
|
22
|
+
puts "April library version: #{APRIL::VERSION}"
|
23
|
+
exit 0
|
24
|
+
|
25
|
+
when '--config'
|
26
|
+
options[:config] = value
|
27
|
+
|
28
|
+
when '--help'
|
29
|
+
puts "April commands:
|
30
|
+
--config
|
31
|
+
--version
|
32
|
+
"
|
33
|
+
exit 0
|
34
|
+
|
35
|
+
end
|
36
|
+
}
|
37
|
+
|
38
|
+
|
39
|
+
client = APRIL::Client.new(YAML.load_file(options[:config]))
|
40
|
+
client.go
|
41
|
+
|
data/etc/april.conf
ADDED
data/lib/april.rb
ADDED
data/lib/april/client.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
module APRIL
|
2
|
+
|
3
|
+
class Client
|
4
|
+
attr_reader :version, :modules, :config, :user, :nick, :realname, :channels, :irc
|
5
|
+
|
6
|
+
|
7
|
+
def initialize(config)
|
8
|
+
@version = APRIL::VERSION
|
9
|
+
|
10
|
+
@modules = {}
|
11
|
+
|
12
|
+
@irc = APRIL::Socket.new
|
13
|
+
|
14
|
+
@config = config
|
15
|
+
@config.each do |k,v|
|
16
|
+
self.class.send(:define_method, k, proc{v})
|
17
|
+
end
|
18
|
+
|
19
|
+
@nick = informations[0]["nick"]
|
20
|
+
@user = informations[1]["user"]
|
21
|
+
@realname = informations[2]["realname"]
|
22
|
+
@channels = channels
|
23
|
+
end
|
24
|
+
|
25
|
+
def go
|
26
|
+
|
27
|
+
@irc.connect(server, port)
|
28
|
+
|
29
|
+
@irc.user(@user, @realname)
|
30
|
+
@irc.nick(@nick)
|
31
|
+
|
32
|
+
@irc.join(@channels)
|
33
|
+
|
34
|
+
@irc.listen
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
data/lib/april/module.rb
ADDED
File without changes
|
File without changes
|
data/lib/april/parser.rb
ADDED
data/lib/april/socket.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
lib = File.dirname(__FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
|
4
|
+
module APRIL
|
5
|
+
|
6
|
+
class Socket
|
7
|
+
include APRIL::PARSER
|
8
|
+
|
9
|
+
attr_reader :server, :port, :socket
|
10
|
+
|
11
|
+
def connect(server, port)
|
12
|
+
@server = server
|
13
|
+
@port = port
|
14
|
+
|
15
|
+
@socket = TCPSocket.new(@server, @port)
|
16
|
+
end
|
17
|
+
|
18
|
+
def write(msg)
|
19
|
+
puts ">> #{msg}"
|
20
|
+
@socket.write "#{msg}\n"
|
21
|
+
end
|
22
|
+
|
23
|
+
def listen
|
24
|
+
until @socket.eof? do
|
25
|
+
puts "<< #{@socket.gets}"
|
26
|
+
self.handle (@socket.gets)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# Send NICK command
|
31
|
+
def nick(nick)
|
32
|
+
write("NICK #{nick}")
|
33
|
+
end
|
34
|
+
|
35
|
+
# Send USER command
|
36
|
+
def user(user, realname)
|
37
|
+
write("USER #{user} * * :#{realname}")
|
38
|
+
end
|
39
|
+
|
40
|
+
# Send JOIN command
|
41
|
+
def join(channels)
|
42
|
+
channels.each do |channel|
|
43
|
+
write("JOIN ##{channel}")
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
data/lib/april/utils.rb
ADDED
metadata
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: april
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
version: 0.0.0
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- fyskij
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-05-05 00:00:00 +02:00
|
18
|
+
default_executable:
|
19
|
+
dependencies: []
|
20
|
+
|
21
|
+
description: IRC Client Library
|
22
|
+
email: fyskij@gmail.com
|
23
|
+
executables:
|
24
|
+
- bot
|
25
|
+
extensions: []
|
26
|
+
|
27
|
+
extra_rdoc_files: []
|
28
|
+
|
29
|
+
files:
|
30
|
+
- README.markdown
|
31
|
+
- HISTORY.markdown
|
32
|
+
- lib/april/client.rb
|
33
|
+
- lib/april/modules/Logger.rb
|
34
|
+
- lib/april/utils.rb
|
35
|
+
- lib/april/parser.rb
|
36
|
+
- lib/april/module.rb
|
37
|
+
- lib/april/socket.rb
|
38
|
+
- lib/april.rb
|
39
|
+
- etc/april.conf
|
40
|
+
has_rdoc: true
|
41
|
+
homepage: http://github.com/fyskij/april
|
42
|
+
licenses: []
|
43
|
+
|
44
|
+
post_install_message:
|
45
|
+
rdoc_options: []
|
46
|
+
|
47
|
+
require_paths:
|
48
|
+
- lib
|
49
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
segments:
|
54
|
+
- 0
|
55
|
+
version: "0"
|
56
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
segments:
|
61
|
+
- 0
|
62
|
+
version: "0"
|
63
|
+
requirements: []
|
64
|
+
|
65
|
+
rubyforge_project:
|
66
|
+
rubygems_version: 1.3.6
|
67
|
+
signing_key:
|
68
|
+
specification_version: 3
|
69
|
+
summary: IRC Client Library
|
70
|
+
test_files: []
|
71
|
+
|