1
0
зеркало из https://github.com/glebtv/telegram-bot.git synced 2026-09-04 02:05:52 +03:00

New api methods and support for inline keyboards

Этот коммит содержится в:
Max Melentiev
2016-05-17 09:26:20 +03:00
родитель 148023bb0d
Коммит 4593a10dec
7 изменённых файлов: 106 добавлений и 61 удалений

Просмотреть файл

@@ -39,6 +39,12 @@ module Telegram
Instrumentation.instrument(:reply_with, type: type) { super }
end
%i(answer_callback_query answer_inline_query).each do |type|
define_method(type) do |*args|
Instrumentation.instrument(:reply_with, type: type) { super(*args) }
end
end
private
# A hook invoked every time a before callback is halted.

Просмотреть файл

@@ -0,0 +1,42 @@
module Telegram
module Bot
class UpdatesController
module ReplyHelpers
# Helper to call bot's `send_#{type}` method with already set `chat_id` and
# `reply_to_message_id`:
#
# reply_with :message, text: 'Hello!'
# reply_with :message, text: '__Hello!__', parse_mode: :Markdown
# reply_with :photo, photo: File.open(photo_to_send), caption: "It's incredible!"
def reply_with(type, params)
method = "send_#{type}"
chat = self.chat
payload = self.payload
params = params.merge(
chat_id: (chat && chat['id'] or raise 'Can not reply_with when chat is not present'),
reply_to_message: payload && payload['message_id'],
)
bot.public_send(method, params)
end
# Same as reply_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 reply_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
end
end
end
end