diff options
Diffstat (limited to 'protocols/Telegram/tdlib/td/example/ruby')
-rw-r--r-- | protocols/Telegram/tdlib/td/example/ruby/Gemfile | 3 | ||||
-rw-r--r-- | protocols/Telegram/tdlib/td/example/ruby/Gemfile.lock | 17 | ||||
-rw-r--r-- | protocols/Telegram/tdlib/td/example/ruby/example.rb | 61 |
3 files changed, 81 insertions, 0 deletions
diff --git a/protocols/Telegram/tdlib/td/example/ruby/Gemfile b/protocols/Telegram/tdlib/td/example/ruby/Gemfile new file mode 100644 index 0000000000..3a38ffc0a3 --- /dev/null +++ b/protocols/Telegram/tdlib/td/example/ruby/Gemfile @@ -0,0 +1,3 @@ +source 'https://rubygems.org' + +gem 'tdlib-ruby' diff --git a/protocols/Telegram/tdlib/td/example/ruby/Gemfile.lock b/protocols/Telegram/tdlib/td/example/ruby/Gemfile.lock new file mode 100644 index 0000000000..22954eddfb --- /dev/null +++ b/protocols/Telegram/tdlib/td/example/ruby/Gemfile.lock @@ -0,0 +1,17 @@ +GEM + remote: https://rubygems.org/ + specs: + concurrent-ruby (1.0.5) + dry-configurable (0.7.0) + concurrent-ruby (~> 1.0) + tdlib-ruby (0.2.0) + dry-configurable (~> 0.7) + +PLATFORMS + ruby + +DEPENDENCIES + tdlib-ruby + +BUNDLED WITH + 1.16.1 diff --git a/protocols/Telegram/tdlib/td/example/ruby/example.rb b/protocols/Telegram/tdlib/td/example/ruby/example.rb new file mode 100644 index 0000000000..4b29dfd53a --- /dev/null +++ b/protocols/Telegram/tdlib/td/example/ruby/example.rb @@ -0,0 +1,61 @@ +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 |