Sha256: 8ae53dd03ad9aaa134558efdd0c8ca06a22eb8c1552710a25bd26b531b821229
Contents?: true
Size: 1.14 KB
Versions: 1
Compression:
Stored size: 1.14 KB
Contents
module Discorb::View # # An extension for using discorb-view. # @note Client must extend this class to use discorb-view. # class Extension < Discorb::Extension event :button_click do |interaction| handle_interaction(interaction) end event :select_menu_select do |interaction| handle_interaction(interaction) end # @private def self.inherited(base) base.views = {} end # @private def handle_interaction(interaction) unless view = @client.views[interaction.message.id.to_s] @client.log.warn "View: No handler for #{interaction.message.id.to_s}" return end handler = view.class.components[interaction.custom_id.to_sym] @client.log.debug "View: Handling #{interaction.custom_id} in #{interaction.message.id}" view.interaction = interaction update = view.instance_exec(interaction, &handler.block) return unless update @client.log.debug "View: Updating view #{interaction.message.id}" view.render end def self.loaded(client) class << client attr_accessor :views end client.views = {} end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
discorb-view-0.2.0 | lib/discorb/view/extension.rb |