Implement method to get updates from Telegram.

This commit is contained in:
Danila Fedorin 2018-01-12 18:03:55 -08:00
parent 57ee991895
commit ac0c8823a3
2 changed files with 31 additions and 0 deletions

View File

@ -6,6 +6,8 @@ module Telepathy
@request_base = "https://api.telegram.org/bot#{@api_token}" @request_base = "https://api.telegram.org/bot#{@api_token}"
@this_user = uninitialized User? @this_user = uninitialized User?
@this_user = get_me @this_user = get_me
@last_update_id = uninitialized Int64?
@last_update_id = nil
end end
def get_me def get_me
@ -13,5 +15,16 @@ module Telepathy
headers: HTTP::Headers{"User-agent" => "Telepathy"}) headers: HTTP::Headers{"User-agent" => "Telepathy"})
return Response(User).from_json(response.body).result return Response(User).from_json(response.body).result
end end
def get_updates
update_data = {} of String => Int64 | String
@last_update_id.try { |id| update_data["offset"] = id }
response = HTTP::Client.get(@request_base + "/getUpdates",
headers: HTTP::Headers{"User-agent" => "Telepathy", "Content-type" => "application/json" },
body: update_data.to_json)
updates = Response(Array(Update)).from_json(response.body).result
updates.last?.try { |update| @last_update_id = update.update_id + 1 }
return updates
end
end end
end end

View File

@ -0,0 +1,18 @@
require "json"
module Telepathy
class Update
JSON.mapping(
update_id: Int64,
message: Message?,
edited_message: Message?,
channel_post: Message?,
edited_channel_post: Message?
# TODO inline_query
# TODO chosen_inline_result
# TODO callback_query
# shipping_query
# pre_checkout_query
)
end
end