summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Hecker <36882671+mattzque@users.noreply.github.com>2020-03-27 20:58:27 +0100
committerGitHub <noreply@github.com>2020-03-27 20:58:27 +0100
commitb6db18c5467c1a161e3fcc39d82ad1b38e213c87 (patch)
treed14a83493271efdbcd75c499e4ceeee200da3ab0
parent1ebaeb69079f8c6b07423201ce83f996ecff7b01 (diff)
parentbc7efe2d4b360da0276287e6cc7f6a401609c162 (diff)
Merge pull request #4 from ahpook/rename_karma
Rename and improve karma plugin
-rw-r--r--data/rbot/plugins/excuse.rb2
-rw-r--r--data/rbot/plugins/points.rb (renamed from data/rbot/plugins/karma.rb)64
-rw-r--r--lib/rbot/messagemapper.rb12
-rw-r--r--lib/rbot/plugins.rb22
-rw-r--r--po/en/rbot-points.po (renamed from po/en/rbot-karma.po)0
-rw-r--r--po/fi/rbot-points.po (renamed from po/fi/rbot-karma.po)0
-rw-r--r--po/fr/rbot-points.po (renamed from po/fr/rbot-karma.po)0
-rw-r--r--po/it/rbot-points.po (renamed from po/it/rbot-karma.po)0
-rw-r--r--po/ja/rbot-points.po (renamed from po/ja/rbot-karma.po)0
-rw-r--r--po/rbot-points.pot (renamed from po/rbot-karma.pot)0
-rw-r--r--po/zh_CN/rbot-points.po (renamed from po/zh_CN/rbot-karma.po)0
-rw-r--r--po/zh_TW/rbot-points.po (renamed from po/zh_TW/rbot-karma.po)0
12 files changed, 57 insertions, 43 deletions
diff --git a/data/rbot/plugins/excuse.rb b/data/rbot/plugins/excuse.rb
index ad0e8334..61f38bd6 100644
--- a/data/rbot/plugins/excuse.rb
+++ b/data/rbot/plugins/excuse.rb
@@ -387,7 +387,7 @@ class ExcusePlugin < Plugin
"Dyslexics retyping hosts file on servers",
"The Internet is being scanned for viruses.",
"Your computer's union contract is set to expire at midnight.",
-"Bad user karma.",
+"Bad reputation.",
"/dev/clue was linked to /dev/null",
"Increased sunspot activity.",
"We already sent around a notice about that.",
diff --git a/data/rbot/plugins/karma.rb b/data/rbot/plugins/points.rb
index 93d21189..21157f3d 100644
--- a/data/rbot/plugins/karma.rb
+++ b/data/rbot/plugins/points.rb
@@ -1,4 +1,4 @@
-class KarmaPlugin < Plugin
+class PointsPlugin < Plugin
def initialize
super
@@ -14,50 +14,62 @@ class KarmaPlugin < Plugin
@registry.set_default(0)
# import if old file format found
- oldkarma = @bot.path 'karma.rbot'
- if File.exist? oldkarma
- log "importing old karma data"
- IO.foreach(oldkarma) do |line|
+ oldpoints = @bot.path 'points.rbot'
+ if File.exist? oldpoints
+ log "importing old points data"
+ IO.foreach(oldpoints) do |line|
if(line =~ /^(\S+)<=>([\d-]+)$/)
item = $1
- karma = $2.to_i
- @registry[item] = karma
+ points = $2.to_i
+ @registry[item] = points
end
end
- File.delete oldkarma
+ File.delete oldpoints
end
end
def stats(m, params)
if (@registry.length)
- max = @registry.values.max
- min = @registry.values.min
- best = @registry.to_hash.index(max)
- worst = @registry.to_hash.index(min)
+ max = @registry.values.max || "zero"
+ min = @registry.values.min || "zero"
+ best = @registry.to_hash.key(max) || "nobody"
+ worst = @registry.to_hash.key(min) || "nobody"
m.reply "#{@registry.length} items. Best: #{best} (#{max}); Worst: #{worst} (#{min})"
end
end
- def karma(m, params)
+ def dump(m, params)
+ if (@registry.length)
+ msg = "Points dump: "
+ msg << @registry.to_hash.sort_by { |k, v| v }.reverse.
+ map { |k,v| "#{k}: #{v}" }.
+ join(", ")
+ m.reply msg
+ else
+ m.reply "nobody has any points yet!"
+ end
+ end
+
+ def points(m, params)
thing = params[:key]
thing = m.sourcenick unless thing
thing = thing.to_s
- karma = @registry[thing]
- if(karma != 0)
- m.reply "karma for #{thing}: #{@registry[thing]}"
+ points = @registry[thing]
+ if(points != 0)
+ m.reply "points for #{thing}: #{@registry[thing]}"
else
- m.reply "#{thing} has neutral karma"
+ m.reply "#{thing} has zero points"
end
end
- def setkarma(m, params)
+ def setpoints(m, params)
thing = (params[:key] || m.sourcenick).to_s
@registry[thing] = params[:val].to_i
- karma(m, params)
+ points(m, params)
end
def help(plugin, topic="")
- "karma module: Listens to everyone's chat. <thing>++/<thing>-- => increase/decrease karma for <thing>, karma for <thing>? => show karma for <thing>, karmastats => show stats. Karma is a community rating system - only in-channel messages can affect karma and you cannot adjust your own."
+ "points module: Keeps track of internet points, infusing your pointless life with meaning. Listens to everyone's chat. <thing>++/<thing>-- => increase/decrease points for <thing>, points for <thing>? => show points for <thing>, pointstats => show best/worst, pointsdump => show everyone's points. Points are a community rating system - only in-channel messages can affect points and you cannot adjust your own."
end
def message(m)
@@ -96,15 +108,17 @@ class KarmaPlugin < Plugin
next if v == 0
@registry[k] += (v > 0 ? 1 : -1)
m.reply @bot.lang.get("thanks") if k == @bot.nick && v > 0
+ m.reply "#{k} now has #{@registry[k]} points!"
end
end
end
-plugin = KarmaPlugin.new
+plugin = PointsPlugin.new
plugin.default_auth( 'edit', false )
-plugin.map 'karmastats', :action => 'stats'
-plugin.map 'karma :key', :defaults => {:key => false}
-plugin.map 'setkarma :key :val', :defaults => {:key => false}, :requirements => {:val => /^-?\d+$/}, :auth_path => 'edit::set!'
-plugin.map 'karma for :key'
+plugin.map 'pointstats', :action => 'stats'
+plugin.map 'points :key', :defaults => {:key => false}
+plugin.map 'setpoints :key :val', :defaults => {:key => false}, :requirements => {:val => /^-?\d+$/}, :auth_path => 'edit::set!'
+plugin.map 'points for :key'
+plugin.map 'pointsdump', :action => 'dump'
diff --git a/lib/rbot/messagemapper.rb b/lib/rbot/messagemapper.rb
index 3e877626..3966bc17 100644
--- a/lib/rbot/messagemapper.rb
+++ b/lib/rbot/messagemapper.rb
@@ -199,12 +199,12 @@ class Bot
#
# Further examples:
#
- # # match 'karmastats' and call my stats() method
- # plugin.map 'karmastats', :action => 'stats'
- # # match 'karma' with an optional 'key' and call my karma() method
- # plugin.map 'karma :key', :defaults => {:key => false}
- # # match 'karma for something' and call my karma() method
- # plugin.map 'karma for :key'
+ # # match 'pointstats' and call my stats() method
+ # plugin.map 'pointstats', :action => 'stats'
+ # # match 'points' with an optional 'key' and call my points() method
+ # plugin.map 'points :key', :defaults => {:key => false}
+ # # match 'points for something' and call my points() method
+ # plugin.map 'points for :key'
#
# # two matches, one for public messages in a channel, one for
# # private messages which therefore require a channel argument
diff --git a/lib/rbot/plugins.rb b/lib/rbot/plugins.rb
index 3b01509b..8621fe45 100644
--- a/lib/rbot/plugins.rb
+++ b/lib/rbot/plugins.rb
@@ -38,36 +38,36 @@ module Plugins
Examples:
- plugin.map 'karmastats', :action => 'karma_stats'
+ plugin.map 'pointstats', :action => 'point_stats'
# while in the plugin...
- def karma_stats(m, params)
+ def point_stats(m, params)
m.reply "..."
end
# the default action is the first component
- plugin.map 'karma'
+ plugin.map 'points'
# attributes can be pulled out of the match string
- plugin.map 'karma for :key'
- plugin.map 'karma :key'
+ plugin.map 'points for :key'
+ plugin.map 'points :key'
# while in the plugin...
- def karma(m, params)
+ def points(m, params)
item = params[:key]
- m.reply 'karma for #{item}'
+ m.reply 'points for #{item}'
end
# you can setup defaults, to make parameters optional
- plugin.map 'karma :key', :defaults => {:key => 'defaultvalue'}
+ plugin.map 'points :key', :defaults => {:key => 'defaultvalue'}
# the default auth check is also against the first component
# but that can be changed
- plugin.map 'karmastats', :auth => 'karma'
+ plugin.map 'pointstats', :auth => 'points'
# maps can be restricted to public or private message:
- plugin.map 'karmastats', :private => false
- plugin.map 'karmastats', :public => false
+ plugin.map 'pointstats', :private => false
+ plugin.map 'pointstats', :public => false
See MessageMapper#map for more information on the template format and the
allowed options.
diff --git a/po/en/rbot-karma.po b/po/en/rbot-points.po
index e69de29b..e69de29b 100644
--- a/po/en/rbot-karma.po
+++ b/po/en/rbot-points.po
diff --git a/po/fi/rbot-karma.po b/po/fi/rbot-points.po
index e69de29b..e69de29b 100644
--- a/po/fi/rbot-karma.po
+++ b/po/fi/rbot-points.po
diff --git a/po/fr/rbot-karma.po b/po/fr/rbot-points.po
index e69de29b..e69de29b 100644
--- a/po/fr/rbot-karma.po
+++ b/po/fr/rbot-points.po
diff --git a/po/it/rbot-karma.po b/po/it/rbot-points.po
index e69de29b..e69de29b 100644
--- a/po/it/rbot-karma.po
+++ b/po/it/rbot-points.po
diff --git a/po/ja/rbot-karma.po b/po/ja/rbot-points.po
index e69de29b..e69de29b 100644
--- a/po/ja/rbot-karma.po
+++ b/po/ja/rbot-points.po
diff --git a/po/rbot-karma.pot b/po/rbot-points.pot
index e69de29b..e69de29b 100644
--- a/po/rbot-karma.pot
+++ b/po/rbot-points.pot
diff --git a/po/zh_CN/rbot-karma.po b/po/zh_CN/rbot-points.po
index e69de29b..e69de29b 100644
--- a/po/zh_CN/rbot-karma.po
+++ b/po/zh_CN/rbot-points.po
diff --git a/po/zh_TW/rbot-karma.po b/po/zh_TW/rbot-points.po
index e69de29b..e69de29b 100644
--- a/po/zh_TW/rbot-karma.po
+++ b/po/zh_TW/rbot-points.po