blob: fa16e2b13d15543e14075a53d0e05627a1f9a38c (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# frozen_string_literal: true
class Scheduler::WerewolfScheduler
include Sidekiq::Worker
include Redisable
STATUS = ENV.fetch('WEREWOLF_STATUS', 'Werewolves successful.')
FOOTER = ENV.fetch('WEREWOLF_FOOTER', ':werewolf: werewolf-status')
sidekiq_options unique: :until_executed
def perform
return if redis.exists('werewolf-status')
return unless Setting.werewolf_status
moon_fraction = SunCalc.moon_illumination(Time.now.utc)[:fraction]
return unless moon_fraction >= 0.998
redis.set('werewolf-status', 1, ex: 1.day)
announcer = find_announcer_acct
return if announcer.nil?
PostStatusService.new.call(
announcer,
visibility: :public,
text: STATUS,
footer: FOOTER,
content_type: 'text/console',
)
end
private
def find_announcer_acct
announcer = ENV['ANNOUNCEMENTS_USER'].to_i
return if announcer == 0
Account.find_by(id: announcer)
end
end
|