class SSCBot::User::MessageSender

@author Jonathan Bradley Whited @since 0.1.0

Constants

DEFAULT_ESCAPE_STR
DEFAULT_FLOOD_COUNT
DEFAULT_FLOOD_MIN_SLEEP
DEFAULT_FLOOD_SECS
MM_AREA
MM_BOUNTY
MM_COORD
MM_ENERGY
MM_FLAGS
MM_FREQ
MM_KILLED
MM_KILLER
MM_RED
MM_REDBOUNTY
MM_REDFLAGS
MM_REDNAME
MM_SELFNAME
MM_SQUAD
MM_TICKNAME

Message Macros

  • In order of F1 Help box.

Attributes

escape_str[RW]
flood_count[RW]
flood_min_sleep[RW]
flood_secs[RW]
message_count[R]
message_time[R]

Public Class Methods

new(escape_percent: false,escape_space: true,escape_str: DEFAULT_ESCAPE_STR, flood_count: DEFAULT_FLOOD_COUNT,flood_min_sleep: DEFAULT_FLOOD_MIN_SLEEP, flood_secs: DEFAULT_FLOOD_SECS,staff: false) click to toggle source
Calls superclass method
# File lib/ssc.bot/user/message_sender.rb, line 82
def initialize(escape_percent: false,escape_space: true,escape_str: DEFAULT_ESCAPE_STR,
               flood_count: DEFAULT_FLOOD_COUNT,flood_min_sleep: DEFAULT_FLOOD_MIN_SLEEP,
               flood_secs: DEFAULT_FLOOD_SECS,staff: false)
  super()

  @escape_percent = escape_percent
  @escape_space = escape_space
  @escape_str = escape_str
  @flood_count = flood_count
  @flood_min_sleep = flood_min_sleep
  @flood_secs = flood_secs
  @message_count = 0
  @message_time = Time.now
  @staff = staff
end

Public Instance Methods

escape_pub(message,escape_percent: @escape_percent,escape_space: @escape_space, escape_str: @escape_str,staff: @staff) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 98
def escape_pub(message,escape_percent: @escape_percent,escape_space: @escape_space,
               escape_str: @escape_str,staff: @staff)
  if escape_percent
    message = message.gsub('%','%%')
  end

  escape = false

  case message[0]
  when '#'
    escape = true
  else
    if escape_space && message[0] =~ /[[:space:]]/
      escape = true
    else
      stripped_message = Util.u_lstrip(message)

      case stripped_message[0]
      when ':'
        if stripped_message.index(':',1)
          escape = true
        end
      when '/',"'",'"',';','='
        escape = true
      when '?'
        if stripped_message[1] =~ /[[:alpha:]]/
          escape = true
        end
      when '*','-'
        escape = true if staff
      end
    end
  end

  if escape
    message = "#{escape_str}#{message}"
  end

  return message
end
prevent_flood() click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 139
def prevent_flood
  @message_count += 1

  if @message_count >= @flood_count
    diff_time = Time.now - @message_time

    if diff_time <= @flood_secs
      sleep_secs = (@flood_secs - diff_time).round(4) + 0.001
      sleep_secs = @flood_min_sleep if sleep_secs < @flood_min_sleep
    else
      sleep_secs = @flood_min_sleep
    end

    sleep(sleep_secs)

    @message_count = 0
  end

  @message_time = Time.now
end
put(message) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 70
def put(message)
  raise AbstractMethodError,__method__
end
put_or_type(message) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 160
def put_or_type(message)
  put(message)
end
send(message) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 164
def send(message)
  put(message)
  send_message
end
send_chat(message) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 193
def send_chat(message)
  send_safe(";#{message}")
end
send_chat_to(channel,message) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 197
def send_chat_to(channel,message)
  send_safe(";#{channel};#{message}")
end
send_freq(message) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 201
def send_freq(message)
  send_safe(%Q("#{message}))
end
send_freq_eq(freq) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 205
def send_freq_eq(freq)
  send_safe("=#{freq}")
end
send_message() click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 74
def send_message
  raise AbstractMethodError,__method__
end
send_or_types(message) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 169
def send_or_types(message)
  send(message)
end
send_or_types_safe(message) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 173
def send_or_types_safe(message)
  send_or_types(message)
  prevent_flood
end
send_private(message) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 209
def send_private(message)
  send_safe("/#{message}")
end
send_private_to(name,message) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 213
def send_private_to(name,message)
  send_safe(":#{name}:#{message}")
end
send_private_to_last(message,last=1) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 217
def send_private_to_last(message,last=1)
  put_or_type('::')

  while (last -= 1) > 0
    put_or_type(':')
  end

  send_safe(message)
end
send_pub(message,**kargs) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 227
def send_pub(message,**kargs)
  send_safe(escape_pub(message,**kargs))
end
send_q_chat() click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 231
def send_q_chat
  send_safe('?chat')
end
send_q_chat_eq(*names) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 235
def send_q_chat_eq(*names)
  send_safe("?chat=#{names.join(',')}")
end
send_q_enter() click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 239
def send_q_enter
  send_safe('?enter')
end
send_q_find(player) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 243
def send_q_find(player)
  send_safe("?find #{player}")
end
send_q_kill() click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 247
def send_q_kill
  send_safe('?kill')
end
send_q_leave() click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 251
def send_q_leave
  send_safe('?leave')
end
send_q_lines() click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 283
def send_q_lines
  send_safe('?lines')
end
send_q_lines_eq(lines) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 287
def send_q_lines_eq(lines)
  send_safe("?lines=#{lines}")
end
send_q_loadmacro(filename) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 255
def send_q_loadmacro(filename)
  send_safe("?loadmacro #{filename}")
end
send_q_log() click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 259
def send_q_log
  send_safe('?log')
end
send_q_log_to(filename) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 263
def send_q_log_to(filename)
  send_safe("?log #{filename}")
end
send_q_logbuffer() click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 267
def send_q_logbuffer
  send_safe('?logbuffer')
end
send_q_logbuffer_to(filename) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 271
def send_q_logbuffer_to(filename)
  send_safe("?logbuffer #{filename}")
end
send_q_namelen() click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 275
def send_q_namelen
  send_safe('?namelen')
end
send_q_namelen_eq(namelen) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 279
def send_q_namelen_eq(namelen)
  send_safe("?namelen=#{namelen}")
end
send_q_savemacro(filename) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 291
def send_q_savemacro(filename)
  send_safe("?savemacro #{filename}")
end
send_q_spec() click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 295
def send_q_spec
  send_safe('?spec')
end
send_q_team() click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 299
def send_q_team
  send_safe('?team')
end
send_safe(message) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 178
def send_safe(message)
  send(message)
  prevent_flood
end
send_squad(message) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 303
def send_squad(message)
  send_safe("##{message}")
end
send_squad_to(squad,message) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 307
def send_squad_to(squad,message)
  send_safe(":##{squad}:#{message}")
end
send_team(message) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 311
def send_team(message)
  send_safe("//#{message}")
end
send_team2(message) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 315
def send_team2(message)
  send_safe("'#{message}")
end
type(message) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 78
def type(message)
  raise AbstractMethodError,__method__
end
types(message) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 183
def types(message)
  type(message)
  send_message
end
types_safe(message) click to toggle source
# File lib/ssc.bot/user/message_sender.rb, line 188
def types_safe(message)
  types(message)
  prevent_flood
end