Class: TelegramWorkflow::Params

Inherits:
Object
  • Object
show all
Defined in:
lib/telegram_workflow/params.rb

Instance Method Summary collapse

Constructor Details

#initialize(params) ⇒ Params

Returns a new instance of Params.



4
5
6
# File 'lib/telegram_workflow/params.rb', line 4

def initialize(params)
  @params = params
end

Instance Method Details

#[](key) ⇒ Object



8
9
10
# File 'lib/telegram_workflow/params.rb', line 8

def [](key)
  @params[key]
end

#callback_dataObject



53
54
55
# File 'lib/telegram_workflow/params.rb', line 53

def callback_data
  @params.dig("callback_query", "data")
end

#chat_idObject



34
35
36
37
38
39
40
# File 'lib/telegram_workflow/params.rb', line 34

def chat_id
  @params.dig("message", "chat", "id") ||
    @params.dig("callback_query", "message", "chat", "id") ||
    @params.dig("edited_message", "chat", "id") ||
    @params.dig("channel_post", "chat", "id") ||
    @params.dig("edited_channel_post", "chat", "id")
end

#command?Boolean

Returns:

  • (Boolean)


65
66
67
# File 'lib/telegram_workflow/params.rb', line 65

def command?
  !!message_text&.start_with?("/")
end


69
70
71
72
# File 'lib/telegram_workflow/params.rb', line 69

def deep_link_payload
  match = /\A\/(startgroup|start) (?<payload>.+)\z/.match(message_text)
  match["payload"] if match
end

#inline_dataObject



57
58
59
# File 'lib/telegram_workflow/params.rb', line 57

def inline_data
  @params.dig("inline_query", "query")
end

#language_codeObject



22
23
24
# File 'lib/telegram_workflow/params.rb', line 22

def language_code
  user&.dig("language_code") || "en"
end

#messageObject



42
43
44
45
46
47
# File 'lib/telegram_workflow/params.rb', line 42

def message
  @params["message"] ||
    @params["edited_message"] ||
    @params["channel_post"] ||
    @params["edited_channel_post"]
end

#message_textObject



49
50
51
# File 'lib/telegram_workflow/params.rb', line 49

def message_text
  message&.dig("text")
end

#start?Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/telegram_workflow/params.rb', line 61

def start?
  !!message_text&.start_with?("/start")
end

#to_hObject



74
75
76
# File 'lib/telegram_workflow/params.rb', line 74

def to_h
  @params
end

#userObject



12
13
14
15
16
17
18
19
20
# File 'lib/telegram_workflow/params.rb', line 12

def user
  @user ||= message&.dig("from") ||
    @params.dig("callback_query", "from") ||
    @params.dig("pre_checkout_query", "from") ||
    @params.dig("shipping_query", "from") ||
    @params.dig("inline_query", "from") ||
    @params.dig("chosen_inline_result", "from") ||
    @params.dig("poll_answer", "user")
end

#user_idObject



26
27
28
# File 'lib/telegram_workflow/params.rb', line 26

def user_id
  user&.dig("id")
end

#usernameObject



30
31
32
# File 'lib/telegram_workflow/params.rb', line 30

def username
  user&.dig("username")
end