Class: Lita::Handlers::Queue
- Inherits:
-
Handler
- Object
- Handler
- Lita::Handlers::Queue
- Defined in:
- lib/lita/handlers/queue.rb
Instance Method Summary collapse
-
#fetch_queue(room) ⇒ Object
API.
- #queue_change_to_next(response) ⇒ Object
-
#queue_list(response) ⇒ Object
Commands.
- #queue_list_next(response) ⇒ Object
- #queue_me(response) ⇒ Object
- #queue_rotate(response) ⇒ Object
- #store_queue(room, queue) ⇒ Object
- #unqueue_me(response) ⇒ Object
Instance Method Details
#fetch_queue(room) ⇒ Object
API
15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/lita/handlers/queue.rb', line 15 def fetch_queue(room) raise ArgumentError, 'must be a Lita::Room object' unless room.is_a? Lita::Room serialized = redis.get(room.id) if serialized MultiJson.load(serialized) else [] end end |
#queue_change_to_next(response) ⇒ Object
81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/lita/handlers/queue.rb', line 81 def queue_change_to_next(response) room = room_for(response) queue = fetch_queue(room) unless queue.empty? removed = queue.shift store_queue(room, queue) response.reply t('messages.removed_from_queue', mention: removed) response.reply t('messages.is_the_next_on_queue_motivate', mention: queue.first) unless queue.empty? end response.reply display_queue(queue, room) end |
#queue_list(response) ⇒ Object
Commands
33 34 35 36 37 38 |
# File 'lib/lita/handlers/queue.rb', line 33 def queue_list(response) room = room_for(response) queue = fetch_queue(room) response.reply display_queue(queue, room) end |
#queue_list_next(response) ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/lita/handlers/queue.rb', line 68 def queue_list_next(response) room = room_for(response) queue = fetch_queue(room) if queue.empty? response.reply t('messages.queue_is_empty') elsif queue.size == 1 response.reply t('messages.is_the_last_on_queue', mention: queue.first) else response.reply t('messages.is_the_next_on_queue', mention: queue[1]) end end |
#queue_me(response) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/lita/handlers/queue.rb', line 40 def queue_me(response) room = room_for(response) queue = fetch_queue(room) me = response.user.mention_name if queue.include? me response.reply t('messages.already_on_queue') else queue << me store_queue(room, queue) response.reply t('messages.added_to_queue', mention: me) end end |
#queue_rotate(response) ⇒ Object
95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/lita/handlers/queue.rb', line 95 def queue_rotate(response) room = room_for(response) queue = fetch_queue(room) unless queue.empty? new_queue = queue.rotate store_queue(room, new_queue) response.reply t('messages.moved_to_the_end_of_queue', mention: queue.first) response.reply t('messages.is_the_next_on_queue_motivate', mention: new_queue.first) end response.reply display_queue(queue, room) end |
#store_queue(room, queue) ⇒ Object
27 28 29 |
# File 'lib/lita/handlers/queue.rb', line 27 def store_queue(room, queue) redis.set room.id, MultiJson.dump(queue) end |
#unqueue_me(response) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/lita/handlers/queue.rb', line 54 def unqueue_me(response) room = room_for(response) queue = fetch_queue(room) me = response.user.mention_name if queue.include? me queue.delete(me) store_queue(room, queue) response.reply t('messages.removed_from_queue', mention: me) else response.reply t('messages.not_on_queue') end end |