2 # Michael Brailsford <brailsmt@yahoo.com>
4 # Author: Giuseppe "Oblomov" Bilotta <giuseppe.bilotta@gmail.com>
5 # Purpose: Provide for humorous larts and praises
7 # 2002 Michael Brailsford. All rights reserved.
8 # Copyright: 2006 Giuseppe Bilotta. All rights reserved.
9 # License: This plugin is licensed under the BSD license. The terms of
12 # Redistribution and use in source and binary forms, with or without
13 # modification, are permitted provided that the following conditions
16 # 1. Redistributions of source code must retain the above copyright notice,
17 # this list of conditions and the following disclaimer.
19 # 2. Redistributions in binary form must reproduce the above copyright
20 # notice, this list of conditions and the following disclaimer in the
21 # documentation and/or other materials provided with the distribution.
23 class LartPlugin < Plugin
25 # Keep a 1:1 relation between commands and handlers
27 "lart" => "handle_lart",
28 "praise" => "handle_praise",
29 "addlart" => "handle_addlart",
30 "rmlart" => "handle_rmlart",
31 "addpraise" => "handle_addpraise",
32 "rmpraise" => "handle_rmpraise"
47 def set_language(lang)
49 @lartfile = "#{@bot.botclass}/lart/larts-#{lang}"
50 @praisefile = "#{@bot.botclass}/lart/praises-#{lang}"
53 if File.exists? @lartfile
54 IO.foreach(@lartfile) { |line|
58 if File.exists? @praisefile
59 IO.foreach(@praisefile) { |line|
60 @praises << line.chomp
69 return if @lartfile.nil? and @praisefile.nil?
70 Dir.mkdir("#{@bot.botclass}/lart") if not FileTest.directory? "#{@bot.botclass}/lart"
71 # TODO implement safe saving here too
72 Utils.safe_save(@lartfile) { |file|
75 Utils.safe_save(@praisefile) { |file|
82 m.reply "What a crazy fool! Did you mean |help stats?"
86 meth = self.method(@@handlers[m.plugin])
87 meth.call(m) if(@bot.auth.allow?(m.plugin, m.source, m.replyto))
90 def help(plugin, topic="")
91 "Lart: The lart plugin allows you to lart/praise someone in the channel. You can also add new larts and new praises as well as delete them. For the curious, LART is an acronym for Luser Attitude Readjustment Tool. Usage: lart <who> [<reason>] -- larts <who> for <reason>. praise <who> [<reason>] -- praises <who> for <reason>. [add|rm][lart|praise] -- Add or remove a lart or praise."
94 # The following are command handler
97 for_idx = m.params =~ /\s+\bfor\b/
99 nick = m.params[0, for_idx]
103 lart = @larts[get_msg_idx(@larts.length)]
105 m.reply "I dunno any larts"
109 lart = replace_who lart, m.sourcenick
110 lart << " for trying to make me lart myself"
112 lart = replace_who lart, nick
113 lart << m.params[for_idx, m.params.length] if for_idx
116 @bot.action m.replyto, lart
120 for_idx = m.params =~ /\s+\bfor\b/
122 nick = m.params[0, for_idx]
126 praise = @praises[get_msg_idx(@praises.length)]
128 m.reply "I dunno any praises"
132 if nick == m.sourcenick
133 praise = @larts[get_msg_idx(@larts.length)]
134 praise = replace_who praise, nick
136 praise = replace_who praise, nick
137 praise << m.params.gsub("#{nick}", "")
140 @bot.action m.replyto, praise
143 def handle_addlart(m)
149 @larts.delete m.params
153 def handle_addpraise(m)
158 def handle_rmpraise(m)
159 @praises.delete m.params
163 # The following are utils for larts/praises
164 def replace_who(msg, nick)
165 msg.gsub(/<who>/i, "#{nick}")
173 plugin = LartPlugin.new
174 plugin.register("lart")
175 plugin.register("praise")
177 plugin.register("addlart")
178 plugin.register("addpraise")
180 plugin.register("rmlart")
181 plugin.register("rmpraise")