Class: Discordrb::Server
- Inherits:
-
Object
- Object
- Discordrb::Server
- Includes:
- IDObject, ServerAttributes
- Defined in:
- lib/discordrb/data.rb
Overview
A server on Discord
Constant Summary collapse
- VERIFICATION_LEVELS =
A map of possible server verification levels to symbol names
{ none: 0, low: 1, medium: 2, high: 3, very_high: 4 }.freeze
- NOTIFICATION_LEVELS =
A map of possible message notification levels to symbol names
{ all_messages: 0, only_mentions: 1 }.freeze
- FILTER_LEVELS =
A map of possible content filter levels to symbol names
{ disabled: 0, members_without_roles: 1, all_members: 2 }.freeze
Instance Attribute Summary collapse
-
#afk_timeout ⇒ Integer
The amount of time after which a voice user gets moved into the AFK channel, in seconds.
-
#channels ⇒ Array<Channel>
readonly
An array of all the channels (text and voice) on this server.
-
#emoji ⇒ Hash<Integer => Emoji>
(also: #emojis)
readonly
A hash of all the emoji available on this server.
-
#features ⇒ Array<Symbol>
readonly
The features of the server (eg. "INVITE_SPLASH").
-
#large ⇒ true, false
(also: #large?)
readonly
it means the members list may be inaccurate for a couple seconds after starting up the bot.
-
#member_count ⇒ Integer
readonly
The absolute number of members on this server, offline or not.
-
#owner ⇒ Member
The server owner.
-
#region_id ⇒ String
readonly
The ID of the region the server is on (e.g.
amsterdam
). -
#roles ⇒ Array<Role>
readonly
An array of all the roles created on this server.
-
#voice_states ⇒ Hash<Integer => VoiceState>
readonly
The hash (user ID => voice state) of voice states of members on this server.
Attributes included from ServerAttributes
Attributes included from IDObject
Instance Method Summary collapse
-
#add_member_using_token(user, access_token, nick: nil, roles: [], deaf: false, mute: false) ⇒ Member
Adds a member to this guild that has granted this bot's application an OAuth2 access token with the
guilds.join
scope. -
#afk_channel ⇒ Channel?
The AFK voice channel of this server, or
nil
if none is set. -
#afk_channel=(afk_channel) ⇒ Object
Sets the server's AFK channel.
-
#any_emoji? ⇒ true, false
(also: #has_emoji?, #emoji?)
Whether this server has any emoji or not.
-
#audit_logs(action: nil, user: nil, limit: 50, before: nil) ⇒ AuditLogs
The server's audit logs.
-
#available_voice_regions ⇒ Array<VoiceRegion>
Collection of available voice regions to this guild.
-
#ban(user, message_days = 0, reason: nil) ⇒ Object
Bans a user from this server.
-
#bans ⇒ Array<ServerBan>
A list of banned users on this server and the reason they were banned.
-
#begin_prune(days, reason = nil) ⇒ Integer
(also: #prune)
Prunes (kicks) an amount of members for inactivity.
-
#categories ⇒ Array<Channel>
An array of category channels on this server.
-
#create_channel(name, type = 0, topic: nil, bitrate: nil, user_limit: nil, permission_overwrites: nil, parent: nil, nsfw: false, rate_limit_per_user: nil, reason: nil) ⇒ Channel
Creates a channel on this server with the given name.
-
#create_role(name: 'new role', colour: 0, hoist: false, mentionable: false, permissions: 104_324_161, reason: nil) ⇒ Role
Creates a role on this server which can then be modified.
-
#default_channel(send_messages = false) ⇒ Channel?
(also: #general_channel)
The default channel is the text channel on this server with the highest position that the bot has Read Messages permission on.
-
#default_message_notifications ⇒ Symbol
The default message notifications settings of the server (:all = 'All messages', :mentions = 'Only @mentions').
-
#default_message_notifications=(notification_level) ⇒ Object
(also: #notification_level=)
Sets the default message notification level.
-
#delete ⇒ Object
Deletes this server.
-
#embed_channel ⇒ Channel?
(also: #widget_channel)
The channel the server embed will make an invite for.
-
#embed_channel=(channel) ⇒ Object
(also: #widget_channel=)
Changes the channel on the server's embed (widget).
-
#embed_enabled=(value) ⇒ Object
(also: #widget_enabled=)
Sets whether this server's embed (widget) is enabled.
-
#embed_enabled? ⇒ true, false
(also: #widget_enabled, #widget?, #embed?)
Whether or not the server has widget enabled.
-
#everyone_role ⇒ Role
The @everyone role on this server.
-
#explicit_content_filter ⇒ Symbol
(also: #content_filter_level)
The explicit content filter level of the server (:none = 'Don't scan any messages.', :exclude_roles = 'Scan messages for members without a role.', :all = 'Scan messages sent by all members.').
-
#explicit_content_filter=(filter_level) ⇒ Object
Sets the server content filter.
-
#icon=(icon) ⇒ Object
Sets the server's icon.
-
#inspect ⇒ Object
The inspect method is overwritten to give more useful output.
-
#integrations ⇒ Array<Integration>
An array of all the integrations connected to this server.
-
#invites ⇒ Array<Invite>
Requests a list of Invites to the server.
-
#kick(user, reason = nil) ⇒ Object
Kicks a user from this server.
-
#leave ⇒ Object
Leave the server.
-
#member(id, request = true) ⇒ Object
Gets a member on this server based on user ID.
-
#members ⇒ Array<Member>
(also: #users)
An array of all the members on this server.
-
#modify_embed(enabled, channel, reason = nil) ⇒ Object
(also: #modify_widget)
Changes the channel on the server's embed (widget), and sets whether it is enabled.
-
#move(user, channel) ⇒ Object
Forcibly moves a user into a different voice channel.
-
#name=(name) ⇒ Object
Sets the server's name.
-
#online_members(include_idle: false, include_bots: true) ⇒ Array<Member>
(also: #online_users)
An array of online members on this server.
-
#orphan_channels ⇒ Array<Channel>
An array of channels on this server that are not in a category.
-
#prune_count(days) ⇒ Integer
Returns the amount of members that are candidates for pruning.
-
#region ⇒ VoiceRegion?
Voice region data for this server's region.
-
#region=(region) ⇒ Object
Moves the server to another region.
-
#role(id) ⇒ Object
Gets a role on this server based on its ID.
-
#set_embed_channel(channel, reason = nil) ⇒ Object
(also: #set_widget_channel)
Changes the channel on the server's embed (widget).
-
#set_embed_enabled(value, reason = nil) ⇒ Object
(also: #set_widget_enabled)
Sets whether this server's embed (widget) is enabled.
-
#splash=(splash_hash) ⇒ Object
Sets the server splash.
-
#splash_id ⇒ String
The hexadecimal ID used to identify this server's splash image for their VIP invite page.
-
#splash_url ⇒ String?
The splash image URL for the server's VIP invite page.
-
#system_channel ⇒ Channel?
The system channel (used for automatic welcome messages) of a server, or
nil
if none is set. -
#system_channel=(system_channel) ⇒ Object
Sets the server's system channel.
-
#text_channels ⇒ Array<Channel>
An array of text channels on this server.
-
#unban(user, reason = nil) ⇒ Object
Unbans a previously banned user from this server.
-
#verification_level ⇒ Symbol
The verification level of the server (:none = none, :low = 'Must have a verified email on their Discord account', :medium = 'Has to be registered with Discord for at least 5 minutes', :high = 'Has to be a member of this server for at least 10 minutes', :very_high = 'Must have a verified phone on their Discord account').
-
#verification_level=(level) ⇒ Object
Sets the verification level of the server.
-
#voice_channels ⇒ Array<Channel>
An array of voice channels on this server.
-
#webhooks ⇒ Array<Webhook>
Requests a list of Webhooks on the server.
-
#widget_banner_url(style) ⇒ String?
The widget banner URL to the server that displays the amount of online members, server icon and server name in a stylish way.
-
#widget_url ⇒ String?
The widget URL to the server that displays the amount of online members in a stylish way.
Methods included from ServerAttributes
Methods included from IDObject
#==, #creation_time, synthesise
Instance Attribute Details
#afk_timeout ⇒ Integer
Returns the amount of time after which a voice user gets moved into the AFK channel, in seconds.
2897 2898 2899 |
# File 'lib/discordrb/data.rb', line 2897 def afk_timeout @afk_timeout end |
#channels ⇒ Array<Channel> (readonly)
Returns an array of all the channels (text and voice) on this server.
2876 2877 2878 |
# File 'lib/discordrb/data.rb', line 2876 def channels @channels end |
#emoji ⇒ Hash<Integer => Emoji> (readonly) Also known as: emojis
Returns a hash of all the emoji available on this server.
2882 2883 2884 |
# File 'lib/discordrb/data.rb', line 2882 def emoji @emoji end |
#features ⇒ Array<Symbol> (readonly)
Returns the features of the server (eg. "INVITE_SPLASH").
2891 2892 2893 |
# File 'lib/discordrb/data.rb', line 2891 def features @features end |
#large ⇒ true, false (readonly) Also known as: large?
it means the members list may be inaccurate for a couple seconds after starting up the bot.
2887 2888 2889 |
# File 'lib/discordrb/data.rb', line 2887 def large @large end |
#member_count ⇒ Integer (readonly)
Returns the absolute number of members on this server, offline or not.
2894 2895 2896 |
# File 'lib/discordrb/data.rb', line 2894 def member_count @member_count end |
#owner ⇒ Member
Returns The server owner.
2873 2874 2875 |
# File 'lib/discordrb/data.rb', line 2873 def owner @owner end |
#region_id ⇒ String (readonly)
Returns the ID of the region the server is on (e.g. amsterdam
).
2870 2871 2872 |
# File 'lib/discordrb/data.rb', line 2870 def region_id @region_id end |
#roles ⇒ Array<Role> (readonly)
Returns an array of all the roles created on this server.
2879 2880 2881 |
# File 'lib/discordrb/data.rb', line 2879 def roles @roles end |
#voice_states ⇒ Hash<Integer => VoiceState> (readonly)
Returns the hash (user ID => voice state) of voice states of members on this server.
2900 2901 2902 |
# File 'lib/discordrb/data.rb', line 2900 def voice_states @voice_states end |
Instance Method Details
#add_member_using_token(user, access_token, nick: nil, roles: [], deaf: false, mute: false) ⇒ Member
Your bot must be present in this server, and have permission to create instant invites for this to work.
Adds a member to this guild that has granted this bot's application an OAuth2 access token
with the guilds.join
scope.
For more information about Discord's OAuth2 implementation, see: https://discordapp.com/developers/docs/topics/oauth2
3103 3104 3105 3106 3107 3108 |
# File 'lib/discordrb/data.rb', line 3103 def add_member_using_token(user, access_token, nick: nil, roles: [], deaf: false, mute: false) user_id = user.resolve_id roles = roles.is_a?(Array) ? roles.map(&:resolve_id) : [roles.resolve_id] response = JSON.parse(API::Server.add_member(@bot.token, @id, user_id, access_token, nick, roles, deaf, mute)) add_member Member.new(response, self, @bot) end |
#afk_channel ⇒ Channel?
Returns the AFK voice channel of this server, or nil
if none is set.
3563 3564 3565 |
# File 'lib/discordrb/data.rb', line 3563 def afk_channel @bot.channel(@afk_channel_id) if @afk_channel_id end |
#afk_channel=(afk_channel) ⇒ Object
Sets the server's AFK channel.
3435 3436 3437 |
# File 'lib/discordrb/data.rb', line 3435 def afk_channel=(afk_channel) update_server_data(afk_channel_id: afk_channel.resolve_id) end |
#any_emoji? ⇒ true, false Also known as: has_emoji?, emoji?
Returns whether this server has any emoji or not.
3523 3524 3525 |
# File 'lib/discordrb/data.rb', line 3523 def any_emoji? @emoji.any? end |
#audit_logs(action: nil, user: nil, limit: 50, before: nil) ⇒ AuditLogs
Returns The server's audit logs.
2999 3000 3001 3002 3003 3004 3005 3006 |
# File 'lib/discordrb/data.rb', line 2999 def audit_logs(action: nil, user: nil, limit: 50, before: nil) raise 'Invalid audit log action!' if action && AuditLogs::ACTIONS.key(action).nil? action = AuditLogs::ACTIONS.key(action) user = user.resolve_id if user before = before.resolve_id if before AuditLogs.new(self, @bot, JSON.parse(API::Server.audit_logs(@bot.token, @id, limit, user, action, before))) end |
#available_voice_regions ⇒ Array<VoiceRegion>
Returns collection of available voice regions to this guild.
3400 3401 3402 3403 3404 3405 3406 3407 |
# File 'lib/discordrb/data.rb', line 3400 def available_voice_regions return @available_voice_regions if @available_voice_regions @available_voice_regions = {} data = JSON.parse API::Server.regions(@bot.token, @id) @available_voice_regions = data.map { |e| VoiceRegion.new e } end |
#ban(user, message_days = 0, reason: nil) ⇒ Object
Bans a user from this server.
3352 3353 3354 |
# File 'lib/discordrb/data.rb', line 3352 def ban(user, = 0, reason: nil) API::Server.ban_user(@bot.token, @id, user.resolve_id, , reason) end |
#bans ⇒ Array<ServerBan>
Returns a list of banned users on this server and the reason they were banned.
3341 3342 3343 3344 3345 3346 |
# File 'lib/discordrb/data.rb', line 3341 def bans response = JSON.parse(API::Server.bans(@bot.token, @id)) response.map do |e| ServerBan.new(self, User.new(e['user'], @bot), e['reason']) end end |
#begin_prune(days, reason = nil) ⇒ Integer Also known as: prune
Prunes (kicks) an amount of members for inactivity
3126 3127 3128 3129 3130 3131 |
# File 'lib/discordrb/data.rb', line 3126 def begin_prune(days, reason = nil) raise ArgumentError, 'Days must be between 1 and 30' unless days.between?(1, 30) response = JSON.parse API::Server.begin_prune(@bot.token, @id, days, reason) response['pruned'] end |
#categories ⇒ Array<Channel>
Returns an array of category channels on this server.
3146 3147 3148 |
# File 'lib/discordrb/data.rb', line 3146 def categories @channels.select(&:category?) end |
#create_channel(name, type = 0, topic: nil, bitrate: nil, user_limit: nil, permission_overwrites: nil, parent: nil, nsfw: false, rate_limit_per_user: nil, reason: nil) ⇒ Channel
If parent is provided, permission overwrites have the follow behavior:
- If overwrites is null, the new channel inherits the parent's permissions.
- If overwrites is [], the new channel inherits the parent's permissions.
- If you supply one or more overwrites, the channel will be created with those permissions and ignore the parents.
Creates a channel on this server with the given name.
3302 3303 3304 3305 3306 3307 3308 3309 3310 |
# File 'lib/discordrb/data.rb', line 3302 def create_channel(name, type = 0, topic: nil, bitrate: nil, user_limit: nil, permission_overwrites: nil, parent: nil, nsfw: false, rate_limit_per_user: nil, reason: nil) type = Channel::TYPES[type] if type.is_a?(Symbol) raise ArgumentError, 'Channel type must be either 0 (text), 2 (voice), or 4 (category)!' unless [0, 2, 4].include?(type) .map! { |e| e.is_a?(Overwrite) ? e.to_hash : e } if .is_a?(Array) parent_id = parent.respond_to?(:resolve_id) ? parent.resolve_id : nil response = API::Server.create_channel(@bot.token, @id, name, type, topic, bitrate, user_limit, , parent_id, nsfw, rate_limit_per_user, reason) Channel.new(JSON.parse(response), @bot) end |
#create_role(name: 'new role', colour: 0, hoist: false, mentionable: false, permissions: 104_324_161, reason: nil) ⇒ Role
Creates a role on this server which can then be modified. It will be initialized with the regular role defaults the client uses unless specified, i.e. name is "new role", permissions are the default, colour is the default etc.
3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 |
# File 'lib/discordrb/data.rb', line 3322 def create_role(name: 'new role', colour: 0, hoist: false, mentionable: false, permissions: 104_324_161, reason: nil) colour = colour.respond_to?(:combined) ? colour.combined : colour = if .is_a?(Array) Permissions.bits() elsif .respond_to?(:bits) .bits else end response = API::Server.create_role(@bot.token, @id, name, colour, hoist, mentionable, , reason) role = Role.new(JSON.parse(response), @bot, self) @roles << role role end |
#default_channel(send_messages = false) ⇒ Channel? Also known as: general_channel
The default channel is the text channel on this server with the highest position that the bot has Read Messages permission on.
2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 |
# File 'lib/discordrb/data.rb', line 2937 def default_channel( = false) bot_member = member(@bot.profile) text_channels.sort_by { |e| [e.position, e.id] }.find do |e| if bot_member.(e) && bot_member.(e) else bot_member.(e) end end end |
#default_message_notifications ⇒ Symbol
Returns the default message notifications settings of the server (:all = 'All messages', :mentions = 'Only @mentions').
3480 3481 3482 |
# File 'lib/discordrb/data.rb', line 3480 def NOTIFICATION_LEVELS.key @default_message_notifications end |
#default_message_notifications=(notification_level) ⇒ Object Also known as: notification_level=
Sets the default message notification level
3486 3487 3488 3489 3490 |
# File 'lib/discordrb/data.rb', line 3486 def (notification_level) notification_level = NOTIFICATION_LEVELS[notification_level] if notification_level.is_a?(Symbol) update_server_data(default_message_notifications: notification_level) end |
#delete ⇒ Object
Deletes this server. Be aware that this is permanent and impossible to undo, so be careful!
3378 3379 3380 |
# File 'lib/discordrb/data.rb', line 3378 def delete API::Server.delete(@bot.token, @id) end |
#embed_channel ⇒ Channel? Also known as: widget_channel
Returns the channel the server embed will make an invite for.
3027 3028 3029 3030 |
# File 'lib/discordrb/data.rb', line 3027 def if @embed_enabled.nil? @bot.channel(@embed_channel_id) if @embed_channel_id end |
#embed_channel=(channel) ⇒ Object Also known as: widget_channel=
Changes the channel on the server's embed (widget)
3052 3053 3054 |
# File 'lib/discordrb/data.rb', line 3052 def (channel) (, channel) end |
#embed_enabled=(value) ⇒ Object Also known as: widget_enabled=
Sets whether this server's embed (widget) is enabled
3035 3036 3037 |
# File 'lib/discordrb/data.rb', line 3035 def (value) (value, ) end |
#embed_enabled? ⇒ true, false Also known as: widget_enabled, widget?, embed?
Returns whether or not the server has widget enabled.
3018 3019 3020 3021 |
# File 'lib/discordrb/data.rb', line 3018 def if @embed_enabled.nil? @embed_enabled end |
#everyone_role ⇒ Role
Returns The @everyone role on this server.
2951 2952 2953 |
# File 'lib/discordrb/data.rb', line 2951 def everyone_role role(@id) end |
#explicit_content_filter ⇒ Symbol Also known as: content_filter_level
Returns the explicit content filter level of the server (:none = 'Don't scan any messages.', :exclude_roles = 'Scan messages for members without a role.', :all = 'Scan messages sent by all members.').
3508 3509 3510 |
# File 'lib/discordrb/data.rb', line 3508 def explicit_content_filter FILTER_LEVELS.key @explicit_content_filter end |
#explicit_content_filter=(filter_level) ⇒ Object
Sets the server content filter.
3516 3517 3518 3519 3520 |
# File 'lib/discordrb/data.rb', line 3516 def explicit_content_filter=(filter_level) filter_level = FILTER_LEVELS[filter_level] if filter_level.is_a?(Symbol) update_server_data(explicit_content_filter: filter_level) end |
#icon=(icon) ⇒ Object
Sets the server's icon.
3423 3424 3425 3426 3427 3428 3429 3430 3431 |
# File 'lib/discordrb/data.rb', line 3423 def icon=(icon) if icon.respond_to? :read icon_string = 'data:image/jpg;base64,' icon_string += Base64.strict_encode64(icon.read) update_server_data(icon_id: icon_string) else update_server_data(icon_id: icon) end end |
#inspect ⇒ Object
The inspect method is overwritten to give more useful output
3622 3623 3624 |
# File 'lib/discordrb/data.rb', line 3622 def inspect "<Server name=#{@name} id=#{@id} large=#{@large} region=#{@region} owner=#{@owner} afk_channel_id=#{@afk_channel_id} system_channel_id=#{@system_channel_id} afk_timeout=#{@afk_timeout}>" end |
#integrations ⇒ Array<Integration>
Returns an array of all the integrations connected to this server.
2989 2990 2991 2992 |
# File 'lib/discordrb/data.rb', line 2989 def integrations integration = JSON.parse(API::Server.integrations(@bot.token, @id)) integration.map { |element| Integration.new(element, @bot, self) } end |
#invites ⇒ Array<Invite>
Requests a list of Invites to the server.
3539 3540 3541 3542 |
# File 'lib/discordrb/data.rb', line 3539 def invites invites = JSON.parse(API::Server.invites(@bot.token, @id)) invites.map { |invite| Invite.new(invite, @bot) } end |
#kick(user, reason = nil) ⇒ Object
Kicks a user from this server.
3366 3367 3368 |
# File 'lib/discordrb/data.rb', line 3366 def kick(user, reason = nil) API::Server.remove_member(@bot.token, @id, user.resolve_id, reason) end |
#leave ⇒ Object
Leave the server.
3383 3384 3385 |
# File 'lib/discordrb/data.rb', line 3383 def leave API::User.leave_server(@bot.token, @id) end |
#member(id, request = true) ⇒ Object
Gets a member on this server based on user ID
2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 |
# File 'lib/discordrb/data.rb', line 2965 def member(id, request = true) id = id.resolve_id return @members[id] if member_cached?(id) return nil unless request member = @bot.member(self, id) @members[id] = member unless member.nil? rescue StandardError nil end |
#members ⇒ Array<Member> Also known as: users
Returns an array of all the members on this server.
2977 2978 2979 2980 2981 2982 2983 2984 |
# File 'lib/discordrb/data.rb', line 2977 def members return @members.values if @chunked @bot.debug("Members for server #{@id} not chunked yet - initiating") @bot.request_chunks(@id) sleep 0.05 until @chunked @members.values end |
#modify_embed(enabled, channel, reason = nil) ⇒ Object Also known as: modify_widget
Changes the channel on the server's embed (widget), and sets whether it is enabled.
3071 3072 3073 3074 3075 3076 3077 |
# File 'lib/discordrb/data.rb', line 3071 def (enabled, channel, reason = nil) if @embed_enabled.nil? channel_id = channel ? channel.resolve_id : @embed_channel_id response = JSON.parse(API::Server.(@bot.token, @id, enabled, channel_id, reason)) @embed_enabled = response['enabled'] @embed_channel_id = response['channel_id'] end |
#move(user, channel) ⇒ Object
Forcibly moves a user into a different voice channel. Only works if the bot has the permission needed.
3373 3374 3375 |
# File 'lib/discordrb/data.rb', line 3373 def move(user, channel) API::Server.update_member(@bot.token, @id, user.resolve_id, channel_id: channel.resolve_id) end |
#name=(name) ⇒ Object
Sets the server's name.
3395 3396 3397 |
# File 'lib/discordrb/data.rb', line 3395 def name=(name) update_server_data(name: name) end |
#online_members(include_idle: false, include_bots: true) ⇒ Array<Member> Also known as: online_users
Returns an array of online members on this server.
3084 3085 3086 3087 3088 |
# File 'lib/discordrb/data.rb', line 3084 def online_members(include_idle: false, include_bots: true) @members.values.select do |e| ((include_idle ? e.idle? : false) || e.online?) && (include_bots ? true : !e.bot_account?) end end |
#orphan_channels ⇒ Array<Channel>
Returns an array of channels on this server that are not in a category.
3151 3152 3153 |
# File 'lib/discordrb/data.rb', line 3151 def orphan_channels @channels.reject { |c| c.parent || c.category? } end |
#prune_count(days) ⇒ Integer
Returns the amount of members that are candidates for pruning
3114 3115 3116 3117 3118 3119 |
# File 'lib/discordrb/data.rb', line 3114 def prune_count(days) raise ArgumentError, 'Days must be between 1 and 30' unless days.between?(1, 30) response = JSON.parse API::Server.prune_count(@bot.token, @id, days) response['pruned'] end |
#region ⇒ VoiceRegion?
This may return nil
if this server's voice region is deprecated.
Returns voice region data for this server's region.
3411 3412 3413 |
# File 'lib/discordrb/data.rb', line 3411 def region available_voice_regions.find { |e| e.id == @region_id } end |
#region=(region) ⇒ Object
Moves the server to another region. This will cause a voice interruption of at most a second.
3417 3418 3419 |
# File 'lib/discordrb/data.rb', line 3417 def region=(region) update_server_data(region: region.to_s) end |
#role(id) ⇒ Object
Gets a role on this server based on its ID.
2957 2958 2959 2960 |
# File 'lib/discordrb/data.rb', line 2957 def role(id) id = id.resolve_id @roles.find { |e| e.id == id } end |
#set_embed_channel(channel, reason = nil) ⇒ Object Also known as: set_widget_channel
Changes the channel on the server's embed (widget)
3061 3062 3063 |
# File 'lib/discordrb/data.rb', line 3061 def (channel, reason = nil) (, channel, reason) end |
#set_embed_enabled(value, reason = nil) ⇒ Object Also known as: set_widget_enabled
Sets whether this server's embed (widget) is enabled
3044 3045 3046 |
# File 'lib/discordrb/data.rb', line 3044 def (value, reason = nil) (value, , reason) end |
#splash=(splash_hash) ⇒ Object
Sets the server splash
3496 3497 3498 |
# File 'lib/discordrb/data.rb', line 3496 def splash=(splash_hash) update_server_data(splash: splash_hash) end |
#splash_id ⇒ String
Returns the hexadecimal ID used to identify this server's splash image for their VIP invite page.
3180 3181 3182 |
# File 'lib/discordrb/data.rb', line 3180 def splash_id @splash_id ||= JSON.parse(API::Server.resolve(@bot.token, @id))['splash'] end |
#splash_url ⇒ String?
Returns the splash image URL for the server's VIP invite page.
nil
if there is no splash image.
3186 3187 3188 3189 3190 3191 |
# File 'lib/discordrb/data.rb', line 3186 def splash_url splash_id if @splash_id.nil? return nil unless @splash_id API.splash_url(@id, @splash_id) end |
#system_channel ⇒ Channel?
Returns the system channel (used for automatic welcome messages) of a server, or nil
if none is set.
3568 3569 3570 |
# File 'lib/discordrb/data.rb', line 3568 def system_channel @bot.channel(@system_channel_id) if @system_channel_id end |
#system_channel=(system_channel) ⇒ Object
Sets the server's system channel.
3441 3442 3443 |
# File 'lib/discordrb/data.rb', line 3441 def system_channel=(system_channel) update_server_data(system_channel_id: system_channel.resolve_id) end |
#text_channels ⇒ Array<Channel>
Returns an array of text channels on this server.
3136 3137 3138 |
# File 'lib/discordrb/data.rb', line 3136 def text_channels @channels.select(&:text?) end |
#unban(user, reason = nil) ⇒ Object
Unbans a previously banned user from this server.
3359 3360 3361 |
# File 'lib/discordrb/data.rb', line 3359 def unban(user, reason = nil) API::Server.unban_user(@bot.token, @id, user.resolve_id, reason) end |
#verification_level ⇒ Symbol
Returns the verification level of the server (:none = none, :low = 'Must have a verified email on their Discord account', :medium = 'Has to be registered with Discord for at least 5 minutes', :high = 'Has to be a member of this server for at least 10 minutes', :very_high = 'Must have a verified phone on their Discord account').
3461 3462 3463 |
# File 'lib/discordrb/data.rb', line 3461 def verification_level VERIFICATION_LEVELS.key @verification_level end |
#verification_level=(level) ⇒ Object
Sets the verification level of the server
3467 3468 3469 3470 3471 |
# File 'lib/discordrb/data.rb', line 3467 def verification_level=(level) level = VERIFICATION_LEVELS[level] if level.is_a?(Symbol) update_server_data(verification_level: level) end |
#voice_channels ⇒ Array<Channel>
Returns an array of voice channels on this server.
3141 3142 3143 |
# File 'lib/discordrb/data.rb', line 3141 def voice_channels @channels.select(&:voice?) end |
#webhooks ⇒ Array<Webhook>
Requests a list of Webhooks on the server.
3532 3533 3534 3535 |
# File 'lib/discordrb/data.rb', line 3532 def webhooks webhooks = JSON.parse(API::Server.webhooks(@bot.token, @id)) webhooks.map { |webhook| Webhook.new(webhook, @bot) } end |
#widget_banner_url(style) ⇒ String?
Returns the widget banner URL to the server that displays the amount of online members,
server icon and server name in a stylish way. nil
if the widget is not enabled.
3172 3173 3174 3175 3176 3177 |
# File 'lib/discordrb/data.rb', line 3172 def (style) update_data if @embed_enabled.nil? return unless @embed_enabled API.(@id, style) end |
#widget_url ⇒ String?
Returns the widget URL to the server that displays the amount of online members in a
stylish way. nil
if the widget is not enabled.
3157 3158 3159 3160 3161 3162 |
# File 'lib/discordrb/data.rb', line 3157 def update_data if @embed_enabled.nil? return unless @embed_enabled API.(@id) end |