Class: Discorb::Intents

Inherits:
Object
  • Object
show all
Defined in:
lib/discorb/intents.rb

Overview

Represents intents.

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(guilds: true, members: false, bans: true, emojis: true, integrations: true, webhooks: true, invites: true, voice_states: true, presences: false, messages: true, reactions: true, typing: true, dm_messages: true, dm_reactions: true, dm_typing: true) -> Intents

Create new intents object with default (no members and presence) intents.

Parameters:

  • guilds (Boolean) (defaults to: true)

    Whether guild related events are enabled.

  • members (Boolean) (defaults to: false)

    Whether guild members related events are enabled. @note You must enable members intent on developers portal.

  • bans (Boolean) (defaults to: true)

    Whether guild ban related events are enabled.

  • emojis (Boolean) (defaults to: true)

    Whether guild emojis related events are enabled.

  • integrations (Boolean) (defaults to: true)

    Whether guild integration related events are enabled.

  • webhooks (Boolean) (defaults to: true)

    Whether guild webhooks related events are enabled.

  • invites (Boolean) (defaults to: true)

    Whether guild invite related events are enabled.

  • voice_states (Boolean) (defaults to: true)

    Whether guild voice state related events are enabled.

  • presences (Boolean) (defaults to: false)

    Whether guild presences related events are enabled. @note You must enable members intent on developers portal.

  • messages (Boolean) (defaults to: true)

    Whether guild messages related events are enabled.

  • reactions (Boolean) (defaults to: true)

    Whether guild reaction related events are enabled.

  • dm_messages (Boolean) (defaults to: true)

    Whether dm messages related events are enabled.

  • dm_reactions (Boolean) (defaults to: true)

    Whether dm reactions related events are enabled.

  • dm_typing (Boolean) (defaults to: true)

    Whether dm typing related events are enabled.



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/discorb/intents.rb', line 44

def initialize(guilds: true,
               members: false,
               bans: true,
               emojis: true,
               integrations: true,
               webhooks: true,
               invites: true,
               voice_states: true,
               presences: false,
               messages: true,
               reactions: true,
               typing: true,
               dm_messages: true,
               dm_reactions: true,
               dm_typing: true)
  @raw_value = {
    guilds: guilds,
    members: members,
    bans: bans,
    emojis: emojis,
    integrations: integrations,
    webhooks: webhooks,
    invites: invites,
    voice_states: voice_states,
    presences: presences,
    messages: messages,
    reactions: reactions,
    typing: typing,
    dm_messages: dm_messages,
    dm_reactions: dm_reactions,
    dm_typing: dm_typing,
  }
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, args = nil) -> Object

Returns the value of the flag.



81
82
83
84
85
86
87
88
89
90
91
# File 'lib/discorb/intents.rb', line 81

def method_missing(name, args = nil)
  if @raw_value.key?(name)
    @raw_value[name]
  elsif name.end_with?("=") && @raw_value.key?(name[0..-2].to_sym)
    raise ArgumentError, "true/false expected" if (!args.is_a? TrueClass) || args.is_a?(FalseClass)

    @raw_value[name[0..-2].to_sym] = args
  else
    super
  end
end

Class Attribute Details

.intent_bits -> Object (readonly)

Returns the value of attribute intent_bits.



137
138
139
# File 'lib/discorb/intents.rb', line 137

def intent_bits
  @intent_bits
end

Class Method Details

.all -> Object

Create new intent object with all intents.



128
129
130
# File 'lib/discorb/intents.rb', line 128

def all
  from_value(32_767)
end

.default -> Object

Create new intent object with default values.



123
124
125
# File 'lib/discorb/intents.rb', line 123

def default
  from_value(32_509)
end

.from_value(value) -> Object

Create new intent object from raw value.

Parameters:

  • value (Integer)

    The value of the intent.



114
115
116
117
118
119
120
# File 'lib/discorb/intents.rb', line 114

def from_value(value)
  raw_value = {}
  @intent_bits.each do |intent, bit|
    raw_value[intent] = value & bit != 0
  end
  new(**raw_value)
end

.none -> Object

Create new intent object with no intents.



133
134
135
# File 'lib/discorb/intents.rb', line 133

def none
  from_value(0)
end

Instance Method Details

#inspect -> Object



107
108
109
# File 'lib/discorb/intents.rb', line 107

def inspect
  "#<#{self.class} value=#{value}>"
end

#respond_to_missing?(sym, include_private) -> Boolean

Returns:

  • (Boolean)


93
94
95
# File 'lib/discorb/intents.rb', line 93

def respond_to_missing?(sym, include_private)
  @raw_value.key?(name) ? true : super
end

#value -> Integer

Returns value of the intent.

Returns:

  • (Integer)

    The value of the intent.



99
100
101
102
103
104
105
# File 'lib/discorb/intents.rb', line 99

def value
  res = 0
  self.class.intent_bits.each do |intent, bit|
    res += bit if @raw_value[intent]
  end
  res
end