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
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
Instance methods
Set the user's rank to -10 (blacklisted), sets the left value, and updates the blacklist_reason
Returns the reason why the user was blacklisted, or nil if a reason does not exist
Returns true if user is joined, not in cooldown, not blacklisted, and not limited; user can chat
Returns false otherwise.
Returns true if user is joined, not in cooldown, and not blacklisted; user can chat
Returns false otherwise.
Returns true if user is joined and not blacklisted; user can use commands
Returns false otherwise.
Gives the user an exponentially increasing cooldown from the given base value and current number of warnings
Gives the user a cooldown based on the given Time::Span
Returns the Time until which the user is in cooldown, or nil if the user is not cooldowned
Decrement the user's karma by a given amount (1 by default)
On arithmetic overflow, sets user's karma to the minimum Int32 value
Get the formatted name of the user.
If the user has a username, returns it with the '@' prepended to it
Otherwise, returns the realname
Increment the user's karma by a given amount (1 by default)
On arithmetic overflow, sets user's karma to the maximum Int32 value
Returns the Time the user was last active (i.e., the last time a message was sent or a command was used)
Generate an obfuscated ID for the user, used for log messages and commands like InfoCommand
Removes a cooldown from a user if it has expired.
Returns true if the cooldown can be expired, false otherwise
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
Returns a String containing the user's tripcode name and password for generating tripcodes, or nil if the user has no tripcode set
Sets user's username and realname to the given values
Increments the user's warnings and sets the warn_expiry to the current time plus the lifespan of a warning
Returns the Time when one of the warnings will expire, or nil if such a time does not exit