зеркало из
https://github.com/glebtv/telegram-bot.git
synced 2026-08-28 15:26:18 +03:00
* Update rubopcop [WIP] * Further rubocop fixes * Fix rubocop-rails cops * Fix spec * Disable rubocop suggestions * Run rubocop in github actions rather than in codeclimate
77 строки
2.7 KiB
Ruby
77 строки
2.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Telegram
|
|
module Bot
|
|
class UpdatesController
|
|
module ReplyHelpers
|
|
# Helper to call bot's `send_#{type}` method with already set `chat_id`:
|
|
#
|
|
# respond_with :message, text: 'Hello!'
|
|
# respond_with :message, text: '__Hello!__', parse_mode: :Markdown
|
|
# respond_with :photo, photo: File.open(photo_to_send), caption: "It's incredible!"
|
|
def respond_with(type, params)
|
|
chat = self.chat
|
|
chat_id = chat && chat['id'] or raise 'Can not respond_with when chat is not present'
|
|
bot.public_send("send_#{type}", params.merge(chat_id: chat_id))
|
|
end
|
|
|
|
# Same as respond_with but also sets `reply_to_message_id`.
|
|
def reply_with(type, params)
|
|
payload = self.payload
|
|
message_id = payload && payload['message_id']
|
|
params = params.merge(reply_to_message_id: message_id) if message_id
|
|
respond_with(type, params)
|
|
end
|
|
|
|
# Same as respond_with, but for inline queries.
|
|
def answer_inline_query(results, params = {})
|
|
params = params.merge(
|
|
inline_query_id: payload['id'],
|
|
results: results,
|
|
)
|
|
bot.answer_inline_query(params)
|
|
end
|
|
|
|
# Same as respond_with, but for callback queries.
|
|
def answer_callback_query(text, params = {})
|
|
params = params.merge(
|
|
callback_query_id: payload['id'],
|
|
text: text,
|
|
)
|
|
bot.answer_callback_query(params)
|
|
end
|
|
|
|
# Same as respond_with, but for pre checkout queries.
|
|
def answer_pre_checkout_query(ok, params = {})
|
|
params = params.merge(
|
|
pre_checkout_query_id: payload['id'],
|
|
ok: ok,
|
|
)
|
|
bot.answer_pre_checkout_query(params)
|
|
end
|
|
|
|
def answer_shipping_query(ok, params = {})
|
|
params = params.merge(
|
|
shipping_query_id: payload['id'],
|
|
ok: ok,
|
|
)
|
|
bot.answer_shipping_query(params)
|
|
end
|
|
|
|
# Edit message from callback query.
|
|
def edit_message(type, params = {})
|
|
params =
|
|
if message_id = payload['inline_message_id'] # rubocop:disable Lint/AssignmentInCondition
|
|
params.merge(inline_message_id: message_id)
|
|
elsif message = payload['message'] # rubocop:disable Lint/AssignmentInCondition
|
|
params.merge(chat_id: message['chat']['id'], message_id: message['message_id'])
|
|
else
|
|
raise 'Can not edit message without `inline_message_id` or `message`'
|
|
end
|
|
bot.public_send("edit_message_#{type}", params)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|