class MijDiscord::Data::Webhook

Attributes

avatar_id[R]
bot[R]
channel[R]
name[R]
owner[R]
token[R]

Public Class Methods

new(data, bot) click to toggle source
# File lib/mij-discord/data/webhook.rb, line 19
def initialize(data, bot)
  @bot = bot

  @id = data['id'].to_id
  @token = data['token']
  update_data(data)

  if (user = data['user'])
    unless (@owner = server.member(user['id']))
      @owner = @bot.cache.put_user(user)
    end
  end
end

Public Instance Methods

avatar(format = nil)
Alias for: avatar_url
avatar=(data, format = :png, reason = nil)
Alias for: set_avatar
avatar_url(format = nil) click to toggle source
# File lib/mij-discord/data/webhook.rb, line 47
def avatar_url(format = nil)
  return MijDiscord::Core::API::User.default_avatar(0) unless @avatar_id
  MijDiscord::Core::API::User.avatar_url(@id, @avatar_id, format)
end
Also aliased as: avatar
channel=(channel, reason = nil)
Alias for: set_channel
delete(reason = nil) click to toggle source
# File lib/mij-discord/data/webhook.rb, line 79
def delete(reason = nil)
  if via_token?
    MijDiscord::Core::API::Webhook.token_delete_webhook(@token, @id, reason)
  else
    MijDiscord::Core::API::Webhook.delete_webhook(@bot.auth, @id, reason)
  end

  nil
end
execute(text: '', name: nil, avatar: nil, tts: false, embeds: [], file: nil, wait: true) click to toggle source
# File lib/mij-discord/data/webhook.rb, line 89
def execute(text: '', name: nil, avatar: nil, tts: false, embeds: [], file: nil, wait: true)
  raise 'Not yet implemented' unless file.nil? # TODO: Implement

  params = {
    content: text,
    username: name,
    avatar_url: avatar,
    tts: tts,
    embeds: embeds.map(&:to_hash),
  }.delete_if {|_,v| v.nil? }

  response = MijDiscord::Core::API::Webhook.execute_json(@token, @id, params, wait)
  wait ? Message.new(JSON.parse(response), @bot) : nil
end
inspect() click to toggle source
# File lib/mij-discord/data/webhook.rb, line 104
def inspect
  MijDiscord.make_inspect(self, :id, :name, :channel, :owner)
end
name=(name, reason = nil)
Alias for: set_name
server() click to toggle source
# File lib/mij-discord/data/webhook.rb, line 43
def server
  @channel.server
end
set_avatar(data, format = :png, reason = nil) click to toggle source
# File lib/mij-discord/data/webhook.rb, line 72
def set_avatar(data, format = :png, reason = nil)
  data = User.process_avatar(data, format, true)
  update_webhook(reason, avatar: data)
end
Also aliased as: avatar=
set_channel(channel, reason = nil) click to toggle source
# File lib/mij-discord/data/webhook.rb, line 66
def set_channel(channel, reason = nil)
  update_webhook(reason, channel_id: channel.to_id)
end
Also aliased as: channel=
set_name(name, reason = nil) click to toggle source
# File lib/mij-discord/data/webhook.rb, line 60
def set_name(name, reason = nil)
  update_webhook(reason, name: name)
end
Also aliased as: name=
set_options(reason = nil, name: nil, channel: nil, avatar: nil, format: :png) click to toggle source
# File lib/mij-discord/data/webhook.rb, line 54
def set_options(reason = nil, name: nil, channel: nil, avatar: nil, format: :png)
  data = {name: name, channel_id: channel&.to_id}
  data[:avatar] = User.process_avatar(avatar, format, true) unless avatar.nil?
  update_webhook(reason, **data.delete_if {|_,v| v.nil? })
end
update_data(data) click to toggle source
# File lib/mij-discord/data/webhook.rb, line 33
def update_data(data)
  @name = data['name']
  @channel = @bot.channel(data['channel_id'])
  @avatar_id = data['avatar']
end
via_token?() click to toggle source
# File lib/mij-discord/data/webhook.rb, line 39
def via_token?
  @owner.nil?
end

Private Instance Methods

update_webhook(reason, **data) click to toggle source
# File lib/mij-discord/data/webhook.rb, line 110
def update_webhook(reason, **data)
  response = if via_token?
    MijDiscord::Core::API::Webhook.token_update_webhook(@token, @id, data, reason)
  else
    MijDiscord::Core::API::Webhook.update_webhook(@bot.auth, @id, data, reason)
  end

  update_data(JSON.parse(response))
  nil
end