ceiling_cat 0.1.3 → 0.1.4
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/lib/ceiling_cat/connection.rb +5 -5
- data/lib/ceiling_cat/errors.rb +5 -10
- data/lib/ceiling_cat/event.rb +4 -5
- data/lib/ceiling_cat/plugins/about.rb +2 -2
- data/lib/ceiling_cat/plugins/base.rb +6 -5
- data/lib/ceiling_cat/plugins/calc.rb +5 -5
- data/lib/ceiling_cat/plugins/call_and_response.rb +1 -3
- data/lib/ceiling_cat/plugins/campfire_account_monitor.rb +1 -2
- data/lib/ceiling_cat/plugins/days.rb +9 -9
- data/lib/ceiling_cat/plugins/greeter.rb +2 -2
- data/lib/ceiling_cat/plugins/messages.rb +76 -0
- data/lib/ceiling_cat/plugins/notifo.rb +23 -11
- data/lib/ceiling_cat/plugins/twss.rb +29 -0
- data/lib/ceiling_cat/services/campfire/connection.rb +1 -1
- data/lib/ceiling_cat/services/campfire/event.rb +2 -2
- data/lib/ceiling_cat/services/irc/event.rb +2 -2
- data/lib/ceiling_cat/services/irc/room.rb +6 -6
- data/lib/ceiling_cat/setup.rb +6 -6
- data/lib/ceiling_cat/storage/yaml.rb +1 -1
- data/lib/ceiling_cat/user.rb +2 -2
- data/lib/ceiling_cat/version.rb +1 -1
- data/setup/Chatfile +2 -2
- metadata +44 -26
@@ -1,19 +1,19 @@
|
|
1
1
|
module CeilingCat
|
2
2
|
class Connection
|
3
3
|
attr_accessor :config
|
4
|
-
|
4
|
+
|
5
5
|
def initialize(config)
|
6
|
-
@config=config
|
6
|
+
@config = config
|
7
7
|
@config.storage ||= CeilingCat::Storage::Hash
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
def plugins
|
11
11
|
self.config.plugins
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
def storage
|
15
15
|
self.config.storage
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
end
|
19
19
|
end
|
data/lib/ceiling_cat/errors.rb
CHANGED
@@ -1,17 +1,12 @@
|
|
1
1
|
module CeilingCat
|
2
|
-
class Error < StandardError
|
2
|
+
class Error < StandardError; end
|
3
3
|
|
4
|
-
def initialize(message)
|
5
|
-
super message
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
4
|
# Gem Specific Errors
|
10
|
-
class CeilingCatError <
|
11
|
-
|
5
|
+
class CeilingCatError < CeilingCat::Error; end
|
6
|
+
|
12
7
|
class UnsupportedChatServiceError < CeilingCatError; end
|
13
|
-
|
8
|
+
|
14
9
|
class NotImplementedError < CeilingCatError; end
|
15
|
-
|
10
|
+
|
16
11
|
class ReloadException < CeilingCatError; end
|
17
12
|
end
|
data/lib/ceiling_cat/event.rb
CHANGED
@@ -2,17 +2,16 @@ module CeilingCat
|
|
2
2
|
class Event
|
3
3
|
attr_accessor :room, :body, :user, :type, :time
|
4
4
|
|
5
|
-
def initialize(room, body,user,opts={})
|
5
|
+
def initialize(room, body, user, opts={})
|
6
6
|
@room = room
|
7
7
|
@body = body.to_s.strip
|
8
8
|
@user = user
|
9
9
|
@type = opts[:type]
|
10
10
|
@time = opts[:time] || Time.now
|
11
11
|
end
|
12
|
-
|
13
|
-
def handle
|
12
|
+
|
13
|
+
def handle
|
14
14
|
@room.plugins.each do |plugin|
|
15
|
-
puts "running #{plugin}"
|
16
15
|
begin
|
17
16
|
response = plugin.new(self).handle
|
18
17
|
break if response.present?
|
@@ -21,7 +20,7 @@ module CeilingCat
|
|
21
20
|
end
|
22
21
|
end
|
23
22
|
end
|
24
|
-
|
23
|
+
|
25
24
|
def type # assume that all messages are just text unless the specific room type overrides it.
|
26
25
|
@type || :chat
|
27
26
|
end
|
@@ -29,7 +29,7 @@ module CeilingCat
|
|
29
29
|
messages << "Run commands with '![command]' or '#{room.me.name}: [command]'"
|
30
30
|
reply messages
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
def list_users
|
34
34
|
members = room.users_in_room(:type => "member")
|
35
35
|
if members.size > 0
|
@@ -38,7 +38,7 @@ module CeilingCat
|
|
38
38
|
reply "There are no registered users in the room at this time."
|
39
39
|
end
|
40
40
|
end
|
41
|
-
|
41
|
+
|
42
42
|
def list_guests
|
43
43
|
guests = room.users_in_room(:type => "guest")
|
44
44
|
if guests.size > 0
|
@@ -12,6 +12,7 @@ module CeilingCat
|
|
12
12
|
begin
|
13
13
|
if command[:public] || user.is_registered?
|
14
14
|
self.send command[:method]
|
15
|
+
return true
|
15
16
|
end
|
16
17
|
rescue => e
|
17
18
|
reply "There was an error: #{$!}"
|
@@ -47,11 +48,11 @@ module CeilingCat
|
|
47
48
|
def room
|
48
49
|
event.room
|
49
50
|
end
|
50
|
-
|
51
|
+
|
51
52
|
def store
|
52
53
|
self.class.store
|
53
54
|
end
|
54
|
-
|
55
|
+
|
55
56
|
def self.store
|
56
57
|
CeilingCat::Setup.config ? CeilingCat::Setup.config.storage : CeilingCat::Storage::Hash
|
57
58
|
end
|
@@ -67,7 +68,7 @@ module CeilingCat
|
|
67
68
|
def reply(message)
|
68
69
|
room.say(message)
|
69
70
|
end
|
70
|
-
|
71
|
+
|
71
72
|
def words
|
72
73
|
body.split
|
73
74
|
end
|
@@ -79,11 +80,11 @@ module CeilingCat
|
|
79
80
|
def body_without_nick(text=body)
|
80
81
|
text.sub(/^#{room.me.name}:?\s*/i,'').strip
|
81
82
|
end
|
82
|
-
|
83
|
+
|
83
84
|
def body_without_nick_or_command(command,text=body)
|
84
85
|
body_without_command(command, body_without_nick(text).sub(/^#{command}/i,"!#{command}"))
|
85
86
|
end
|
86
|
-
|
87
|
+
|
87
88
|
def pluralize(n, singular, plural=nil)
|
88
89
|
if n == 1
|
89
90
|
"#{singular}"
|
@@ -1,22 +1,22 @@
|
|
1
1
|
module CeilingCat
|
2
2
|
module Plugin
|
3
|
-
class Calc < CeilingCat::Plugin::Base
|
3
|
+
class Calc < CeilingCat::Plugin::Base
|
4
4
|
def self.commands
|
5
5
|
[{:command => "calculate", :description => "Performs basic math functions - '!calculate 7*5'", :method => "calculate", :public => true}]
|
6
6
|
end
|
7
|
-
|
7
|
+
|
8
8
|
def self.description
|
9
9
|
"A basic calculator, for all your mathin' needs!"
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
def self.name
|
13
13
|
"Calculator"
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
def self.public?
|
17
17
|
true
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
def calculate
|
21
21
|
begin
|
22
22
|
math = body.gsub(/[^\d+-\/*\(\)\.]/,"") # Removing anything but numbers, operators, and parens
|
@@ -2,15 +2,13 @@ module CeilingCat
|
|
2
2
|
module Plugin
|
3
3
|
class CallAndResponse < CeilingCat::Plugin::Base
|
4
4
|
def handle
|
5
|
-
if event.type == :chat
|
5
|
+
if !super && event.type == :chat
|
6
6
|
if match = self.class.list.find{|car| body =~ Regexp.new(car[:call],true) }
|
7
7
|
response = [match[:response]].flatten # Support old responses which are strings, not arrays
|
8
8
|
reply response[Kernel.rand(response.size)]
|
9
9
|
return nil
|
10
10
|
end
|
11
|
-
super
|
12
11
|
end
|
13
|
-
|
14
12
|
end
|
15
13
|
|
16
14
|
def self.commands
|
@@ -13,7 +13,7 @@ module CeilingCat
|
|
13
13
|
user_count = room.connection.total_user_count
|
14
14
|
max_users = room.connection.config.max_users || 100
|
15
15
|
if room.plugin_installed?("notifo") && user_count > max_users-2
|
16
|
-
room.plugin("notifo").new(@event).deliver("#{user_count} of #{max_users} max connections to Campfire.")
|
16
|
+
room.plugin("notifo").new(@event).deliver("#{user_count} of #{max_users} max connections to Campfire.")
|
17
17
|
end
|
18
18
|
end
|
19
19
|
super
|
@@ -45,4 +45,3 @@ module CeilingCat
|
|
45
45
|
end
|
46
46
|
end
|
47
47
|
end
|
48
|
-
|
@@ -7,7 +7,7 @@ module CeilingCat
|
|
7
7
|
[{:command => "today", :description => "Find out if there's anything special about today.", :method => "about", :public => true},
|
8
8
|
{:command => "add holiday", :description => "Add a holiday - '!add holiday 1/19/2011'", :method => "add_to_holidays"}]
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
def about(date=Date.today)
|
12
12
|
begin
|
13
13
|
if self.class.is_a_holiday?(date)
|
@@ -21,11 +21,11 @@ module CeilingCat
|
|
21
21
|
reply "Sorry, that's not a valid date."
|
22
22
|
end
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
def self.description
|
26
26
|
"Holidays and times you shouldn't expect to see us in chat."
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
def add_to_holidays
|
30
30
|
date = body_without_command("add holiday")
|
31
31
|
if date.empty?
|
@@ -39,7 +39,7 @@ module CeilingCat
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
end
|
42
|
-
|
42
|
+
|
43
43
|
def self.is_a_weekend?(date=Date.today)
|
44
44
|
if is_a_date?(date)
|
45
45
|
date = Date.parse(date.to_s)
|
@@ -48,11 +48,11 @@ module CeilingCat
|
|
48
48
|
raise NotADateError
|
49
49
|
end
|
50
50
|
end
|
51
|
-
|
51
|
+
|
52
52
|
def self.holidays
|
53
53
|
store["holidays"] ||= []
|
54
54
|
end
|
55
|
-
|
55
|
+
|
56
56
|
def self.add_to_holidays(days)
|
57
57
|
dates = Array(days).collect do |day|
|
58
58
|
if is_a_date?(day)
|
@@ -73,10 +73,10 @@ module CeilingCat
|
|
73
73
|
raise NotADateError
|
74
74
|
end
|
75
75
|
end
|
76
|
-
|
76
|
+
|
77
77
|
store["holidays"] = holidays - dates
|
78
78
|
end
|
79
|
-
|
79
|
+
|
80
80
|
def self.is_a_holiday?(date=Date.today)
|
81
81
|
if is_a_date?(date)
|
82
82
|
holidays.include? Date.parse(date.to_s)
|
@@ -84,7 +84,7 @@ module CeilingCat
|
|
84
84
|
raise NotADateError
|
85
85
|
end
|
86
86
|
end
|
87
|
-
|
87
|
+
|
88
88
|
def self.is_a_date?(date_string)
|
89
89
|
begin
|
90
90
|
return true if Date.parse(date_string.to_s)
|
@@ -0,0 +1,76 @@
|
|
1
|
+
module CeilingCat
|
2
|
+
module Plugin
|
3
|
+
class Messages < CeilingCat::Plugin::Base
|
4
|
+
# See lib/ceiling_cat/plugins/base.rb for the methods available by default.
|
5
|
+
# Plugins are run in the order they are listed in the Chatfile.
|
6
|
+
# When a plugin returns anything other than nil the plugin execution chain is halted.
|
7
|
+
# If you want your plugin to do something but let the remaining plugins execute, return nil at the end of your method.
|
8
|
+
|
9
|
+
# handle manages a plugin's entire interaction with an event.
|
10
|
+
# If you only want to execute commands - "![command]" - leave handle alone (or remove it and define commands below)
|
11
|
+
def handle
|
12
|
+
if event.type == :entrance
|
13
|
+
messages = []
|
14
|
+
messages_for_user = self.class.messages_for(user.name)
|
15
|
+
if messages_for_user.size > 0
|
16
|
+
messages << "Hey #{user.name}! I have a message to deliver to you:"
|
17
|
+
messages += messages_for_user.collect{|message| "From #{message[:from]}: #{message[:body]}"}
|
18
|
+
reply messages
|
19
|
+
end
|
20
|
+
self.class.remove(messages_for_user)
|
21
|
+
false
|
22
|
+
else
|
23
|
+
super
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# If you want the plugin to run when certain text is sent use commands instead of handle.
|
28
|
+
# Ceiling Cat will watch for "![command]" or "[name]: [command" and execute the method for that command.
|
29
|
+
def self.commands
|
30
|
+
[{:command => "message for", :description => "Leave a message for someone. i.e. '!message for John Doe: You forgot to lock the door after work last night.'", :method => "save_message", :public => true}]
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.description
|
34
|
+
"A plugin called Messages"
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.name
|
38
|
+
"Messages"
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.public?
|
42
|
+
false
|
43
|
+
end
|
44
|
+
|
45
|
+
def save_message
|
46
|
+
recipient,*body = body_without_nick_or_command("message for").split(":")
|
47
|
+
if room.users_in_room.any?{|user| user.name == recipient.strip}
|
48
|
+
reply "Why leave that messsage? #{recipient.strip} is here!"
|
49
|
+
else
|
50
|
+
self.class.add(:to => recipient.strip, :from => user.name, :body => body.join(":").strip)
|
51
|
+
reply "Message saved! I'll deliver it the next time #{recipient.strip} is around."
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.add(opts={})
|
56
|
+
return false unless opts[:to] && opts[:from] && opts[:body]
|
57
|
+
store["messages"] ||= []
|
58
|
+
store["messages"] = (store["messages"] + [{:to => opts[:to], :from => opts[:from], :body => opts[:body]}]).uniq
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.remove(*messages)
|
62
|
+
store["messages"] ||= []
|
63
|
+
store["messages"] = store["messages"].reject{ |message| messages.flatten.include?(message) }
|
64
|
+
end
|
65
|
+
|
66
|
+
def self.list
|
67
|
+
store["messages"] ||= []
|
68
|
+
end
|
69
|
+
|
70
|
+
def self.messages_for(name)
|
71
|
+
store["messages"] ||= []
|
72
|
+
store["messages"].find_all{ |message| message[:to].downcase == name.downcase }
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -1,34 +1,46 @@
|
|
1
1
|
require 'httparty'
|
2
2
|
|
3
3
|
module CeilingCat
|
4
|
+
class NotifoNotConfiguredError < CeilingCatError; end
|
5
|
+
|
4
6
|
module Plugin
|
5
7
|
class Notifo < CeilingCat::Plugin::Base
|
6
8
|
def self.commands
|
7
|
-
[{:command => "notifo", :description => "Send a message with Notifo - '!notifo Hey, get in here!'.", :method => "deliver"},
|
9
|
+
[{:command => "notifo", :description => "Send a message with Notifo - '!notifo user: Hey, get in here!'. 'user:' is optional, and will go to everyone if not passed.", :method => "deliver"},
|
8
10
|
{:command => "add notifo users", :description => "Add users to get Notifos - '!add notifo users username1 username2'.", :method => "add_users"},
|
9
11
|
{:command => "remove notifo users", :description => "Add users to get Notifos - '!remove notifo users username1 username2'.", :method => "remove_users"},
|
10
12
|
{:command => "list notifo users", :description => "List users who get Notifos - '!list notifo users'.", :method => "list_users"}]
|
11
13
|
end
|
12
14
|
|
13
|
-
def deliver(message=nil)
|
14
|
-
|
15
|
+
def deliver(message=nil,user=nil)
|
16
|
+
body_parts = body_without_nick_or_command("notifo").scan(/^((\w+):)?(.+)$/)[0]
|
17
|
+
message ||= body_parts[2].strip
|
18
|
+
user ||= body_parts[1]
|
19
|
+
|
20
|
+
users = user ? Array(user.strip) : Array(store["notifo_users"])
|
21
|
+
users.each do |user|
|
22
|
+
CeilingCat::Plugin::Notifo.deliver(user,message)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.deliver(user,message)
|
15
27
|
if active?
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
28
|
+
HTTParty.post("https://api.notifo.com/v1/send_notification",
|
29
|
+
:body => { :to => user, :msg => message },
|
30
|
+
:basic_auth => {:username => store["notifo_credentials"][:username], :password => store["notifo_credentials"][:api_secret]})
|
31
|
+
else
|
32
|
+
raise NotifoNotConfiguredError
|
21
33
|
end
|
22
34
|
end
|
23
35
|
|
24
36
|
def self.active?
|
25
|
-
if store["notifo_credentials"] && store["notifo_credentials"][:username].present? && store["notifo_credentials"][:api_secret].present?
|
37
|
+
if store["notifo_credentials"] && store["notifo_credentials"][:username].present? && store["notifo_credentials"][:api_secret].present?
|
26
38
|
true
|
27
39
|
else
|
28
40
|
false
|
29
41
|
end
|
30
42
|
end
|
31
|
-
|
43
|
+
|
32
44
|
def active?
|
33
45
|
self.class.active?
|
34
46
|
end
|
@@ -45,7 +57,7 @@ module CeilingCat
|
|
45
57
|
store["notifo_users"] ||= []
|
46
58
|
store["notifo_users"] = (Array(store["notifo_users"]) + Array(users)).uniq
|
47
59
|
end
|
48
|
-
|
60
|
+
|
49
61
|
def self.remove_users(users)
|
50
62
|
store["notifo_users"] ||= []
|
51
63
|
store["notifo_users"] = (Array(store["notifo_users"]) - Array(users)).uniq
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module CeilingCat
|
2
|
+
module Plugin
|
3
|
+
class TWSS < CeilingCat::Plugin::Base
|
4
|
+
RESPONSES = ["That's what she said!", "Uh, that's what she said!", "TWSS", "TWSS!"]
|
5
|
+
|
6
|
+
class << self; attr_accessor :threshold; end # add a class attr_accessor for the TWSS threshold
|
7
|
+
self.threshold = 0.5
|
8
|
+
|
9
|
+
def handle
|
10
|
+
TWSS.threshold = self.class.threshold
|
11
|
+
if event.type == :chat && TWSS(body)
|
12
|
+
reply RESPONSES[Kernel.rand(RESPONSES.size)]
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.description
|
17
|
+
"TWSS via Bayes classifier"
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.name
|
21
|
+
"TWSS"
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.public?
|
25
|
+
false
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -19,7 +19,7 @@ module CeilingCat
|
|
19
19
|
irc.nick config.nickname
|
20
20
|
irc.pass config.password if config.password.present?
|
21
21
|
irc.user config.nickname, "+B", "*", config.nickname
|
22
|
-
|
22
|
+
|
23
23
|
while line = irc.read
|
24
24
|
# Join a channel after MOTD
|
25
25
|
if line.split[1] == '376'
|
@@ -31,7 +31,7 @@ module CeilingCat
|
|
31
31
|
@ops_names << match[1] if match[2].include?("O")
|
32
32
|
@ops_names.uniq!
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
puts "Received: #{line}"
|
36
36
|
begin
|
37
37
|
if message = message_parts(line)
|
@@ -60,7 +60,7 @@ module CeilingCat
|
|
60
60
|
irc.privmsg config.room, line
|
61
61
|
end
|
62
62
|
end
|
63
|
-
|
63
|
+
|
64
64
|
def users_in_room(opts={})
|
65
65
|
@user_names.collect {|user_name|
|
66
66
|
user_name = user_name.sub(/^@/,"")
|
@@ -76,7 +76,7 @@ module CeilingCat
|
|
76
76
|
end
|
77
77
|
}.compact
|
78
78
|
end
|
79
|
-
|
79
|
+
|
80
80
|
def user_role(name)
|
81
81
|
if @ops_names.include?(name)
|
82
82
|
"member"
|
@@ -84,7 +84,7 @@ module CeilingCat
|
|
84
84
|
"guest"
|
85
85
|
end
|
86
86
|
end
|
87
|
-
|
87
|
+
|
88
88
|
def is_me?(user)
|
89
89
|
user.name == me.name
|
90
90
|
end
|
@@ -92,7 +92,7 @@ module CeilingCat
|
|
92
92
|
def me
|
93
93
|
@me ||= CeilingCat::User.new(config.nickname, :role => "member")
|
94
94
|
end
|
95
|
-
|
95
|
+
|
96
96
|
def message_parts(message)
|
97
97
|
if message =~ /\sPRIVMSG\s/
|
98
98
|
parts = message.match /^:(.+?)!(.+?)@(.+?)\sPRIVMSG\s(#.+):(.+)/i
|
data/lib/ceiling_cat/setup.rb
CHANGED
@@ -2,16 +2,16 @@ require 'ostruct'
|
|
2
2
|
|
3
3
|
module CeilingCat
|
4
4
|
class Setup
|
5
|
-
|
5
|
+
|
6
6
|
attr_accessor :config
|
7
|
-
|
7
|
+
|
8
8
|
class << self
|
9
9
|
# Class-level config. This is set by the +configure+ class method,
|
10
10
|
# and is used if no configuration is passed to the +initialize+
|
11
11
|
# method.
|
12
12
|
attr_accessor :config
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
# Configures the connection at the class level. When the +ceiling_cat+ bin
|
16
16
|
# file is loaded, it evals the file referenced by the first
|
17
17
|
# command-line parameter. This file can configure the connection
|
@@ -27,11 +27,11 @@ module CeilingCat
|
|
27
27
|
def config=(config)
|
28
28
|
@config = config.kind_of?(Hash) ? OpenStruct.new(config) : config
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
def initialize(_config = nil)
|
32
32
|
self.config = _config || self.class.config
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
def connect
|
36
36
|
case self.config.service.downcase
|
37
37
|
when 'campfire'
|
@@ -46,6 +46,6 @@ module CeilingCat
|
|
46
46
|
raise CeilingCat::UnsupportedChatServiceError.new("#{self.config.service} is not a supported chat service.")
|
47
47
|
end
|
48
48
|
end
|
49
|
-
|
49
|
+
|
50
50
|
end
|
51
51
|
end
|
data/lib/ceiling_cat/user.rb
CHANGED
data/lib/ceiling_cat/version.rb
CHANGED
data/setup/Chatfile
CHANGED
@@ -17,11 +17,11 @@ CeilingCat::Setup.configure do |config|
|
|
17
17
|
# config.nick = 'nickname'
|
18
18
|
# config.password = 'Q7Af6laDKza2SOM'
|
19
19
|
# config.room = '#my_room'
|
20
|
-
|
20
|
+
|
21
21
|
config.plugins = [CeilingCat::Plugin::About,
|
22
22
|
CeilingCat::Plugin::Greeter,
|
23
23
|
CeilingCat::Plugin::Calc]
|
24
|
-
|
24
|
+
|
25
25
|
# Some plugins require storage
|
26
26
|
CeilingCat::Storage::Yaml.file = "ceilingcat.yml"
|
27
27
|
config.storage = CeilingCat::Storage::Yaml
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ceiling_cat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 4
|
10
|
+
version: 0.1.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Chris Warren
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-09-
|
18
|
+
date: 2011-09-23 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: tinder
|
@@ -82,9 +82,25 @@ dependencies:
|
|
82
82
|
type: :runtime
|
83
83
|
version_requirements: *id004
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
|
-
name:
|
85
|
+
name: twss
|
86
86
|
prerelease: false
|
87
87
|
requirement: &id005 !ruby/object:Gem::Requirement
|
88
|
+
none: false
|
89
|
+
requirements:
|
90
|
+
- - ~>
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
hash: 21
|
93
|
+
segments:
|
94
|
+
- 0
|
95
|
+
- 0
|
96
|
+
- 5
|
97
|
+
version: 0.0.5
|
98
|
+
type: :runtime
|
99
|
+
version_requirements: *id005
|
100
|
+
- !ruby/object:Gem::Dependency
|
101
|
+
name: rspec
|
102
|
+
prerelease: false
|
103
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
88
104
|
none: false
|
89
105
|
requirements:
|
90
106
|
- - "="
|
@@ -96,11 +112,11 @@ dependencies:
|
|
96
112
|
- 0
|
97
113
|
version: 2.6.0
|
98
114
|
type: :development
|
99
|
-
version_requirements: *
|
115
|
+
version_requirements: *id006
|
100
116
|
- !ruby/object:Gem::Dependency
|
101
117
|
name: ruby-debug
|
102
118
|
prerelease: false
|
103
|
-
requirement: &
|
119
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
104
120
|
none: false
|
105
121
|
requirements:
|
106
122
|
- - ">="
|
@@ -110,11 +126,11 @@ dependencies:
|
|
110
126
|
- 0
|
111
127
|
version: "0"
|
112
128
|
type: :development
|
113
|
-
version_requirements: *
|
129
|
+
version_requirements: *id007
|
114
130
|
- !ruby/object:Gem::Dependency
|
115
131
|
name: fakeweb
|
116
132
|
prerelease: false
|
117
|
-
requirement: &
|
133
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
118
134
|
none: false
|
119
135
|
requirements:
|
120
136
|
- - ">="
|
@@ -124,8 +140,8 @@ dependencies:
|
|
124
140
|
- 0
|
125
141
|
version: "0"
|
126
142
|
type: :development
|
127
|
-
version_requirements: *
|
128
|
-
description: Ceiling Cat is watching you chat. A Campfire chat bot!
|
143
|
+
version_requirements: *id008
|
144
|
+
description: Ceiling Cat is watching you chat. A Campfire and IRC chat bot!
|
129
145
|
email:
|
130
146
|
- chris@zencoder.com
|
131
147
|
executables:
|
@@ -135,35 +151,37 @@ extensions: []
|
|
135
151
|
extra_rdoc_files: []
|
136
152
|
|
137
153
|
files:
|
138
|
-
- lib/ceiling_cat.rb
|
139
|
-
- lib/ceiling_cat/setup.rb
|
140
|
-
- lib/ceiling_cat/version.rb
|
141
154
|
- lib/ceiling_cat/connection.rb
|
142
155
|
- lib/ceiling_cat/errors.rb
|
143
156
|
- lib/ceiling_cat/event.rb
|
144
|
-
- lib/ceiling_cat/user.rb
|
145
|
-
- lib/ceiling_cat/room.rb
|
146
|
-
- lib/ceiling_cat/storage/base.rb
|
147
|
-
- setup/Chatfile
|
148
|
-
- setup/Rakefile
|
149
|
-
- lib/ceiling_cat/plugins/base.rb
|
150
157
|
- lib/ceiling_cat/plugins/about.rb
|
158
|
+
- lib/ceiling_cat/plugins/base.rb
|
151
159
|
- lib/ceiling_cat/plugins/calc.rb
|
152
160
|
- lib/ceiling_cat/plugins/call_and_response.rb
|
153
161
|
- lib/ceiling_cat/plugins/campfire_account_monitor.rb
|
154
162
|
- lib/ceiling_cat/plugins/days.rb
|
155
163
|
- lib/ceiling_cat/plugins/greeter.rb
|
164
|
+
- lib/ceiling_cat/plugins/messages.rb
|
156
165
|
- lib/ceiling_cat/plugins/notifo.rb
|
157
|
-
- lib/ceiling_cat/
|
158
|
-
- lib/ceiling_cat/
|
159
|
-
- lib/ceiling_cat/services/campfire.rb
|
166
|
+
- lib/ceiling_cat/plugins/twss.rb
|
167
|
+
- lib/ceiling_cat/room.rb
|
160
168
|
- lib/ceiling_cat/services/campfire/connection.rb
|
161
169
|
- lib/ceiling_cat/services/campfire/event.rb
|
162
170
|
- lib/ceiling_cat/services/campfire/room.rb
|
163
|
-
- lib/ceiling_cat/services/
|
171
|
+
- lib/ceiling_cat/services/campfire.rb
|
164
172
|
- lib/ceiling_cat/services/irc/connection.rb
|
165
173
|
- lib/ceiling_cat/services/irc/event.rb
|
166
174
|
- lib/ceiling_cat/services/irc/room.rb
|
175
|
+
- lib/ceiling_cat/services/irc.rb
|
176
|
+
- lib/ceiling_cat/setup.rb
|
177
|
+
- lib/ceiling_cat/storage/base.rb
|
178
|
+
- lib/ceiling_cat/storage/hash.rb
|
179
|
+
- lib/ceiling_cat/storage/yaml.rb
|
180
|
+
- lib/ceiling_cat/user.rb
|
181
|
+
- lib/ceiling_cat/version.rb
|
182
|
+
- lib/ceiling_cat.rb
|
183
|
+
- setup/Chatfile
|
184
|
+
- setup/Rakefile
|
167
185
|
- bin/ceiling_cat
|
168
186
|
homepage: http://zencoder.com
|
169
187
|
licenses: []
|
@@ -194,9 +212,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
194
212
|
requirements: []
|
195
213
|
|
196
214
|
rubyforge_project:
|
197
|
-
rubygems_version: 1.8.
|
215
|
+
rubygems_version: 1.8.8
|
198
216
|
signing_key:
|
199
217
|
specification_version: 3
|
200
|
-
summary: Ceiling Cat is watching you chat. A Campfire chat bot.
|
218
|
+
summary: Ceiling Cat is watching you chat. A Campfire and IRC chat bot.
|
201
219
|
test_files: []
|
202
220
|
|