1
0
Fork 0
This repository has been archived on 2023-03-27. You can view files and clone it, but cannot push or open issues or pull requests.
lpr-partynest/app/controllers/callbacks/telegram_bots/updates_controller.rb

60 lines
1.4 KiB
Ruby

# frozen_string_literal: true
class Callbacks::TelegramBots::UpdatesController < ApplicationController
before_action :set_telegram_bot
before_action :verify_telegram_bot_secret
skip_after_action :verify_authorized
# POST /callbacks/telegram_bots/:telegram_bot_id/updates
def create
handle_message 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
return if params[:secret] == @telegram_bot.secret
raise NotAuthorizedError.new query: "#{action_name}?",
record: @telegram_bot
end
def handle_message(message)
return if message.blank?
telegram_chat = handle_chat message[:chat]
return if @telegram_bot.username.nil?
case message[:text]
when '/shrug', "/shrug@#{@telegram_bot.username}"
@telegram_bot.client.send_message(
chat_id: telegram_chat.remote_id,
text: '¯\_(ツ)_/¯',
)
end
end
def handle_chat(chat)
return if chat.blank?
telegram_chat = TelegramChat.where(remote_id: chat[:id]).first_or_initialize
telegram_chat.chat_type = chat[:type]
telegram_chat.title = chat[:title]
telegram_chat.username = chat[:username]
telegram_chat.first_name = chat[:first_name]
telegram_chat.last_name = chat[:last_name]
telegram_chat.save!
telegram_chat
end
end