62 lines
1.5 KiB
Ruby
62 lines
1.5 KiB
Ruby
require 'tdlib-ruby'
|
|
|
|
TD.configure do |config|
|
|
config.lib_path = 'path/to/dir_containing_lobtdjson'
|
|
|
|
# You should obtain your own api_id and api_hash from https://my.telegram.org/apps
|
|
config.client.api_id = 12345
|
|
config.client.api_hash = '1234567890abcdefghigklmnopqrstuv'
|
|
end
|
|
|
|
TD::Api.set_log_verbosity_level(1)
|
|
|
|
client = TD::Client.new
|
|
|
|
begin
|
|
state = nil
|
|
|
|
client.on('updateAuthorizationState') do |update|
|
|
next unless update.dig('authorization_state', '@type') == 'authorizationStateWaitPhoneNumber'
|
|
state = :wait_phone
|
|
end
|
|
|
|
client.on('updateAuthorizationState') do |update|
|
|
next unless update.dig('authorization_state', '@type') == 'authorizationStateWaitCode'
|
|
state = :wait_code
|
|
end
|
|
|
|
client.on('updateAuthorizationState') do |update|
|
|
next unless update.dig('authorization_state', '@type') == 'authorizationStateReady'
|
|
state = :ready
|
|
end
|
|
|
|
loop do
|
|
case state
|
|
when :wait_phone
|
|
p 'Please, enter your phone number:'
|
|
phone = STDIN.gets.strip
|
|
params = {
|
|
'@type' => 'setAuthenticationPhoneNumber',
|
|
'phone_number' => phone
|
|
}
|
|
client.broadcast_and_receive(params)
|
|
when :wait_code
|
|
p 'Please, enter code from SMS:'
|
|
code = STDIN.gets.strip
|
|
params = {
|
|
'@type' => 'checkAuthenticationCode',
|
|
'code' => code
|
|
}
|
|
client.broadcast_and_receive(params)
|
|
when :ready
|
|
@me = client.broadcast_and_receive('@type' => 'getMe')
|
|
break
|
|
end
|
|
end
|
|
|
|
ensure
|
|
client.close
|
|
end
|
|
|
|
p @me
|