diff options
author | David Vazgenovich Shakaryan <dvshakaryan@gmail.com> | 2014-04-21 12:17:58 -0700 |
---|---|---|
committer | David Vazgenovich Shakaryan <dvshakaryan@gmail.com> | 2014-04-21 12:17:58 -0700 |
commit | 6ff901dfe723b58ad13a2e3693473d934f5751b2 (patch) | |
tree | 010a86fccc8ec0fcef0256c7cc06516308cab92f | |
parent | 6f983f20925e6c1b95649f221fb9fd419a44f025 (diff) | |
download | dinobot-6ff901dfe723b58ad13a2e3693473d934f5751b2.tar.gz dinobot-6ff901dfe723b58ad13a2e3693473d934f5751b2.tar.xz |
Modify modules to accept MessageInfo objects.
-rw-r--r-- | dinobot.rb | 17 | ||||
-rw-r--r-- | module/admin.rb | 54 | ||||
-rw-r--r-- | module/base.rb | 16 | ||||
-rw-r--r-- | module/config.rb | 20 | ||||
-rw-r--r-- | module/test.rb | 32 |
5 files changed, 66 insertions, 73 deletions
@@ -137,22 +137,21 @@ module Dinobot mod = mod.intern if m.response.empty? - m.response = @modules[mod].call(m.user, m.channel, command) + @modules[mod].call(m, command) else ensure_valid_response(m.response) - response = [] - m.response.each do |x| + prev = m.response + m.response = [] + + prev.each do |x| if x.first == :say - tmp = @modules[mod].call(m.user, x[1], "#{command} #{x[2]}") - ensure_valid_response(tmp) - response.concat(tmp) + @modules[mod].call(m, "#{command} #{x[2]}") + ensure_valid_response(m.response) else - response << x + m.response << x end end - - m.response = response end exec_command(m, remainder) if remainder diff --git a/module/admin.rb b/module/admin.rb index 1a081df..72c2a14 100644 --- a/module/admin.rb +++ b/module/admin.rb @@ -35,60 +35,58 @@ module Dinobot @admins.include?(user.sub(/.+@/, '')) end - def join(user, channel, argument) - return unless is_admin?(user) + def join(m, args) + return unless is_admin?(m.user) - [[:join, argument.strip]] + m.response << [:join, args.strip] end - def part(user, channel, argument) - return unless is_admin?(user) + def part(m, args) + return unless is_admin?(m.user) - [[:part, argument.strip]] + m.response << [:part, args.strip] end - def quit(user, channel, argument) - return unless is_admin?(user) + def quit(m, args) + return unless is_admin?(m.user) - [[:quit, argument ? argument.strip : 'Quitting.']] + m.response << [:quit, args ? args.strip : 'Quitting.'] end - def load(user, channel, argument) - return unless is_admin?(user) + def load(m, args) + return unless is_admin?(m.user) - argument.split.each do |x| + args.split.each do |x| @bot.load_module x.intern end - - nil end - def unload(user, channel, argument) - return unless is_admin?(user) + def unload(m, args) + return unless is_admin?(m.user) - argument.split.each do |x| + args.split.each do |x| @bot.unload_module x.intern end - - nil end - def listadmins(user, channel, argument) - return unless is_admin?(user) + def listadmins(m, args) + return unless is_admin?(m.user) - [[:say, channel, "Admins: #{@admins.join(' ')}"]] + m.response << [:say, m.channel, "Admins: #{@admins.join(' ')}"] end - def listmodules(user, channel, argument) - return unless is_admin?(user) + def listmodules(m, args) + return unless is_admin?(m.user) - [[:say, channel, "Modules: #{@bot.modules.keys.sort.join(' ')}"]] + m.response << [:say, m.channel, + "Modules: #{@bot.modules.keys.sort.join(' ')}"] end - def listchannels(user, channel, argument) - return unless is_admin?(user) + def listchannels(m, args) + return unless is_admin?(m.user) - [[:say, channel, "Channels: #{@bot.channels.sort.join(' ')}"]] + m.response << [:say, m.channel, + "Channels: #{@bot.channels.sort.join(' ')}"] end end end diff --git a/module/base.rb b/module/base.rb index b8be306..3f4d9cd 100644 --- a/module/base.rb +++ b/module/base.rb @@ -9,16 +9,18 @@ module Dinobot @commands = [:commands] end - def call(user, channel, message) - command, argument = message.split(' ', 3)[1..2] + def call(m, command) + command, args = command.split(' ', 3)[1..2] + args ||= '' - if @commands.map { |x| x.to_s }.include?(command) - send(command, user, channel, argument) - end + return unless @commands.map { |x| x.to_s }.include?(command) + + send(command, m, args) end - def commands(user, channel, argument) - [[:say, channel, "Commands: #{@commands.sort.join(' ')}"]] + def commands(m, args) + m.response << [:say, m.channel, + "Commands: #{@commands.sort.join(' ')}"] end end end diff --git a/module/config.rb b/module/config.rb index 2bf8b0b..fa3c151 100644 --- a/module/config.rb +++ b/module/config.rb @@ -12,23 +12,21 @@ module Dinobot @commands << :get << :set end - def get(user, channel, argument) - return unless @bot.modules[:admin].is_admin?(user) + def get(m, args) + return unless @bot.modules[:admin].is_admin?(m.user) - case argument + case args when 'trigger' - [[:say, channel, @config.data[:trigger][:global]]] + m.response << [:say, m.channel, @config.data[:trigger][:global]] when 'debug' - [[:say, channel, @config.data[:debug].to_s]] - else - nil + m.response << [:say, m.channel, @config.data[:debug].to_s] end end - def set(user, channel, argument) - return unless @bot.modules[:admin].is_admin?(user) + def set(m, args) + return unless @bot.modules[:admin].is_admin?(m.user) - key, val = argument.split(' ') + key, val = args.split(' ') return unless val case key @@ -45,8 +43,6 @@ module Dinobot @config.save end end - - nil end end end diff --git a/module/test.rb b/module/test.rb index f728930..cfc929b 100644 --- a/module/test.rb +++ b/module/test.rb @@ -7,39 +7,37 @@ module Dinobot super @commands << :echo << :ping << :x3 << :fooify - @commands << :error << :timeout << :wrongreturn << :invalidmethods + @commands << :error << :timeout << :invalidresponse end - def echo(user, channel, argument) - [[:say, channel, argument]] + def echo(m, args) + m.response << [:say, m.channel, args] end - def ping(user, channel, argument) - [[:say, channel, 'pong']] + def ping(m, args) + m.response << [:say, m.channel, 'pong'] end - def x3(user, channel, argument) - [[:say, channel, argument]] * 3 + def x3(m, args) + 3.times do + m.response << [:say, m.channel, args] + end end - def fooify(user, channel, argument) - [[:say, channel, 'foo' + argument]] + def fooify(m, args) + m.response << [:say, m.channel, "foo#{args}"] end - def error(user, channel, argument) + def error(m, args) x end - def timeout(user, channel, argument) + def timeout(m, args) sleep 60 end - def wrongreturn(user, channel, argument) - 0 - end - - def invalidmethods(user, channel, argument) - [[:say, channel]] + def invalidresponse(m, args) + m.response << [:say, m.channel] end end end |