From cb5152a05ddba55ee29ef11d487c938d9480e5eb Mon Sep 17 00:00:00 2001 From: promostarr Date: Sun, 16 Apr 2017 14:42:59 +0100 Subject: [PATCH] init commit --- Janitor.rb | 73 +++++++++++++++++++++++++++++++++++++++++++++++++ core.rb | 26 ++++++++++++++++++ notification.rb | 44 +++++++++++++++++++++++++++++ 3 files changed, 143 insertions(+) create mode 100644 Janitor.rb create mode 100644 core.rb create mode 100644 notification.rb diff --git a/Janitor.rb b/Janitor.rb new file mode 100644 index 0000000..2259e87 --- /dev/null +++ b/Janitor.rb @@ -0,0 +1,73 @@ +require 'teamspeak-ruby' + +class Janitor + def login() + ts = Teamspeak::Client.new('ts3.vereto.net') + ts.login('serveradmin', ENV["SrvQry"]) + ts.command('use', {sid: 1}) + return ts + end + + def roll() + return 1 + rand(6) + end + + def gsay(msg) + ts = login() + ts.command('sendtextmessage', {targetmode: 3, target: 1, msg: msg}) + end + + def listen() + ts = login() + return ts.command('servernotifyregister', event: 'textserver')[0]['msg'] + end + + def get_clients() + ts = login() + return ts.command('clientlist') + end + + def get_channels() + ts = login() + return ts.command('channellist') + end + + def find_client(name) + ts = login() + return ts.command('clientfind', pattern: name) + end + + def check_channels() + ts = login() + + server_info = ts.command('serverinfo') + + t = server_info['virtualserver_uptime'] + mm, ss = t.divmod(60) #=> [4515, 21] + hh, mm = mm.divmod(60) #=> [75, 15] + dd, hh = hh.divmod(24) #=> [3, 3] + + puts "Server has been online for: %d days, %d hours, %d minutes and %d seconds" % [dd, hh, mm, ss] + puts "Clients Online: " + server_info['virtualserver_clientsonline'].to_s + + ts.command('channellist').each do |channel| + channel_quality = ts.command('channelinfo', cid: channel['cid'])['channel_codec_quality'] + puts "(" << channel['cid'].to_s << ")" << channel['channel_name'] << "| [Codec] " << channel_quality.to_s + + if channel_quality != 9 + puts "Needs set!" + ts.command('channeledit', cid: channel['cid'], channel_codec_quality: 9) + end + + ts.command('clientlist').each do |user| + if user['cid'] == channel['cid'] + server_groups = ts.command('servergroupsbyclientid', cldbid: user['client_database_id']) + puts "--------" << user['client_nickname'] << "(" << user['clid'].to_s << ")" << "[" << server_groups[0]["name"].to_s << "]" + end + end + end + + + end + +end diff --git a/core.rb b/core.rb new file mode 100644 index 0000000..179fef6 --- /dev/null +++ b/core.rb @@ -0,0 +1,26 @@ +require_relative 'Janitor' +require 'optparse' + +options = {} + +jan = Janitor.new +OptionParser.new do |parser| + parser.banner = "Usage: core.rb [options]" + parser.on("-h", "--help", "Show this help message.") do || + puts parser + end + + parser.on("-g", "--gsay SAY", "Send a global chat message") do |v| + jan.gsay(v) + end + + parser.on("-v", "--view", "View channel list") do + jan.check_channels() + end + parser.on("--roll") do + puts jan.roll() + end + parser.on("--stop") do + jan.gsay('!stop') + end +end.parse! diff --git a/notification.rb b/notification.rb new file mode 100644 index 0000000..d38b7f6 --- /dev/null +++ b/notification.rb @@ -0,0 +1,44 @@ +#!/usr/bin/env ruby + + require_relative 'Janitor' + + i = 1 + jan = Janitor.new + while (i > 0) + begin + cmd = jan.listen() + puts cmd + if cmd == '!help' + msg = "I am Janitor, you can tell me to do things." + jan.gsay(msg) + msg = "Try !roll to roll a dice" + jan.gsay(msg) + end + if cmd == "!stop" + msg = "JAN Will stop listening" + jan.gsay(msg) + puts "Stopping" + i = -1 + end + + if cmd.include? "!say" + cmd.slice! "!say" + input_str = cmd + puts "[DEBUG] " + input_str + jan.gsay(input_str) + end + + if cmd == "!cleanup" + jan.gsay("Cleaning up..") + jan.check_channels() + jan.gsay("Channels clean!") + end + + if cmd == "!roll" + jan.gsay(jan.roll) + end + + rescue Exception => e + puts "Error: Some kind of time out? " + e.message + end + end