Class: Discorb::Intents

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

Overview

Represents intents.

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, message_content: false, scheduled_events: true, automod_configuration: true, automod_execution: true) ⇒ Intents

Note:

You must enable privileged intents to use members presences and/or message_content 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.

  • 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.

  • 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.

  • message_content (Boolean) (defaults to: false)

    Whether message content will be sent with events.

  • scheduled_events (Boolean) (defaults to: true)

    Whether events related scheduled events are enabled.

  • automod_configuration (Boolean) (defaults to: true)

    Whether automod configuration related events are enabled.

  • automod_execution (Boolean) (defaults to: true)

    Whether automod execution related events are enabled.



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/discorb/intents.rb', line 53

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,
  message_content: false,
  scheduled_events: true,
  automod_configuration: true,
  automod_execution: true
)
  @raw_value = {
    guilds:,
    members:,
    bans:,
    emojis:,
    integrations:,
    webhooks:,
    invites:,
    voice_states:,
    presences:,
    messages:,
    reactions:,
    typing:,
    dm_messages:,
    dm_reactions:,
    dm_typing:,
    message_content:,
    scheduled_events:,
    automod_configuration:,
    automod_execution:
  }
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.



100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'lib/discorb/intents.rb', line 100

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)
    unless args.is_a?(TrueClass) || args.is_a?(FalseClass)
      raise ArgumentError, "true/false expected"
    end

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

Class Method Details

.allObject

Create new intent object with all intents.



148
149
150
# File 'lib/discorb/intents.rb', line 148

def all
  from_value(INTENT_BITS.values.reduce(:+))
end

.from_value(value) ⇒ Object

Create new intent object from raw value.

Parameters:

  • value (Integer)

    The value of the intent.



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

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

.noneObject

Create new intent object with no intents.



153
154
155
# File 'lib/discorb/intents.rb', line 153

def none
  from_value(0)
end

Instance Method Details

#inspectObject



126
127
128
# File 'lib/discorb/intents.rb', line 126

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

#respond_to_missing?(name, include_private) ⇒ Boolean

Returns:

  • (Boolean)


114
115
116
# File 'lib/discorb/intents.rb', line 114

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

#to_hObject



130
131
132
# File 'lib/discorb/intents.rb', line 130

def to_h
  @raw_value
end

#valueInteger

Returns value of the intent.

Returns:

  • (Integer)

    The value of the intent.



120
121
122
123
124
# File 'lib/discorb/intents.rb', line 120

def value
  res = 0
  INTENT_BITS.each { |intent, bit| res += bit if @raw_value[intent] }
  res
end