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



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

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

#chatObject



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

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

#chat_idObject



37
38
39
# File 'lib/telegram_workflow/params.rb', line 37

def chat_id
  chat&.dig("id")
end

#command?Boolean

Returns:

  • (Boolean)


72
73
74
# File 'lib/telegram_workflow/params.rb', line 72

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


76
77
78
79
# File 'lib/telegram_workflow/params.rb', line 76

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

#inline_dataObject



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

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

#language_codeObject



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

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

#messageObject



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

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

#message_textObject



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

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

#start?Boolean

Returns:

  • (Boolean)


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

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

#to_hObject



81
82
83
# File 'lib/telegram_workflow/params.rb', line 81

def to_h
  @params
end

#userObject



12
13
14
15
16
17
18
19
20
21
22
23
# 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") ||
    @params.dig("chat_join_request", "from") ||
    @params.dig("chat_member", "from") ||
    @params.dig("my_chat_member", "from")
end

#user_idObject



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

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

#usernameObject



33
34
35
# File 'lib/telegram_workflow/params.rb', line 33

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