Class: Discordrb::Webhook
- Inherits:
-
Object
- Object
- Discordrb::Webhook
- Includes:
- IDObject
- Defined in:
- lib/discordrb/data.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.
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.
3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 |
# File 'lib/discordrb/data.rb', line 3736 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'] # 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.
3729 3730 3731 |
# File 'lib/discordrb/data.rb', line 3729 def avatar @avatar end |
#channel ⇒ Channel
Returns the channel that the webhook is currently connected to.
3720 3721 3722 |
# File 'lib/discordrb/data.rb', line 3720 def channel @channel end |
#name ⇒ String
Returns the webhook name.
3717 3718 3719 |
# File 'lib/discordrb/data.rb', line 3717 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
3734 3735 3736 |
# File 'lib/discordrb/data.rb', line 3734 def owner @owner end |
#server ⇒ Server (readonly)
Returns the server that the webhook is currently connected to.
3723 3724 3725 |
# File 'lib/discordrb/data.rb', line 3723 def server @server end |
#token ⇒ String (readonly)
Returns the webhook's token.
3726 3727 3728 |
# File 'lib/discordrb/data.rb', line 3726 def token @token end |
Instance Method Details
#avatar_url ⇒ String
Utility function to get a webhook's avatar URL.
3803 3804 3805 3806 |
# File 'lib/discordrb/data.rb', line 3803 def avatar_url return API::User.default_avatar unless @avatar API::User.avatar_url(@id, @avatar) end |
#delete(reason = nil) ⇒ Object
Deletes the webhook.
3793 3794 3795 3796 3797 3798 3799 |
# File 'lib/discordrb/data.rb', line 3793 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.
3761 3762 3763 |
# File 'lib/discordrb/data.rb', line 3761 def delete_avatar update_webhook(avatar: nil) end |
#inspect ⇒ Object
The inspect
method is overwritten to give more useful output.
3809 3810 3811 |
# File 'lib/discordrb/data.rb', line 3809 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.
3815 3816 3817 |
# File 'lib/discordrb/data.rb', line 3815 def token? @owner.nil? end |
#update(data) ⇒ Object
Updates the webhook if you need to edit more than 1 attribute.
3783 3784 3785 3786 3787 3788 3789 |
# File 'lib/discordrb/data.rb', line 3783 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 |