public
Description: Direct Connect bot written in Ruby
Clone URL: git://github.com/kballard/dcbot.git
Add primitive !search functionality for requests
kballard (author)
Sun Feb 24 13:48:44 -0800 2008
commit  1e79b5085fe881057b6da57ddddec0a8a2c7e5cc
tree    70caddede3e874914a8bf4aa9d36cfb4d60a7b8c
parent  4b762becd96c2954f57878cd9579b5f55bacf211
...
49
50
51
 
 
 
 
 
 
 
 
 
 
52
53
54
55
56
57
58
59
60
...
77
78
79
80
81
82
83
84
85
86
 
87
88
89
90
91
 
92
93
94
...
259
260
261
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
262
...
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
 
67
68
69
...
86
87
88
 
89
 
 
 
 
 
90
91
 
 
 
 
92
93
94
95
...
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
0
@@ -49,12 +49,21 @@ Request.table_name = "requests" # do this because of the anonymous module crap
0
 
0
 class RequestPlugin < PluginBase
0
   TIME_FORMAT = "%a %b %d %H:%M:%S %Z %Y"
0
+
0
+ def self.send_request_list(hub, user, requests)
0
+ format = " #%-4d \"%s\" by %s - %s"
0
+ requests.each do |request|
0
+ message = format % [request.id, request.request, request.submitter, request.created_at.strftime(TIME_FORMAT)]
0
+ message << " - claimed by #{request.claimer}" if request.claimer
0
+ hub.sendPrivateMessage(user, message)
0
+ end
0
+ end
0
+
0
   # !request
0
   def self.cmd_request(socket, sender, isprivate, args)
0
     args.strip!
0
     if args.blank? then
0
       HelpPlugin.send_usage(socket, sender, "request")
0
- arghelp, desc = cmd_request_help
0
     else
0
       request = Request.new(:request => args, :submitter => sender)
0
       request.save!
0
@@ -77,18 +86,10 @@ class RequestPlugin < PluginBase
0
     else
0
       claimedRequests = openRequests.select { |req| req.claimer? }
0
       unclaimedRequests = openRequests.reject { |req| req.claimer? }
0
- format = " #%-4d \"%s\" by %s - %s"
0
       socket.sendPrivateMessage(sender, "Claimed requests:") unless claimedRequests.blank?
0
- claimedRequests.each do |request|
0
- message = format % [request.id, request.request, request.submitter, request.created_at.strftime(TIME_FORMAT)]
0
- message << " - claimed by #{request.claimer}"
0
- socket.sendPrivateMessage(sender, message)
0
- end
0
+ send_request_list socket, sender, claimedRequests
0
       socket.sendPrivateMessage(sender, "Unclaimed requests:") unless unclaimedRequests.blank?
0
- unclaimedRequests.each do |request|
0
- message = format % [request.id, request.request, request.submitter, request.created_at.strftime(TIME_FORMAT)]
0
- socket.sendPrivateMessage(sender, message)
0
- end
0
+ send_request_list socket, sender, unclaimedRequests
0
     end
0
   end
0
   
0
@@ -259,4 +260,22 @@ class RequestPlugin < PluginBase
0
   def self.cmd_delete_help
0
     ["RequestNum", "Deletes a request you submitted. ex. #{CMD_PREFIX}delete 12"]
0
   end
0
+
0
+ def self.cmd_search(hub, sender, isprivate, args)
0
+ if args.blank? then
0
+ HelpPlugin.send_usage(hub, sender, "search")
0
+ else
0
+ requests = Request.find(:all, :conditions => ["filled_at IS NULL and request LIKE ?", "%#{args}%"])
0
+ if requests.blank? then
0
+ hub.sendPrivateMessage(sender, "No requests matched your query")
0
+ else
0
+ hub.sendPrivateMessage(sender, "Matched requests:")
0
+ send_request_list hub, sender, requests
0
+ end
0
+ end
0
+ end
0
+
0
+ def self.cmd_search_help
0
+ ["SearchString", "Searches all requests for those matching SearchString"]
0
+ end
0
 end

Comments

    No one has commented yet.