Class: ESM::User
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- ESM::User
- Defined in:
- lib/esm/model/user.rb,
lib/esm/model/user/ephemeral.rb
Defined Under Namespace
Classes: Ephemeral
Instance Attribute Summary collapse
Class Method Summary collapse
- .from_discord(discord_user) ⇒ Object
-
.parse(input) ⇒ Object
Parses and finds a user based off of SteamUID, Discord ID, or Discord Mention.
Instance Method Summary collapse
- #can_modify?(guild_id) ⇒ Boolean
- #channel_permission?(permission, channel) ⇒ Boolean
-
#developer? ⇒ Boolean
Instance Methods.
- #discord_servers ⇒ Object
Instance Attribute Details
#discord_user ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/esm/model/user.rb', line 53 def discord_user return if discord_id.nil? @discord_user ||= lambda do discord_user = ESM.bot.user(discord_id) return if discord_user.nil? # Keep the discord user data up-to-date incoming_attributes = [discord_user.username, discord_user.avatar_url] current_attributes = [discord_username, discord_avatar] if current_attributes != incoming_attributes update!( discord_username: discord_user.username, discord_avatar: discord_user.avatar_url ) end # Save some data for later consumption discord_user.esm_user = self discord_user end.call end |
Class Method Details
.from_discord(discord_user) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/esm/model/user.rb', line 33 def self.from_discord(discord_user) return if discord_user.nil? user = order(:discord_id) .where(discord_id: discord_user.id) .first_or_initialize user.update!(discord_username: discord_user.username, discord_avatar: discord_user.avatar_url) user.discord_user = discord_user user end |
.parse(input) ⇒ Object
Parses and finds a user based off of SteamUID, Discord ID, or Discord Mention
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/esm/model/user.rb', line 14 def self.parse(input) return if input.nil? # In case of frozen strings input = input.dup if input.frozen? # Discordrb stores the Discord ID as an Integer. input = input.to_s if !input.is_a?(String) if ESM::Regex::DISCORD_TAG_ONLY.match?(input) # Remove the extra stuff from a mention find_by_discord_id(input.gsub(/[<@!&>]/, "")) elsif input.steam_uid? find_by_steam_uid(input) else find_by_discord_id(input) end end |
Instance Method Details
#can_modify?(guild_id) ⇒ Boolean
85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/esm/model/user.rb', line 85 def can_modify?(guild_id) return false if discord_id.nil? return true if developer? && !Rails.env.development? community = Community.find_by_guild_id(guild_id) return false if community.nil? server = community.discord_server return false if server.nil? # Check if they're the owner or admin community.modifiable_by?(on(server)) end |
#channel_permission?(permission, channel) ⇒ Boolean
99 100 101 |
# File 'lib/esm/model/user.rb', line 99 def (, channel) !!on(channel.server)&.(, channel) end |