class

PrivateParlorXT::User

Inherits Reference < Object

A reprentation of a Telegram user.

All users require an ID, which is obtained from the Telegram user (Tourmaline::User). This ID should be unique and stored as a UserID.

Database implementations should have their own User type that inherits from this class and is modified to work with the given implementation.

Constructors

new(id : UserID, username : String | Nil = nil, realname : String = "", rank : Int32 = 0, joined : Time = Time.utc, left : Time | Nil = nil, last_active : Time = Time.utc, cooldown_until : Time | Nil = nil, blacklist_reason : String | Nil = nil, warnings : Int32 = 0, warn_expiry : Time | Nil = nil, karma : Int32 = 0, hide_karma : Bool | Nil = false, debug_enabled : Bool | Nil = false, tripcode : String | Nil = nil)

Creates an instance of User.

Arguments:

id : unique UserID identifier for this user

username : username of this user; can be nil

realname : full name (first name + last name) of the user

rank : rank of this user, corresponding to either -10 (blacklisted) or one of the configurable ranks

joined : date and time the user joined the chat

left : date and time the user left the chat; if nil, the user is still in the chat

last_active : date and time the user last sent a message or used a command

cooldown_until : date and time for until which the user cannot send messages; if nil, the user is not in cooldown

blacklist_reason : described reason for blacklisting the user (seeBlacklistCommand) ; set to nil by default

warnings : number of warnings the user received from WarnCommand or DeleteCommand; cooldown times are based off of this value

warn_expiry : date and time in which one of the warnings will be removed; if nil, user has no warnings to remove

karma : points the user acquired from upvotes, or lost from downvotes and warnings (see UpvoteHandler, DownvoteHandler)

hide_karma : toggle for receiving karma notifications (see ToggleKarmaCommand); if true, the user will not receive karma notifications

debug_enabled : toggle for debug mode (see ToggleDebugCommand); if true, the user will receive a copy of their sent message that everyone else received

tripcode : a name and password pairing used for generating pseudononyms attached to the user's message; if nil, user has no tripcode

Source

Instance methods

blacklist(reason : String | Nil) : Nil

Set the user's rank to -10 (blacklisted), sets the left value, and updates the blacklist_reason

Source
blacklist_reason

Returns the reason why the user was blacklisted, or nil if a reason does not exist

Source
blacklisted?

Returns true if rank is -10; user is blacklisted.

Returns false otherwise.

Source
can_chat?(limit : Time::Span) : Bool

Returns true if user is joined, not in cooldown, not blacklisted, and not limited; user can chat

Returns false otherwise.

Source
can_chat?

Returns true if user is joined, not in cooldown, and not blacklisted; user can chat

Returns false otherwise.

Source
can_use_command?

Returns true if user is joined and not blacklisted; user can use commands

Returns false otherwise.

Source
cooldown(base : Int32) : Time::Span

Gives the user an exponentially increasing cooldown from the given base value and current number of warnings

Source
cooldown(time : Time::Span) : Time::Span

Gives the user a cooldown based on the given Time::Span

Source
cooldown_until

Returns the Time until which the user is in cooldown, or nil if the user is not cooldowned

Source
debug_enabled

Returns true if the suer has debug mode enabled, false otherwise

Source
decrement_karma(amount : Int32 = 1) : Nil

Decrement the user's karma by a given amount (1 by default) On arithmetic overflow, sets user's karma to the minimum Int32 value

Source
formatted_name

Get the formatted name of the user. If the user has a username, returns it with the '@' prepended to it Otherwise, returns the realname

Source
hide_karma

Returns true if the user has karma notifications disabled, false otherwise

Source
id

Returns the user's ID

Source
increment_karma(amount : Int32 = 1) : Nil

Increment the user's karma by a given amount (1 by default) On arithmetic overflow, sets user's karma to the maximum Int32 value

Source
joined

Returns the Time the user joined the chat

Source
karma

Returns the user's current amount of karma

Source
last_active

Returns the Time the user was last active (i.e., the last time a message was sent or a command was used)

Source
left

Returns the Time the user left the chat, or nil if the user has not left

Source
left?

Returns true if left is not nil; user has left the chat.

Returns false otherwise.

Source
obfuscated_id

Generate an obfuscated ID for the user, used for log messages and commands like InfoCommand

Source
obfuscated_karma

Get the user's obfuscated karma

Source
rank

Returns the user's current rank value

Source
realname

Returns the user's full name

Source
rejoin

Set left to nil, meaning that the User has joined the chat.

Source
remove_cooldown(override : Bool = false) : Bool

Removes a cooldown from a user if it has expired.

Returns true if the cooldown can be expired, false otherwise

Source
remove_warning(amount : Int32, warn_lifespan : Time::Span) : Nil

Removes the given amount of warnings from a user

If the user still has warnings after the removal, reset the warn_expiry to a later time based on warn_lifespan

Source
set_active

Set last_active to the current time

Source
set_left

Set left to the current time

Source
set_rank(rank : Int32) : Nil

Set rank to the given value

Source
set_tripcode(tripcode : String) : Nil

Set tripcode to the given value

Source
to_a

Returns an array with all the values in User. Intended for database query arguments.

Source
toggle_debug

Switches user's debug_enabled toggle

Source
toggle_karma

Switches user's hide_karma notifications toggle

Source
tripcode

Returns a String containing the user's tripcode name and password for generating tripcodes, or nil if the user has no tripcode set

Source
update_names(username : String | Nil, fullname : String) : Nil

Sets user's username and realname to the given values

Source
username

Returns the user's unformatted username, or nil if it does not exist

Source
warn(lifespan : Int32) : Nil

Increments the user's warnings and sets the warn_expiry to the current time plus the lifespan of a warning

Source
warn_expiry

Returns the Time when one of the warnings will expire, or nil if such a time does not exit

Source
warnings

Returns the number of warnings the user has

Source