module SingaiSession
Constants
- NOTHING_PLAYING_MESSAGE
- STOPPED_MESSAGE
Public Instance Methods
Source
# File lib/singai_session.rb, line 34 def begin_session(channel, sessions: sessions_store) key = channel_key(channel) token = (sessions.dig(key, :token) || 0) + 1 sessions[key] = { stopped: false, token: token } sessions[key] end
Source
# File lib/singai_session.rb, line 22 def channel_key(channel) channel.to_s.downcase end
Source
# File lib/singai_session.rb, line 26 def parse_command(text) cleaned = text.to_s.strip return nil if cleaned.empty? return { action: :stop } if cleaned.casecmp?("stop") { action: :singai, query: cleaned } end
Source
# File lib/singai_session.rb, line 52 def session_stopped?(channel, token, sessions: sessions_store) session = sessions[channel_key(channel)] !session || session[:stopped] || session[:token] != token end
Source
# File lib/singai_session.rb, line 18 def sessions_store @sessions_store ||= {} end
Source
# File lib/singai_session.rb, line 41 def stop_session(channel, sessions: sessions_store) key = channel_key(channel) session = sessions[key] unless session && !session[:stopped] return { stopped: false, message: NOTHING_PLAYING_MESSAGE } end session[:stopped] = true { stopped: true, message: STOPPED_MESSAGE } end