class Discorb::AllowedMentions

Represents a allowed mentions in a message.

Attributes

everyone[RW]

@return [Boolean] Whether to allow @everyone or @here.

replied_user[RW]

@return [Boolean] Whether to ping the user that sent the message to reply.

roles[RW]

@return [Boolean, Array<Discorb::Role>] The roles to allow, or false to disable.

users[RW]

@return [Boolean, Array<Discorb::User>] The users to allow, or false to disable.

Public Class Methods

new(everyone: nil, roles: nil, users: nil, replied_user: nil) click to toggle source

Initializes a new instance of the AllowedMentions class.

@param [Boolean] everyone Whether to allow @everyone or @here. @param [Boolean, Array<Discorb::Role>] roles The roles to allow, or false to disable. @param [Boolean, Array<Discorb::User>] users The users to allow, or false to disable. @param [Boolean] replied_user Whether to ping the user that sent the message to reply.

# File lib/discorb/message.rb, line 25
def initialize(everyone: nil, roles: nil, users: nil, replied_user: nil)
  @everyone = everyone
  @roles = roles
  @users = users
  @replied_user = replied_user
end

Public Instance Methods

nil_merge(*args) click to toggle source
# File lib/discorb/message.rb, line 54
def nil_merge(*args)
  args.each do |a|
    return a unless a.nil?
  end
  nil
end
to_hash(other = nil) click to toggle source

@!visibility private

# File lib/discorb/message.rb, line 33
def to_hash(other = nil)
  payload = {
    parse: %w[everyone roles users],
  }
  replied_user = nil_merge(@replied_user, other&.replied_user)
  everyone = nil_merge(@everyone, other&.everyone)
  roles = nil_merge(@roles, other&.roles)
  users = nil_merge(@users, other&.users)
  payload[:replied_user] = replied_user
  payload[:parse].delete("everyone") if everyone == false
  if (roles == false) || roles.is_a?(Array)
    payload[:roles] = roles.map { |u| u.id.to_s } if roles.is_a? Array
    payload[:parse].delete("roles")
  end
  if (users == false) || users.is_a?(Array)
    payload[:users] = users.map { |u| u.id.to_s } if users.is_a? Array
    payload[:parse].delete("users")
  end
  payload
end