40 lines
977 B
Ruby
40 lines
977 B
Ruby
# frozen_string_literal: true
|
|
|
|
class TelegramBotUpdatesController < ApplicationController
|
|
before_action :set_telegram_bot
|
|
before_action :verify_telegram_bot_secret
|
|
|
|
# POST /telegram_bot_updates
|
|
def create
|
|
logger.info params.inspect
|
|
|
|
handle_message params[:message] if params[:message]
|
|
|
|
render status: :no_content, json: {}
|
|
end
|
|
|
|
private
|
|
|
|
def set_telegram_bot
|
|
@telegram_bot = TelegramBot.find params[:telegram_bot_id]
|
|
end
|
|
|
|
def verify_telegram_bot_secret
|
|
raise NotAuthorizedError unless params[:secret] == @telegram_bot.secret
|
|
end
|
|
|
|
def handle_message(message)
|
|
handle_user message[:from] if message[:from]
|
|
end
|
|
|
|
def handle_user(user)
|
|
TelegramUser.create!(
|
|
remote_telegram_id: user[:id],
|
|
is_bot: user[:is_bot],
|
|
first_name: user[:first_name],
|
|
last_name: user[:last_name],
|
|
username: user[:username],
|
|
language_code: user[:language_code],
|
|
)
|
|
end
|
|
end
|