Class: CeilingCat::Plugin::CallAndResponse
- Inherits:
-
Base
- Object
- Base
- CeilingCat::Plugin::CallAndResponse
show all
- Defined in:
- lib/ceiling_cat/plugins/call_and_response.rb
Instance Attribute Summary
Attributes inherited from Base
#event
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Base
#body, #body_without_command, #body_without_nick, #body_without_nick_or_command, #commands, #initialize, #pluralize, #reply, #room, #store, store, #user, #words
Class Method Details
.add(opts = {}) ⇒ Object
77
78
79
80
81
|
# File 'lib/ceiling_cat/plugins/call_and_response.rb', line 77
def self.add(opts={})
return false unless opts[:call] && opts[:response]
store["call_and_responses"] ||= []
store["call_and_responses"] = (store["call_and_responses"] + [{:call => opts[:call], :response => opts[:response], :frequency => opts[:frequency]}]).uniq
end
|
.commands ⇒ Object
17
18
19
20
21
22
|
# File 'lib/ceiling_cat/plugins/call_and_response.rb', line 17
def self.commands
[{:command => "list calls", :description => "List current calls and their responses", :method => "list"},
{:command => "add call", :description => "Add a response to display when a phrase is said, split by a | - '!add call I see what you did there... | You caught me! | Oh no I'm busted!'", :method => "add"},
{:command => "add random call", :description => "Add a response to display a phrase X of every 10 times, split by a | - '!add random call 5 I see what you did there... | You caught me! | Oh no I'm busted!'", :method => "add_random"},
{:command => "remove call", :description => "Remove a call and response by call '!remove call I see what you did there...'", :method => "remove"}]
end
|
.description ⇒ Object
24
25
26
|
# File 'lib/ceiling_cat/plugins/call_and_response.rb', line 24
def self.description
"Watches for certain phrases and inserts a relevant image"
end
|
.list ⇒ Object
73
74
75
|
# File 'lib/ceiling_cat/plugins/call_and_response.rb', line 73
def self.list
store["call_and_responses"] ||= []
end
|
.name ⇒ Object
28
29
30
|
# File 'lib/ceiling_cat/plugins/call_and_response.rb', line 28
def self.name
"Call and Response"
end
|
.public? ⇒ Boolean
32
33
34
|
# File 'lib/ceiling_cat/plugins/call_and_response.rb', line 32
def self.public?
false
end
|
.remove(call) ⇒ Object
83
84
85
86
|
# File 'lib/ceiling_cat/plugins/call_and_response.rb', line 83
def self.remove(call)
store["call_and_responses"] ||= []
store["call_and_responses"] = store["call_and_responses"].reject{|car| car[:call].downcase == call.downcase }
end
|
Instance Method Details
#add ⇒ Object
48
49
50
51
52
53
54
55
56
|
# File 'lib/ceiling_cat/plugins/call_and_response.rb', line 48
def add
message = body_without_nick_or_command("add call")
call, *response = message.split("|")
if self.class.add(:call => call.strip,:response => response.map(&:strip))
reply "Call and Response added."
else
reply "Unable to add that call. A call and a response are required, split by a | - '!add call When someone says this | I say this | or this'"
end
end
|
#add_random ⇒ Object
58
59
60
61
62
63
64
65
66
|
# File 'lib/ceiling_cat/plugins/call_and_response.rb', line 58
def add_random
message = body_without_nick_or_command("add random call")
x, frequency, call, *response = message.split(/(\d)\s+([^|]+)\|\s+(.+)/)
if self.class.add(:call => call.strip,:response => response.map(&:strip), :frequency => frequency.to_i)
reply "Call and Response added."
else
reply "Unable to add that call. A frequency, call, and response are required, split by a | - '!add random call 5 When someone says this | I say this | or this'"
end
end
|
#handle ⇒ Object
4
5
6
7
8
9
10
11
12
13
14
15
|
# File 'lib/ceiling_cat/plugins/call_and_response.rb', line 4
def handle
if !super && event.type == :chat
if match = self.class.list.find{|car| body =~ Regexp.new(car[:call],true) }
frequency = match[:frequency] || 1
if Kernel.rand(frequency)+1 == frequency
response = [match[:response]].flatten reply response[Kernel.rand(response.size)]
end
return nil
end
end
end
|
#list ⇒ Object
36
37
38
39
40
41
42
43
44
45
46
|
# File 'lib/ceiling_cat/plugins/call_and_response.rb', line 36
def list
messages = []
store["call_and_responses"] ||= []
if store["call_and_responses"].size > 0
messages << "Current Calls and Responses"
messages += store["call_and_responses"].collect{|car| "-- #{car[:call]} | #{[car[:response]].flatten.join(" | ")}"} else
messages << "There are no call and responses set up yet! You should add one with '!add call When someone says this | I say this | or this'"
end
reply messages
end
|
#remove ⇒ Object
68
69
70
71
|
# File 'lib/ceiling_cat/plugins/call_and_response.rb', line 68
def remove
self.class.remove(body_without_nick_or_command("remove call"))
reply "Call removed."
end
|