Add command help
This commit is contained in:
parent
09e925d695
commit
dceabdbb7e
6 changed files with 68 additions and 11 deletions
16
bot.rb
16
bot.rb
|
@ -22,6 +22,8 @@ module Lain
|
|||
@modules[mod] = Modules.const_get(mod).new(self, cfg)
|
||||
}
|
||||
|
||||
@commands = @modules.values.reduce({}) { |c, mod| c.merge mod.commands }.to_a.sort
|
||||
|
||||
$stderr.puts 'Connecting...'
|
||||
|
||||
@cl = Jabber::Client.new(Jabber::JID.new(Config::JID))
|
||||
|
@ -36,23 +38,33 @@ module Lain
|
|||
@mucs[r] = muc
|
||||
|
||||
muc.add_message_callback { |msg|
|
||||
unless msg.from == r
|
||||
@modules.each { | _, mod |
|
||||
begin
|
||||
mod.on_message muc, msg
|
||||
rescue
|
||||
end
|
||||
}
|
||||
end
|
||||
}
|
||||
|
||||
$stderr.puts "Joining room `#{r}'..."
|
||||
|
||||
muc.join("#{r}/#{Config::Nick}")
|
||||
muc.configure()
|
||||
muc.join(r)
|
||||
|
||||
begin
|
||||
muc.configure
|
||||
rescue
|
||||
end
|
||||
}
|
||||
|
||||
$stderr.puts 'Startup finished.'
|
||||
end
|
||||
|
||||
def commands
|
||||
@commands
|
||||
end
|
||||
|
||||
def run
|
||||
@mainthread = Thread.current
|
||||
Thread.stop
|
||||
|
|
|
@ -2,11 +2,16 @@ module Lain
|
|||
module Modules
|
||||
class Base
|
||||
def initialize(lain, config)
|
||||
@lain = lain
|
||||
@config = config
|
||||
end
|
||||
|
||||
def on_message(muc, message)
|
||||
end
|
||||
|
||||
def commands
|
||||
{}
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -10,7 +10,13 @@ module Lain
|
|||
return unless message.type == :groupchat
|
||||
return unless /!credits\b/ =~ message.body
|
||||
|
||||
muc.send(Jabber::Message.new(message.to, "Lain (レイン) #{Version}\n\n -- hacked by NeoRaider"))
|
||||
muc.send(Jabber::Message.new(message.to, "\nLain (レイン) #{Version}\n\n -- hacked by NeoRaider"))
|
||||
end
|
||||
|
||||
def commands
|
||||
{
|
||||
'!credits' => 'show credits'
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -9,7 +9,13 @@ module Lain
|
|||
return unless message.type == :groupchat
|
||||
return unless /!ddate\b/ =~ message.body
|
||||
|
||||
muc.send(Jabber::Message.new(message.to, IO.popen("ddate").gets(sep=nil).chomp))
|
||||
muc.send(Jabber::Message.new(message.to, IO.popen("ddate").read.chomp))
|
||||
end
|
||||
|
||||
def commands
|
||||
{
|
||||
'!ddate' => 'show Discordian date'
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -9,7 +9,13 @@ module Lain
|
|||
return unless message.type == :groupchat
|
||||
return unless /!fortune\b/ =~ message.body
|
||||
|
||||
muc.send(Jabber::Message.new(message.to, IO.popen(@config['command']).gets(sep=nil).chomp))
|
||||
muc.send(Jabber::Message.new(message.to, "\n" + IO.popen(@config['command']).read.chomp))
|
||||
end
|
||||
|
||||
def commands
|
||||
{
|
||||
'!fortune' => 'fortune cookies'
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
22
modules/Help.rb
Normal file
22
modules/Help.rb
Normal file
|
@ -0,0 +1,22 @@
|
|||
require 'xmpp4r/message'
|
||||
|
||||
require_relative '../module_base'
|
||||
|
||||
module Lain
|
||||
module Modules
|
||||
class Help < Base
|
||||
def on_message(muc, message)
|
||||
return unless message.type == :groupchat
|
||||
return unless /!help\b/ =~ message.body
|
||||
|
||||
muc.send(Jabber::Message.new(message.to, "Commands:" + @lain.commands.reduce('') { |s, cmd| "#{s}\n#{cmd[0]}: #{cmd[1]}" }))
|
||||
end
|
||||
|
||||
def commands
|
||||
{
|
||||
'!help' => 'show this help'
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Reference in a new issue