Last active
February 18, 2017 17:34
-
-
Save wrxck/8e1dae59ee3a8a0af7ab8ac0a3dce780 to your computer and use it in GitHub Desktop.
A script to help users setup PWRTelegram's custom user backend for their bot
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
local https = require('ssl.https') | |
local ltn12 = require('ltn12') | |
local multipart = require('multipart-post') | |
local json = require('dkjson') | |
local request = function(endpoint, parameters) | |
parameters = parameters or {} | |
for k, v in pairs(parameters) do | |
parameters[k] = tostring(v) | |
end | |
if next(parameters) == nil then | |
parameters = { | |
'' | |
} | |
end | |
local response = {} | |
local body, boundary = multipart.encode(parameters) | |
local success, code = https.request( | |
{ | |
['url'] = endpoint, | |
['method'] = 'POST', | |
['headers'] = { | |
['Content-Type'] = 'multipart/form-data; boundary=' .. boundary, | |
['Content-Length'] = #body | |
}, | |
['source'] = ltn12.source.string(body), | |
['sink'] = ltn12.sink.table(response) | |
} | |
) | |
if not success then | |
return false, code | |
end | |
local jdat = table.concat(response) | |
if not json.decode(jdat) then | |
return jdat, code | |
end | |
jdat = json.decode(jdat) | |
if jdat.ok == true then | |
return jdat, code | |
end | |
return false, jdat | |
end | |
io.write('\nWhat is your phone number? [Enter it in the format +447712345678, with the country code (i.e. +44) and the number, with no spaces]\n') | |
local phone = io.read() | |
local success = request( | |
'https://api.pwrtelegram.xyz/phoneLogin', | |
{ | |
['phone'] = tostring(phone) | |
} | |
) | |
if not success then | |
io.write('\nThat\'s not a valid phone number! Please make sure you\'ve specified it with the country code, and try again.\n') | |
return | |
end | |
local temp_access_token = success.result | |
io.write('\nPlease state the code you just received from Telegram:\n') | |
local code = io.read() | |
if tonumber(code) == nil or tostring(code):len() ~= 5 then | |
io.write('\nInvalid code!\n') | |
return | |
end | |
success = request( | |
string.format( | |
'https://api.pwrtelegram.xyz/user%s/completePhoneLogin', | |
temp_access_token | |
), | |
{ | |
['code'] = tonumber(code) | |
} | |
) | |
local permanent_access_token = '' | |
if not success then | |
io.write('\nHm. An error seems to have occured. Do you have a 2FA password on your Telegram account? (y/n)\n') | |
local password = io.read() | |
if password:lower():match('^n') then | |
io.write('\nIn that case, I\'m not sure what went wrong. Please try again later!\n') | |
return | |
end | |
io.write('What is your 2FA password?') | |
password = io.read() | |
success = request( | |
string.format( | |
'https://api.pwrtelegram.xyz/user%s/complete2FALogin', | |
temp_access_token | |
), | |
{ | |
['password'] = tostring(password) | |
} | |
) | |
if not success then | |
io.write('\nInvalid password - try again!\n') | |
io.write('What is your 2FA password?') | |
password = io.read() | |
success = request( | |
string.format( | |
'https://api.pwrtelegram.xyz/user%s/complete2FALogin', | |
temp_access_token | |
), | |
{ | |
['password'] = tostring(password) | |
} | |
) | |
if not success then | |
io.write('\nInvalid password - aborting!\n') | |
return | |
end | |
end | |
permanent_access_token = success.result | |
else | |
permanent_access_token = success.result | |
end | |
io.write('\nSuccessfully connected to PWRTelegram - saving access token for future use (you can revoke this access in your Telegram security settings)!\n') | |
io.write('\nWould you like to set this backend on a bot you own? y/n\n') | |
local token = io.read() | |
if token:lower():match('^n') then | |
io.write('\nOk then, you\'re finished.\n') | |
return | |
end | |
io.write('\nOk, please enter the bot token you would like to set the backend for:\n') | |
token = io.read() | |
success = request( | |
string.format( | |
'https://api.pwrtelegram.xyz/bot%s/setBackend', | |
token | |
), | |
{ | |
['backend_token'] = permanent_access_token | |
} | |
) | |
if not success then | |
io.write('\nI couldn\'t set the backend for that bot, aborting!\n') | |
return | |
end | |
io.write('\nSuccessfully set the backend for @' .. request( | |
string.format( | |
'https://api.telegram.org/bot%s/getMe', | |
token | |
) | |
).result.username:lower() .. '!\nYour permanent access token is:\n' .. permanent_access_token .. '\n\nPlease write it down/store it somewhere safe!') | |
return |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment