Class: Discordrb::Webhook
- Inherits:
-
Object
- Object
- Discordrb::Webhook
- Includes:
- IDObject
- Defined in:
- lib/discordrb/data/webhook.rb
Overview
A webhook on a server channel
Instance Attribute Summary collapse
-
#avatar ⇒ String
The webhook's avatar id.
-
#channel ⇒ Channel
The channel that the webhook is currently connected to.
-
#name ⇒ String
The webhook name.
-
#owner ⇒ Member, ...
readonly
Gets the user object of the creator of the webhook.
-
#server ⇒ Server
readonly
The server that the webhook is currently connected to.
-
#token ⇒ String?
readonly
The webhook's token, if this is an Incoming Webhook.
-
#type ⇒ Integer
readonly
The webhook's type (1: Incoming, 2: Channel Follower).
Attributes included from IDObject
Instance Method Summary collapse
-
#avatar_url ⇒ String
Utility function to get a webhook's avatar URL.
-
#delete(reason = nil) ⇒ Object
Deletes the webhook.
-
#delete_avatar ⇒ Object
Deletes the webhook's avatar.
-
#initialize(data, bot) ⇒ Webhook
constructor
A new instance of Webhook.
-
#inspect ⇒ Object
The
inspect
method is overwritten to give more useful output. -
#token? ⇒ true, false
Utility function to know if the webhook was requested through a webhook token, rather than auth.
-
#update(data) ⇒ Object
Updates the webhook if you need to edit more than 1 attribute.
Methods included from IDObject
#==, #creation_time, synthesise
Constructor Details
#initialize(data, bot) ⇒ Webhook
Returns a new instance of Webhook.
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/discordrb/data/webhook.rb', line 31 def initialize(data, bot) @bot = bot @name = data['name'] @id = data['id'].to_i @channel = bot.channel(data['channel_id']) @server = @channel.server @token = data['token'] @avatar = data['avatar'] @type = data['type'] # Will not exist if the data was requested through a webhook token return unless data['user'] @owner = @server.member(data['user']['id'].to_i) return if @owner Discordrb::LOGGER.debug("Member with ID #{data['user']['id']} not cached (possibly left the server).") @owner = @bot.ensure_user(data['user']) end |
Instance Attribute Details
#avatar ⇒ String
Returns the webhook's avatar id.
21 22 23 |
# File 'lib/discordrb/data/webhook.rb', line 21 def avatar @avatar end |
#channel ⇒ Channel
Returns the channel that the webhook is currently connected to.
12 13 14 |
# File 'lib/discordrb/data/webhook.rb', line 12 def channel @channel end |
#name ⇒ String
Returns the webhook name.
9 10 11 |
# File 'lib/discordrb/data/webhook.rb', line 9 def name @name end |
#owner ⇒ Member, ... (readonly)
Gets the user object of the creator of the webhook. May be limited to username, discriminator, ID and avatar if the bot cannot reach the owner
29 30 31 |
# File 'lib/discordrb/data/webhook.rb', line 29 def owner @owner end |
#server ⇒ Server (readonly)
Returns the server that the webhook is currently connected to.
15 16 17 |
# File 'lib/discordrb/data/webhook.rb', line 15 def server @server end |
#token ⇒ String? (readonly)
Returns the webhook's token, if this is an Incoming Webhook.
18 19 20 |
# File 'lib/discordrb/data/webhook.rb', line 18 def token @token end |
#type ⇒ Integer (readonly)
Returns the webhook's type (1: Incoming, 2: Channel Follower).
24 25 26 |
# File 'lib/discordrb/data/webhook.rb', line 24 def type @type end |
Instance Method Details
#avatar_url ⇒ String
Utility function to get a webhook's avatar URL.
101 102 103 104 105 |
# File 'lib/discordrb/data/webhook.rb', line 101 def avatar_url return API::User.default_avatar unless @avatar API::User.avatar_url(@id, @avatar) end |
#delete(reason = nil) ⇒ Object
Deletes the webhook.
91 92 93 94 95 96 97 |
# File 'lib/discordrb/data/webhook.rb', line 91 def delete(reason = nil) if token? API::Webhook.token_delete_webhook(@token, @id, reason) else API::Webhook.delete_webhook(@bot.token, @id, reason) end end |
#delete_avatar ⇒ Object
Deletes the webhook's avatar.
59 60 61 |
# File 'lib/discordrb/data/webhook.rb', line 59 def delete_avatar update_webhook(avatar: nil) end |
#inspect ⇒ Object
The inspect
method is overwritten to give more useful output.
108 109 110 |
# File 'lib/discordrb/data/webhook.rb', line 108 def inspect "<Webhook name=#{@name} id=#{@id}>" end |
#token? ⇒ true, false
Utility function to know if the webhook was requested through a webhook token, rather than auth.
114 115 116 |
# File 'lib/discordrb/data/webhook.rb', line 114 def token? @owner.nil? end |
#update(data) ⇒ Object
Updates the webhook if you need to edit more than 1 attribute.
81 82 83 84 85 86 87 |
# File 'lib/discordrb/data/webhook.rb', line 81 def update(data) # Only pass a value for avatar if the key is defined as sending nil will delete the data[:avatar] = avatarise(data[:avatar]) if data.key?(:avatar) data[:channel_id] = data[:channel].resolve_id data.delete(:channel) update_webhook(data) end |