diff --git a/src/main.lua b/src/main.lua new file mode 100644 index 0000000..82dcf37 --- /dev/null +++ b/src/main.lua @@ -0,0 +1,283 @@ +-- local discordia = require('discordia') +-- local ordinal = require('./modules/ordinal.lua') +-- local token = require('./modules/token.lua') +-- local APIKey = require('./modules/apikey.lua') +-- local APIHeader = {{'api-key',APIKey}} +-- local prefix = '%' +-- local strafesurl = 'https://api.strafes.net/v1/' +-- local cooldown = false +-- local client = discordia.Client() +-- discordia.extensions() + +-- local t=tostring + +-- local games={['bhop']=1,['surf']=2} +-- local gamesr={[1]='bhop',[2]='surf'} +-- local states={[0]='Default',[1]='Whitelisted',[2]='Blacklisted',[3]='Pending'} +-- local ranks={'New (1)','Newb (2)','Bad (3)','Okay (4)','Not Bad (5)','Decent (6)','Getting There (7)','Advanced (8)','Good (9)','Great (10)','Superb (11)','Amazing (12)','Sick (13)','Master (14)','Insane (15)','Majestic (16)','Baby Jesus (17)','Jesus (18)','Half God (19)','God (20)'} +-- local stylesr={'Autohop','Scroll','Sideways','Half-Sideways','W-Only','A-Only','Backwards',} +-- local styles={['autohop']=1,['scroll']=2,['sideways']=3,['halfsideways']=4,['wonly']=5,['aonly']=6,['backwards']=7} + +-- setmetatable(styles,{__index=function(self,i) +-- if i=='a' then i='auto'elseif i=='hsw'then i='half'elseif i=='s'then i='scroll'elseif i=='sw'then i='side'elseif i=='bw'then i='back'end +-- for ix,v in pairs(self) do +-- if string.sub(ix,1,#i):find(i:lower()) then +-- return self[ix] +-- end +-- end +-- end}) +-- local getUserID=function(message,name) +-- if type(tonumber(name))=='number' then +-- return name +-- else +-- return get('https://api.roblox.com/users/get-by-username?username='..name)['Id'] +-- end +-- message:reply('No user found') +-- end +-- local getUserInfoFromID=function(userid) +-- local d={excludeBannedUsers=false,userIds={userid}} +-- local res=post('https://users.roblox.com/v1/users',nil,json.encode(d))['data'][1] +-- if not res then res=get('https://users.roblox.com/v1/users/'..userid) end +-- return res,json.stringify(d) +-- end +-- local getIdFromRover=function(message,userid) +-- local idfromRover=get('https://verify.eryn.io/api/user/'..userid) +-- if not idfromRover.error then +-- return idfromRover.robloxId +-- end +-- message:reply(idfromRover.error) +-- return +-- end +-- local hasStrafesData=function(message,id) +-- local info=get(strafesurl..'user/'..id,APIHeader) +-- if info.State then +-- return true +-- end +-- message:reply('```User has no data with StrafesNET.```') +-- return false +-- end +-- client:on('ready', function() +-- client:info('yeah '.. client.user.tag) +-- client:info('--------------------------------------------------------------') +-- client:setGame({name='%help';type=2}) +-- end) + + +-- client:on('messageCreate',function(message) +-- if message.author==client.user then return end +-- local content = message.content +-- local author = message.author +-- local mentioned = message.mentionedUsers +-- local mention = mentioned.first +-- if content:sub(1,1)=='%'then +-- local args = content:split(' ') +-- -- [user lookup] +-- if args[1]=='%test'then +-- elseif args[1] == prefix..'user' and args[2] then +-- if args[2]:find('@') or args[2]=='me' then +-- local id=getIdFromRover(message,(mention and mention.id or author.id)) +-- if not id then message:addReaction('❌') return end +-- if not hasStrafesData(message,id) then message:addReaction('❌') return end +-- local info=getUserInfoFromID(id) +-- local res=get(strafesurl..'user/'..id,APIHeader) +-- message:reply('```'..info.displayName..' ('..info.name..')\n'..info.id..'\n'..states[res.State]..'```') +-- elseif args[2]~='me' and not args[2]:find('@') then +-- local id=getUserID(message,args[2]) +-- if not id then message:addReaction('❌') return end +-- if not hasStrafesData(message,id) then message:addReaction('❌') return end +-- local info=getUserInfoFromID(id) +-- local res=get(strafesurl..'user/'..id,APIHeader) +-- message:reply('```'..info.displayName..' ('..info.name..')\n'..res.ID..'\n'..states[res.State]..'```') +-- end +-- elseif args[1]==prefix..'rank' and args[2] and args[3] and args[4] then +-- if args[2]:find('@')or args[2]=='me'then +-- local id=getIdFromRover(message,(mention and mention.id or author.id)) +-- local game=games[args[3]] +-- local style=styles[args[4]] +-- if not id then message:addReaction('❌') return end +-- if not hasStrafesData(message,id) then message:addReaction('❌') return end +-- local res +-- local info +-- local rinfo +-- local s,e=pcall(function() +-- res=get(strafesurl..'rank/'..id..'?style='..style..'&game='..game,APIHeader) --/id?style=1&game=2 +-- info=get(strafesurl..'user/'..id,APIHeader) +-- rinfo=getUserInfoFromID(id) +-- end) +-- table.foreach(rinfo,print) +-- if not s then message:reply('style/game specified incorrectly i think')return end +-- if not rinfo.name then +-- message:reply('wait plz :pleading_face:') +-- return +-- end +-- local userInfo={ +-- id=id, +-- displayName=rinfo.displayName, +-- name=rinfo.name, +-- style=stylesr[style], +-- rank=ranks[math.floor((res.Rank*19)+1)], +-- skill=math.floor(res.Skill*100)~=100 and string.sub(math.floor(((res.Skill*100)*1000+.5))/1000, 1, #'00.000')..'%' or '100.000%', +-- placement=res.Placement, +-- state=states[info.State], +-- } +-- message:reply('```Name: '..userInfo.displayName..' ('..userInfo.name..')\nStyle: '..userInfo.style..'\nRank: '..userInfo.rank..'\nSkill: '..userInfo.skill..'\nPlacement: '..ordinal(userInfo.placement)..'\nState: '..userInfo.state..'```') +-- else +-- local id = getUserID(message,args[2]) +-- local game=games[args[3]] +-- local style=styles[args[4]] +-- if not id then message:addReaction('❌') return end +-- if not hasStrafesData(message,id) then message:addReaction('❌') return end +-- local res +-- local info +-- local rinfo +-- local s,e=pcall(function() +-- res=get(strafesurl..'rank/'..id..'?style='..style..'&game='..game,APIHeader) --/id?style=1&game=2 +-- info=get(strafesurl..'user/'..id,APIHeader) +-- rinfo=getUserInfoFromID(id) +-- end) +-- if not s then message:reply('style/game specified incorrectly i think')return end +-- if not rinfo.name then +-- message:reply('wait plz :pleading_face:') +-- return +-- end +-- local userInfo={ +-- id=id, +-- displayName=rinfo.displayName, +-- name=rinfo.name, +-- style=stylesr[style], +-- rank=ranks[math.floor((res.Rank*19)+1)], +-- skill=math.floor(res.Skill*100)~=100 and string.sub(math.floor(((res.Skill*100)*1000+.5))/1000, 1, #'00.000')..'%' or '100.000%', +-- placement=res.Placement, +-- state=states[info.State], +-- } +-- message:reply('```Name: '..userInfo.displayName..' ('..userInfo.name..')\nStyle: '..userInfo.style..'\nRank: '..userInfo.rank..'\nSkill: '..userInfo.skill..'\nPlacement: '..ordinal(userInfo.placement)..'\nState: '..userInfo.state..'```') +-- end +-- elseif args[1]==prefix..'ranks' and args[2] and args[3]then +-- local game=games[args[2]] +-- local style=styles[args[3]] +-- if not game or not style then message:reply('game/style specified incorrectly i think')return end +-- -- message:reply(strafesurl..'rank?style='..style..'&game='..game..'&page='..(type(tonumber(args[4]))=='number'and args[4]or'1')) +-- local res=get(strafesurl..'rank?style='..style..'&game='..game..'&page='..(type(tonumber(args[4]))=='number'and args[4]or'1'),APIHeader) +-- local final='' +-- for i,v in pairs(res) do +-- local userStats=res[i] +-- local rinfo=getUserInfoFromID(userStats.User) +-- if not rinfo.name then +-- message:reply('wait plz :pleading_face:') +-- return +-- end +-- local userInfo={ +-- id=userStats.User, +-- displayName=rinfo.displayName, +-- name=rinfo.name, +-- style=stylesr[style], +-- rank=ranks[math.floor((userStats.Rank*19)+1)], +-- skill=math.floor(userStats.Skill*100)~=100 and string.sub(math.floor(((userStats.Skill*100)*1000+.5))/1000, 1, #'00.000')..'%' or '100.000%', +-- placement=userStats.Placement, +-- } +-- final=final..(userInfo.placement)..string.rep(' ',10-#(tostring(userInfo.placement)))..' | '..userInfo.name..string.rep(' ',32-#userInfo.name)..' | '..userInfo.rank..string.rep(' ',17-#userInfo.rank)..' | '..userInfo.skill..'\n' +-- end +-- local file=io.open('./rank.txt','w+') +-- file:write(final) +-- file:close() +-- message:reply({file='./rank.txt'}) +-- os.remove('./rank.txt') +-- elseif args[1]==prefix..'maps' and args[2] then +-- local game=games[args[2]] +-- local page=type(tonumber(args[3]))=='number' and args[3] or 1 +-- if not game then message:reply('game specified incorrectly i think')return end +-- local res=get(strafesurl..'map?game='..game..'&page='..page,APIHeader) +-- local final='name | map maker | game | times loaded\n' +-- for ix=1,#res do --Map name: | Creator: | Game: | Server loads: +-- local v=res[ix] +-- final=final..t(v.DisplayName)..string.rep(' ',32-#v.DisplayName)..' | '..v.Creator..string.rep(' ',24-#v.Creator)..' | '..gamesr[v.Game]..string.rep(' ',6-#gamesr[v.Game])..' | '..t(v.PlayCount)..'\n' +-- end +-- local file=io.open('./map.txt','w+') +-- file:write(final) +-- file:close() +-- message:reply({file='./map.txt'}) +-- os.remove('./map.txt') +-- elseif args[1]==prefix..'help'then +-- message:reply('```rank