95 lines
2.4 KiB
Ruby
95 lines
2.4 KiB
Ruby
require 'teamspeak-ruby'
|
|
|
|
class Janitor
|
|
|
|
def initialize
|
|
@ts = login()
|
|
@global = false
|
|
end
|
|
|
|
def login()
|
|
@ts = Teamspeak::Client.new('ts3.vereto.net')
|
|
@ts.login('serveradmin', ENV["SrvQry"].dup)
|
|
@ts.command('use', {sid: 1})
|
|
return @ts
|
|
end
|
|
|
|
def roll()
|
|
return 1 + rand(6)
|
|
end
|
|
|
|
def gsay(msg)
|
|
if @global == true
|
|
@ts.command('sendtextmessage', {targetmode: 3, target: 1, msg: msg})
|
|
else
|
|
@ts.command('sendtextmessage', {targetmode: 2, target: whoami['client_channel_id'], msg: msg})
|
|
end
|
|
|
|
end
|
|
|
|
def listen()
|
|
if @global == true
|
|
return @ts.command('servernotifyregister', event: 'textserver')[0]
|
|
else
|
|
return @ts.command('servernotifyregister', event: 'textchannel', id: 218 )[0]
|
|
end
|
|
end
|
|
|
|
def get_clients()
|
|
return @ts.command('clientlist')
|
|
end
|
|
|
|
def get_channels()
|
|
return @ts.command('channellist')
|
|
end
|
|
|
|
def find_client(name)
|
|
#//This doesnt seem to work very well
|
|
return @ts.command('clientfind', {pattern: name.to_s})
|
|
end
|
|
|
|
def whoami()
|
|
return @ts.command('whoami')
|
|
end
|
|
|
|
def move_client(clid, cid)
|
|
return @ts.command('clientmove', clid: clid, cid: cid)
|
|
end
|
|
|
|
def move_self(cid)
|
|
return move_client(whoami['client_id'], cid)
|
|
end
|
|
|
|
|
|
def check_channels()
|
|
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
|