class CQHttp::Utils

各种工具包

Example:

CQHttp::Utils.log str, Logger::INFO

Attributes

fileLogger[RW]

@!method stdLogger

@return [Logger] 终端Logger

@!method fileLogger

@return [Logger] 文件Logger

@!method loggerFile

@return [String] Logger文件地址
loggerFile[RW]

@!method stdLogger

@return [Logger] 终端Logger

@!method fileLogger

@return [Logger] 文件Logger

@!method loggerFile

@return [String] Logger文件地址
stdLogger[RW]

@!method stdLogger

@return [Logger] 终端Logger

@!method fileLogger

@return [Logger] 文件Logger

@!method loggerFile

@return [String] Logger文件地址

Public Class Methods

cq_parse(cqmsg) click to toggle source

CQ码解析

@param cqmsg [String] @return [Hash]

# File lib/Bot/Utils.rb, line 90
def cq_parse(cqmsg)
  cqary = []
  cqmsg.scan(/\[CQ:(.*?),(.*?)\]/m).each do |matches|
    cqcode = { type: matches[0], data: {} }
    matches[1].split(',').each do |arg|
      args = arg.split('=')
      cqcode[:data][args[0].to_sym] = args[1]
    end
    cqary << cqcode
  end
  cqary
end
httpPost(url, ret) click to toggle source

post发包

@param url [URI] @param ret [String] @return [String]

# File lib/Bot/Utils.rb, line 48
def httpPost(url, ret)
  req = Net::HTTP::Post.new(url.path, { 'Content-Type' => 'application/json' })
  req.body = ret
  res = Net::HTTP.start(url.hostname, url.port) do |http|
    http.request(req)
  end
  res.body
end
Also aliased as: post
initLogger(loggerFile=nil) click to toggle source

初始化日志

@param loggerFile [String]

# File lib/Bot/Utils.rb, line 19
def initLogger(loggerFile=nil)
  @loggerFile = loggerFile
  @stdLogger = setLogger(Logger.new(STDOUT))
  @fileLogger = setLogger(Logger.new(@loggerFile, 'daily')) if @loggerFile
end
log(str, severity=Logger::INFO, app="RUBY-CQHTTP") click to toggle source

输出日志

@param str [String] @param severity [Logger::INFO, Logger::DEBUG, Logger::WARN, Logger::ERROR] @param app [String]

# File lib/Bot/Utils.rb, line 38
def log(str, severity=Logger::INFO, app="RUBY-CQHTTP")
  @stdLogger.log(severity, str, app)
  @fileLogger.log(severity, str, app) if @loggerFile
end
msg_change(msg) click to toggle source

消息转义

&amp; -> &

&#91; -> [

&#93; -> ]

@param msg [String] @return [String]

# File lib/Bot/Utils.rb, line 65
def msg_change(msg)
  msg.gsub!('&amp;','&')
  msg.gsub!('&#91;','[')
  msg.gsub!('&#93;',']')
  msg
end
msg_change!(msg) click to toggle source

消息反转义

& -> &amp;

[ -> &#91;

] -> &#93;

@param msg [String] @return [String]

# File lib/Bot/Utils.rb, line 79
def msg_change!(msg)
  msg.gsub!('&','&amp;')
  msg.gsub!('[','&#91;')
  msg.gsub!(']','&#93;')
  msg
end
post(url, ret)
Alias for: httpPost
setLoggerLevel(loggerLevel) click to toggle source

设置日志等级

@param loggerLevel [String]

# File lib/Bot/Utils.rb, line 28
def setLoggerLevel(loggerLevel)
  @stdLogger.level = loggerLevel
  @fileLogger.level = loggerLevel if @loggerFile
end

Private Class Methods

setLogger(logger) click to toggle source

设置logger

# File lib/Bot/Utils.rb, line 106
def setLogger(logger)
  logger.level = 'INFO'
  logger.formatter = proc do |severity, datetime, progname, msg|
      if progname == nil
          "[#{datetime.strftime('%Y-%m-%d %H:%M:%S')}][#{severity}]: #{msg.to_s.gsub(/\n/,'\n').gsub(/\r/,'\r') }\n"
      else
          "[#{datetime.strftime('%Y-%m-%d %H:%M:%S')}][#{progname}][#{severity}]: #{msg.to_s.gsub(/\n/,'\n').gsub(/\r/,'\r') }\n"
      end
  end
  logger
end