class Prismarb::Prismalytics
Public Class Methods
new(key)
click to toggle source
# File lib/prismarb.rb, line 8 def initialize(key) @key = key @commands = {} @servers = [] @time = nil end
Public Instance Methods
process_data(message, server)
click to toggle source
# File lib/prismarb.rb, line 15 def process_data(message, server) message = message.content.split(" ")[0] if @commands.has_key? message @commands[message] += 1 else @commands[message] = 1 end match = @servers.find { |i| i["name"] == server.name } if match.nil? new_server = { "name": server.name, "member_count": server.member_count, "region": server.region, "bot_messages": 1 } @servers << new_server else match["bot_messages"] += 1 end end
send(message)
click to toggle source
# File lib/prismarb.rb, line 38 def send(message) """ processes data and sends every 2 minutes TODO: refactor so that users don't need to use ctx """ unset = false if @time.nil? @time = Time.now unset = true end server = message.channel.server process_data(message, server) curr_time = Time.now interval = (curr_time - @time) / 60 if (unset or interval > 5) @time = curr_time data = { "commands": @commands.to_json, "save_server": @save_server, "servers": @servers.to_json } uri = URI('https://prismalytics.herokuapp.com/send_data') req = Net::HTTP::Post.new(uri.path) req.set_form_data(data) req["key"] = @key res = Net::HTTP.start(uri.hostname, uri.port) do |http| http.request(req) end # reinitialize stored data as it has been sent @commands = {} @servers = [] end end