+ static already_sent_t already_sent_id;
+ already_sent_t already_sent;
+
+ /** Check if the user matches a G or K line, and disconnect them if they do.
+ * @param doZline True if ZLines should be checked (if IP has changed since initial connect)
+ * Returns true if the user matched a ban, false else.
+ */
+ bool CheckLines(bool doZline = false);
+
+ /** Use this method to fully connect a user.
+ * This will send the message of the day, check G/K/E lines, etc.
+ */
+ void FullConnect();
+
+ /** Set the connect class to which this user belongs to.
+ * @param explicit_name Set this string to tie the user to a specific class name. Otherwise, the class is fitted by checking \<connect> tags from the configuration file.
+ * @return A reference to this user's current connect class.
+ */
+ void SetClass(const std::string &explicit_name = "");
+
+ bool SetClientIP(const char* sip, bool recheck_eline = true);
+
+ void SetClientIP(const irc::sockets::sockaddrs& sa, bool recheck_eline = true);
+
+ void SendText(const std::string& line);
+ void Write(const std::string& text);
+ void Write(const char*, ...) CUSTOM_PRINTF(2, 3);
+
+ /** Returns the list of channels this user has been invited to but has not yet joined.
+ * @return A list of channels the user is invited to
+ */
+ InviteList& GetInviteList();
+
+ /** Returns true if a user is invited to a channel.
+ * @param chan A channel to look up
+ * @return True if the user is invited to the given channel
+ */
+ bool IsInvited(Channel* chan) { return (Invitation::Find(chan, this) != NULL); }
+
+ /** Removes a channel from a users invite list.
+ * This member function is called on successfully joining an invite only channel
+ * to which the user has previously been invited, to clear the invitation.
+ * @param chan The channel to remove the invite to
+ * @return True if the user was invited to the channel and the invite was erased, false if the user wasn't invited