class Tm
Public Class Methods
Source
# File plugins/tm.rb, line 18 def self.command_pattern /tm(?:\s+(.+))?$/i end
Source
# File plugins/tm.rb, line 56 def self.dispatch_command(args_text, user: nil, fetch: nil, network: nil, channel: nil) parsed = parse_command(args_text) return { error: parsed[:error] } if parsed[:error] return { reply: help_reply } if parsed[:action] == :help api_key = TmConfig.api_key case parsed[:action] when :search return { error: TmConfig.setup_hint } unless TmConfig.configured? result = TmSearch.search(parsed[:query], api_key: api_key, fetch: fetch) { reply: TmSearch.format_search(parsed[:query], result) } when :game return { error: "Name Game must be played in a channel." } unless network && channel result = TmGame.start_round(network: network, channel: channel) { reply: result[:message] } when :guess return { error: "Name Game must be played in a channel." } unless network && channel result = TmGame.submit_guess( network: network, channel: channel, user: user.to_s, guess: parsed[:guess], api_key: api_key, fetch: fetch ) return { error: result[:error] } if result[:error] { reply: result[:message] } else { reply: help_reply } end end
Source
# File plugins/tm.rb, line 46 def self.help_reply [ IrcFormat.report_header(tag: "TM", title: "IP Australia trade marks", style: TmSearch::STYLE_TITLE), "!tm <name> — quick trade mark search", "!tm game — Name Game round", "!tm guess yes|no — answer Name Game", IrcFormat.report_footer("IP Australia") ].join("\n") end
Source
# File plugins/tm.rb, line 24 def self.parse_command(text) args = text.to_s.strip return { action: :help } if args.empty? parts = args.split(/\s+/) case parts[0].downcase when "help" { action: :help } when "game" { action: :game } when "guess" return { error: "Usage: !tm guess yes|no" } if parts.length < 2 value = parts[1].downcase return { error: "Guess must be yes or no." } unless %w[yes no].include?(value) { action: :guess, guess: value } else { action: :search, query: args } end end
Public Instance Methods
Source
# File plugins/tm.rb, line 93 def execute(m, args_text = nil) result = self.class.dispatch_command( args_text, user: m.user.nick, network: m.channel ? bot.config.server : nil, channel: m.channel&.name ) if result[:error] themed_flood_safe_reply(m, result[:error]) else themed_flood_safe_reply(m, result[:reply]) end end