1 # Author: Michael Brailsford <brailsmt@yahoo.com>
3 # Purpose: Provide for humorous larts and praises
4 # Copyright: 2002 Michael Brailsford. All rights reserved.
5 # License: This plugin is licensed under the BSD license. The terms of
8 # Redistribution and use in source and binary forms, with or without
9 # modification, are permitted provided that the following conditions
12 # 1. Redistributions of source code must retain the above copyright notice,
13 # this list of conditions and the following disclaimer.
15 # 2. Redistributions in binary form must reproduce the above copyright
16 # notice, this list of conditions and the following disclaimer in the
17 # documentation and/or other materials provided with the distribution.
19 class LartPlugin < Plugin
21 # Keep a 1:1 relation between commands and handlers
23 "lart" => "handle_lart",
24 "praise" => "handle_praise",
25 "addlart" => "handle_addlart",
26 "rmlart" => "handle_rmlart",
27 "addpraise" => "handle_addpraise",
28 "rmpraise" => "handle_rmpraise"
39 #read in the lart and praise files
40 if File.exists? "#{@bot.botclass}/lart/larts"
41 IO.foreach("#{@bot.botclass}/lart/larts") { |line|
45 if File.exists? "#{@bot.botclass}/lart/praises"
46 IO.foreach("#{@bot.botclass}/lart/praises") { |line|
47 @praises << line.chomp
56 Dir.mkdir("#{@bot.botclass}/lart") if not FileTest.directory? "#{@bot.botclass}/lart"
57 # TODO implement safe saving here too
58 File.open("#{@bot.botclass}/lart/larts", "w") { |file|
61 File.open("#{@bot.botclass}/lart/praises", "w") { |file|
68 m.reply "What a crazy fool! Did you mean |help stats?"
72 meth = self.method(@@handlers[m.plugin])
73 meth.call(m) if(@bot.auth.allow?(m.plugin, m.source, m.replyto))
76 def help(plugin, topic="")
77 "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."
80 # The following are command handler
83 for_idx = m.params =~ /\s+\bfor\b/
85 nick = m.params[0, for_idx]
89 lart = @larts[get_msg_idx(@larts.length)]
91 m.reply "I dunno any larts"
95 lart = replace_who lart, m.sourcenick
96 lart << " for trying to make me lart myself"
98 lart = replace_who lart, nick
99 lart << m.params[for_idx, m.params.length] if for_idx
102 @bot.action m.replyto, lart
106 for_idx = m.params =~ /\s+\bfor\b/
108 nick = m.params[0, for_idx]
112 praise = @praises[get_msg_idx(@praises.length)]
114 m.reply "I dunno any praises"
118 if nick == m.sourcenick
119 praise = @larts[get_msg_idx(@larts.length)]
120 praise = replace_who praise, nick
122 praise = replace_who praise, nick
123 praise << m.params.gsub("#{nick}", "")
126 @bot.action m.replyto, praise
129 def handle_addlart(m)
135 @larts.delete m.params
139 def handle_addpraise(m)
144 def handle_rmpraise(m)
145 @praises.delete m.params
149 # The following are utils for larts/praises
150 def replace_who(msg, nick)
151 msg.gsub(/<who>/i, "#{nick}")
159 plugin = LartPlugin.new
160 plugin.register("lart")
161 plugin.register("praise")
163 plugin.register("addlart")
164 plugin.register("addpraise")
166 plugin.register("rmlart")
167 plugin.register("rmpraise")