-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrelay_chat_message_job.rb
More file actions
22 lines (18 loc) · 936 Bytes
/
Copy pathrelay_chat_message_job.rb
File metadata and controls
22 lines (18 loc) · 936 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
module Telegram
# Разбор одного сообщения чата: кто его увидит. Сама отправка — в
# DeliverChatMessageJob, по джобе на получателя.
class RelayChatMessageJob < ApplicationJob
queue_as :default
def perform(game_id, sender_id, body)
game = Game.find_by(id: game_id)
sender = User.find_by(id: sender_id)
return unless game && sender && body.present?
# Отправитель тоже мог выйти из состава, пока сообщение ждало очереди.
return unless game.chat_open? && game.team_member_ids.include?(sender.id)
text = Telegram::Chat::Message.render(game: game, sender: sender, body: body)
game.chat_members.where.not(id: sender.id).find_each do |recipient|
Telegram::DeliverChatMessageJob.perform_later(game.id, recipient.id, text)
end
end
end
end