Class Whatsapp

java.lang.Object
it.auties.whatsapp.api.Whatsapp

public class Whatsapp extends Object
A class used to interface a user to WhatsappWeb's WebSocket. It provides various functionalities, including the possibility to query, set and modify data associated with the loaded session of whatsapp. It can be configured using a default configuration or a custom one. Multiple instances of this class can be initialized, though it is not advisable as; is a singleton and cannot distinguish between the data associated with each session.
  • Method Details

    • newConnection

      public static Whatsapp newConnection(int id)
      Constructs a new instance of the API. If the id is not associated with any session, a new one will be created.
      Parameters:
      id - the id of the session
      Returns:
      a non-null Whatsapp instance
    • newConnection

      public static Whatsapp newConnection()
      Constructs a new instance of the API
      Returns:
      a non-null Whatsapp instance
    • newConnection

      public static Whatsapp newConnection(@NonNull @NonNull Whatsapp.Options options)
      Constructs a new instance of the API. If the id is not associated with any session, a new one will be created.
      Parameters:
      options - the non-null options used to create this session
      Returns:
      a non-null Whatsapp instance
    • newConnection

      public static Whatsapp newConnection(@NonNull @NonNull Whatsapp.Options options, @NonNull @NonNull Store store, @NonNull @NonNull Keys keys)
      Constructs a new instance of the API from a fresh connection using a random id
      Parameters:
      options - the non-null options used to create this session
      store - the non-null store used to create this session
      keys - the non-null keys used to create this session
      Returns:
      a non-null Whatsapp instance
    • firstConnection

      public static Whatsapp firstConnection()
      Constructs a new instance of the API from the first session opened. If no sessions are available, a new one will be created.
      Returns:
      a non-null Whatsapp instance
    • firstConnection

      public static Whatsapp firstConnection(@NonNull @NonNull Whatsapp.Options options)
      Constructs a new instance of the API from the first session opened. If no sessions are available, a new one will be created.
      Parameters:
      options - the non-null options
      Returns:
      a non-null Whatsapp instance
    • lastConnection

      public static Whatsapp lastConnection()
      Constructs a new instance of the API from the last session opened. If no sessions are available, a new one will be created.
      Returns:
      a non-null Whatsapp instance
    • lastConnection

      public static Whatsapp lastConnection(@NonNull @NonNull Whatsapp.Options options)
      Constructs a new instance of the API from the last session opened. If no sessions are available, a new one will be created.
      Parameters:
      options - the non-null options
      Returns:
      a non-null Whatsapp instance
    • listConnections

      public static List<Whatsapp> listConnections()
      Returns a list of all known connections
      Returns:
      a non-null List
    • streamConnections

      public static Stream<Whatsapp> streamConnections()
      Returns a stream of all known connections
      Returns:
      a non-null Stream
    • deleteConnections

      public static void deleteConnections()
      Deletes all the known connections from memory
    • store

      public Store store()
      Returns the store associated with this session
      Returns:
      a non-null WhatsappStore
    • keys

      public Keys keys()
      Returns the keys associated with this session
      Returns:
      a non-null WhatsappKeys
    • addListener

      public Whatsapp addListener(@NonNull @NonNull Listener listener)
      Registers a listener
      Parameters:
      listener - the listener to register
      Returns:
      the same instance
    • addActionListener

      public Whatsapp addActionListener(OnAction onAction)
      Registers an action listener
      Parameters:
      onAction - the listener to register
      Returns:
      the same instance
    • addChatMessagesListener

      public Whatsapp addChatMessagesListener(OnChatMessages onChatRecentMessages)
      Registers a chat recent messages listener
      Parameters:
      onChatRecentMessages - the listener to register
      Returns:
      the same instance
    • addChatsListener

      public Whatsapp addChatsListener(OnChats onChats)
      Registers a chats listener
      Parameters:
      onChats - the listener to register
      Returns:
      the same instance
    • addContactPresenceListener

      public Whatsapp addContactPresenceListener(OnContactPresence onContactPresence)
      Registers a contact presence listener
      Parameters:
      onContactPresence - the listener to register
      Returns:
      the same instance
    • addContactsListener

      public Whatsapp addContactsListener(OnContacts onContacts)
      Registers a contacts listener
      Parameters:
      onContacts - the listener to register
      Returns:
      the same instance
    • addMessageStatusListener

      public Whatsapp addMessageStatusListener(OnConversationMessageStatus onConversationMessageStatus)
      Registers a message status listener
      Parameters:
      onConversationMessageStatus - the listener to register
      Returns:
      the same instance
    • addMessageStatusListener

      public Whatsapp addMessageStatusListener(OnMessageStatus onMessageStatus)
      Registers a message status listener
      Parameters:
      onMessageStatus - the listener to register
      Returns:
      the same instance
    • addDisconnectedListener

      public Whatsapp addDisconnectedListener(OnDisconnected onDisconnected)
      Registers a disconnected listener
      Parameters:
      onDisconnected - the listener to register
      Returns:
      the same instance
    • addFeaturesListener

      public Whatsapp addFeaturesListener(OnFeatures onFeatures)
      Registers a features listener
      Parameters:
      onFeatures - the listener to register
      Returns:
      the same instance
    • addLoggedInListener

      public Whatsapp addLoggedInListener(OnLoggedIn onLoggedIn)
      Registers a logged in listener
      Parameters:
      onLoggedIn - the listener to register
      Returns:
      the same instance
    • addMessageDeletedListener

      public Whatsapp addMessageDeletedListener(OnMessageDeleted onMessageDeleted)
      Registers a message deleted listener
      Parameters:
      onMessageDeleted - the listener to register
      Returns:
      the same instance
    • addMetadataListener

      public Whatsapp addMetadataListener(OnMetadata onMetadata)
      Registers a metadata listener
      Parameters:
      onMetadata - the listener to register
      Returns:
      the same instance
    • addNewContactListener

      public Whatsapp addNewContactListener(OnNewContact onNewContact)
      Registers a new contact listener
      Parameters:
      onNewContact - the listener to register
      Returns:
      the same instance
    • addNewMessageListener

      public Whatsapp addNewMessageListener(OnNewMessage onNewMessage)
      Registers a new message listener
      Parameters:
      onNewMessage - the listener to register
      Returns:
      the same instance
    • addNewStatusListener

      public Whatsapp addNewStatusListener(OnNewStatus onNewStatus)
      Registers a new status listener
      Parameters:
      onNewStatus - the listener to register
      Returns:
      the same instance
    • addNodeReceivedListener

      public Whatsapp addNodeReceivedListener(OnNodeReceived onNodeReceived)
      Registers a received node listener
      Parameters:
      onNodeReceived - the listener to register
      Returns:
      the same instance
    • addNodeSentListener

      public Whatsapp addNodeSentListener(OnNodeSent onNodeSent)
      Registers a sent node listener
      Parameters:
      onNodeSent - the listener to register
      Returns:
      the same instance
    • addSettingListener

      public Whatsapp addSettingListener(OnSetting onSetting)
      Registers a setting listener
      Parameters:
      onSetting - the listener to register
      Returns:
      the same instance
    • addStatusListener

      public Whatsapp addStatusListener(OnStatus onStatus)
      Registers a status listener
      Parameters:
      onStatus - the listener to register
      Returns:
      the same instance
    • addSocketEventListener

      public Whatsapp addSocketEventListener(OnSocketEvent onSocketEvent)
      Registers an event listener
      Parameters:
      onSocketEvent - the listener to register
      Returns:
      the same instance
    • addActionListener

      public Whatsapp addActionListener(OnWhatsappAction onAction)
      Registers an action listener
      Parameters:
      onAction - the listener to register
      Returns:
      the same instance
    • addChatMessagesListener

      public Whatsapp addChatMessagesListener(OnWhatsappChatMessages onChatRecentMessages)
      Registers a chat recent messages listener
      Parameters:
      onChatRecentMessages - the listener to register
      Returns:
      the same instance
    • addChatsListener

      public Whatsapp addChatsListener(OnWhatsappChats onChats)
      Registers a chats listener
      Parameters:
      onChats - the listener to register
      Returns:
      the same instance
    • addContactPresenceListener

      public Whatsapp addContactPresenceListener(OnWhatsappContactPresence onContactPresence)
      Registers a contact presence listener
      Parameters:
      onContactPresence - the listener to register
      Returns:
      the same instance
    • addContactsListener

      public Whatsapp addContactsListener(OnWhatsappContacts onContacts)
      Registers a contacts listener
      Parameters:
      onContacts - the listener to register
      Returns:
      the same instance
    • addMessageStatusListener

      public Whatsapp addMessageStatusListener(OnWhatsappConversationMessageStatus onConversationMessageStatus)
      Registers a message status listener
      Parameters:
      onConversationMessageStatus - the listener to register
      Returns:
      the same instance
    • addMessageStatusListener

      public Whatsapp addMessageStatusListener(OnWhatsappMessageStatus onMessageStatus)
      Registers a message status listener
      Parameters:
      onMessageStatus - the listener to register
      Returns:
      the same instance
    • addDisconnectedListener

      public Whatsapp addDisconnectedListener(OnWhatsappDisconnected onDisconnected)
      Registers a disconnected listener
      Parameters:
      onDisconnected - the listener to register
      Returns:
      the same instance
    • addFeaturesListener

      public Whatsapp addFeaturesListener(OnWhatsappFeatures onFeatures)
      Registers a features listener
      Parameters:
      onFeatures - the listener to register
      Returns:
      the same instance
    • addLoggedInListener

      public Whatsapp addLoggedInListener(OnWhatsappLoggedIn onLoggedIn)
      Registers a logged in listener
      Parameters:
      onLoggedIn - the listener to register
      Returns:
      the same instance
    • addMessageDeletedListener

      public Whatsapp addMessageDeletedListener(OnWhatsappMessageDeleted onMessageDeleted)
      Registers a message deleted listener
      Parameters:
      onMessageDeleted - the listener to register
      Returns:
      the same instance
    • addMetadataListener

      public Whatsapp addMetadataListener(OnWhatsappMetadata onMetadata)
      Registers a metadata listener
      Parameters:
      onMetadata - the listener to register
      Returns:
      the same instance
    • addNewContactListener

      public Whatsapp addNewContactListener(OnWhatsappNewContact onNewContact)
      Registers a new contact listener
      Parameters:
      onNewContact - the listener to register
      Returns:
      the same instance
    • addNewMessageListener

      public Whatsapp addNewMessageListener(OnWhatsappNewMessage onNewMessage)
      Registers a new message listener
      Parameters:
      onNewMessage - the listener to register
      Returns:
      the same instance
    • addNewStatusListener

      public Whatsapp addNewStatusListener(OnWhatsappNewStatus onNewStatus)
      Registers a new status listener
      Parameters:
      onNewStatus - the listener to register
      Returns:
      the same instance
    • addNodeReceivedListener

      public Whatsapp addNodeReceivedListener(OnWhatsappNodeReceived onNodeReceived)
      Registers a received node listener
      Parameters:
      onNodeReceived - the listener to register
      Returns:
      the same instance
    • addNodeSentListener

      public Whatsapp addNodeSentListener(OnWhatsappNodeSent onNodeSent)
      Registers a sent node listener
      Parameters:
      onNodeSent - the listener to register
      Returns:
      the same instance
    • addSettingListener

      public Whatsapp addSettingListener(OnWhatsappSetting onSetting)
      Registers a setting listener
      Parameters:
      onSetting - the listener to register
      Returns:
      the same instance
    • addStatusListener

      public Whatsapp addStatusListener(OnWhatsappStatus onStatus)
      Registers a status listener
      Parameters:
      onStatus - the listener to register
      Returns:
      the same instance
    • addSocketEventListener

      public Whatsapp addSocketEventListener(OnWhatsappSocketEvent onSocketEvent)
      Registers an event listener
      Parameters:
      onSocketEvent - the listener to register
      Returns:
      the same instance
    • addSerialization

      public Whatsapp addSerialization(OnWhatsappSocketEvent onSocketEvent)
      Registers an event listener
      Parameters:
      onSocketEvent - the listener to register
      Returns:
      the same instance
    • removeListener

      public Whatsapp removeListener(@NonNull @NonNull Listener listener)
      Removes a listener
      Parameters:
      listener - the listener to remove
      Returns:
      the same instance
    • await

      public Whatsapp await()
      Waits for the socket to be closed on the current thread
      Returns:
      the same instance
    • connect

      public CompletableFuture<Whatsapp> connect()
      Opens a connection with Whatsapp Web's WebSocket if a previous connection doesn't exist
      Returns:
      the same instance wrapped in a completable future
    • disconnect

      public CompletableFuture<Whatsapp> disconnect()
      Disconnects from Whatsapp Web's WebSocket if a previous connection exists
      Returns:
      the same instance wrapped in a completable future
    • delete

      public CompletableFuture<Whatsapp> delete()
      Deletes the data associated with this session and disconnects from it
      Returns:
      the same instance wrapped in a completable future
    • reconnect

      public CompletableFuture<Whatsapp> reconnect()
      Disconnects and reconnects to Whatsapp Web's WebSocket if a previous connection exists
      Returns:
      the same instance wrapped in a completable future
    • logout

      public CompletableFuture<Whatsapp> logout()
      Disconnects from Whatsapp Web's WebSocket and logs out of WhatsappWeb invalidating the previous saved credentials. The next time the API is used, the QR code will need to be scanned again.
      Returns:
      the same instance wrapped in a completable future
    • subscribeToPresence

      public <T extends ContactJidProvider> CompletableFuture<T> subscribeToPresence(@NonNull T jid)
      Sends a request to Whatsapp in order to receive updates when the status of a contact changes. These changes include the last known presence and the endTimeStamp the contact was last seen.
      Parameters:
      jid - the contact whose status the api should receive updates on
      Returns:
      a CompletableFuture
    • removeReaction

      public CompletableFuture<MessageInfo> removeReaction(@NonNull @NonNull MessageMetadataProvider message)
      Remove a reaction from a message
      Parameters:
      message - the non-null message
      Returns:
      a CompletableFuture
    • sendReaction

      public CompletableFuture<MessageInfo> sendReaction(@NonNull @NonNull MessageMetadataProvider message, String reaction)
      Send a reaction to a message
      Parameters:
      message - the non-null message
      reaction - the reaction to send, null if you want to remove the reaction
      Returns:
      a CompletableFuture
    • sendMessage

      public CompletableFuture<MessageInfo> sendMessage(@NonNull @NonNull ContactJidProvider chat, @NonNull @NonNull String message)
      Builds and sends a message from a chat and a message
      Parameters:
      chat - the chat where the message should be sent
      message - the message to send
      Returns:
      a CompletableFuture
    • sendMessage

      public CompletableFuture<MessageInfo> sendMessage(@NonNull @NonNull ContactJidProvider chat, @NonNull @NonNull String message, @NonNull @NonNull MessageMetadataProvider quotedMessage)
      Builds and sends a message from a chat, a message and a quoted message
      Parameters:
      chat - the chat where the message should be sent
      message - the message to send
      quotedMessage - the quoted message
      Returns:
      a CompletableFuture
    • sendMessage

      public CompletableFuture<MessageInfo> sendMessage(@NonNull @NonNull ContactJidProvider chat, @NonNull @NonNull ContextualMessage message, @NonNull @NonNull MessageMetadataProvider quotedMessage)
      Builds and sends a message from a chat, a message and a quoted message
      Parameters:
      chat - the chat where the message should be sent
      message - the message to send
      quotedMessage - the quoted message
      Returns:
      a CompletableFuture
    • sendMessage

      public CompletableFuture<MessageInfo> sendMessage(@NonNull @NonNull ContactJidProvider chat, @NonNull @NonNull ContextualMessage message, @NonNull @NonNull ContextInfo contextInfo)
      Builds and sends a message from a chat, a message and a context
      Parameters:
      chat - the chat where the message should be sent
      message - the message to send
      contextInfo - the context of the message to send
      Returns:
      a CompletableFuture
    • sendMessage

      public CompletableFuture<MessageInfo> sendMessage(@NonNull @NonNull ContactJidProvider chat, @NonNull @NonNull Message message)
      Builds and sends a message from a chat and a message
      Parameters:
      chat - the chat where the message should be sent
      message - the message to send
      Returns:
      a CompletableFuture
    • sendMessage

      public CompletableFuture<MessageInfo> sendMessage(@NonNull @NonNull ContactJidProvider chat, @NonNull @NonNull MessageContainer message)
      Builds and sends a message from a chat and a message
      Parameters:
      chat - the chat where the message should be sent
      message - the message to send
      Returns:
      a CompletableFuture
    • sendMessage

      public CompletableFuture<MessageInfo> sendMessage(@NonNull @NonNull MessageInfo info)
      Sends a message info to a chat
      Parameters:
      info - the info to send
      Returns:
      a CompletableFuture
    • hasWhatsapp

      public CompletableFuture<List<HasWhatsappResponse>> hasWhatsapp(@NonNull @NonNull ContactJidProvider @NonNull ... chats)
      Executes a query to determine whether any number of users have an account on Whatsapp
      Parameters:
      chats - the users to check
      Returns:
      a CompletableFuture that wraps a non-null list of HasWhatsappResponse
    • queryBlockList

      public CompletableFuture<List<ContactJid>> queryBlockList()
      Queries the block list
      Returns:
      a CompletableFuture that wraps a non-null list of ContactJid
    • queryStatus

      public CompletableFuture<Optional<ContactStatusResponse>> queryStatus(@NonNull @NonNull ContactJidProvider chat)
      Queries the written whatsapp status of a Contact
      Parameters:
      chat - the target contact
      Returns:
      a CompletableFuture that wraps an optional contact status response
    • queryPicture

      public CompletableFuture<Optional<URI>> queryPicture(@NonNull @NonNull ContactJidProvider chat)
      Queries the profile picture
      Parameters:
      chat - the chat of the chat to query
      Returns:
      a CompletableFuture that wraps nullable jpg url hosted on Whatsapp's servers
    • queryGroupMetadata

      public CompletableFuture<GroupMetadata> queryGroupMetadata(@NonNull @NonNull ContactJidProvider chat)
      Queries the metadata of a group
      Parameters:
      chat - the target group
      Returns:
      a CompletableFuture
    • queryBusinessProfile

      public CompletableFuture<Optional<BusinessProfile>> queryBusinessProfile(@NonNull @NonNull ContactJidProvider contact)
      Queries a business profile, if any exists
      Parameters:
      contact - the target contact
      Returns:
      a CompletableFuture
    • queryBusinessCategories

      public CompletableFuture<List<BusinessCategory>> queryBusinessCategories()
      Queries all the known business categories
      Returns:
      a CompletableFuture
    • queryGroupInviteCode

      public CompletableFuture<String> queryGroupInviteCode(@NonNull @NonNull ContactJidProvider chat)
      Queries the invite code of a group
      Parameters:
      chat - the target group
      Returns:
      a CompletableFuture
    • revokeInviteCode

      public <T extends ContactJidProvider> CompletableFuture<T> revokeInviteCode(@NonNull T chat)
      Revokes the invite code of a group
      Parameters:
      chat - the target group
      Returns:
      a CompletableFuture
    • acceptInvite

      public CompletableFuture<Optional<Chat>> acceptInvite(@NonNull @NonNull String inviteCode)
      Accepts the invite for a group
      Parameters:
      inviteCode - the invite code
      Returns:
      a CompletableFuture
    • changePresence

      public CompletableFuture<Boolean> changePresence(boolean available)
      Changes your presence for everyone on Whatsapp
      Parameters:
      available - whether you are online or not
      Returns:
      a CompletableFuture
    • changePresence

      public <T extends ContactJidProvider> CompletableFuture<T> changePresence(@NonNull T chat, @NonNull @NonNull ContactStatus presence)
      Changes your presence for a specific chat
      Parameters:
      chat - the target chat
      presence - the new status
      Returns:
      a CompletableFuture
    • promote

      public CompletableFuture<List<ContactJid>> promote(@NonNull @NonNull ContactJidProvider group, @NonNull @NonNull ContactJidProvider @NonNull ... contacts)
      Promotes any number of contacts to admin in a group
      Parameters:
      group - the target group
      contacts - the target contacts
      Returns:
      a CompletableFuture
    • demote

      public CompletableFuture<List<ContactJid>> demote(@NonNull @NonNull ContactJidProvider group, @NonNull @NonNull ContactJidProvider @NonNull ... contacts)
      Demotes any number of contacts to admin in a group
      Parameters:
      group - the target group
      contacts - the target contacts
      Returns:
      a CompletableFuture
    • addGroupParticipant

      public CompletableFuture<List<ContactJid>> addGroupParticipant(@NonNull @NonNull ContactJidProvider group, @NonNull @NonNull ContactJidProvider @NonNull ... contacts)
      Adds any number of contacts to a group
      Parameters:
      group - the target group
      contacts - the target contact/s
      Returns:
      a CompletableFuture
    • removeGroupParticipant

      public CompletableFuture<List<ContactJid>> removeGroupParticipant(@NonNull @NonNull ContactJidProvider group, @NonNull @NonNull ContactJidProvider @NonNull ... contacts)
      Removes any number of contacts from group
      Parameters:
      group - the target group
      contacts - the target contact/s
      Returns:
      a CompletableFuture
    • changeGroupSubject

      public <T extends ContactJidProvider> CompletableFuture<T> changeGroupSubject(@NonNull T group, @NonNull @NonNull String newName)
      Changes the name of a group
      Parameters:
      group - the target group
      newName - the new name for the group
      Returns:
      a CompletableFuture
      Throws:
      IllegalArgumentException - if the provided new name is empty or blank
    • changeGroupDescription

      public <T extends ContactJidProvider> CompletableFuture<T> changeGroupDescription(@NonNull T group, String description)
      Changes the description of a group
      Parameters:
      group - the target group
      description - the new name for the group, can be null if you want to remove it
      Returns:
      a CompletableFuture
    • changeWhoCanSendMessages

      public <T extends ContactJidProvider> CompletableFuture<T> changeWhoCanSendMessages(@NonNull T group, @NonNull @NonNull GroupPolicy policy)
      Changes which category of users can send messages in a group
      Parameters:
      group - the target group
      policy - the new policy to enforce
      Returns:
      a CompletableFuture
    • changeWhoCanEditInfo

      public <T extends ContactJidProvider> CompletableFuture<T> changeWhoCanEditInfo(@NonNull T group, @NonNull @NonNull GroupPolicy policy)
      Changes which category of users can edit the group's settings
      Parameters:
      group - the target group
      policy - the new policy to enforce
      Returns:
      a CompletableFuture
    • changeProfilePicture

      public CompletableFuture<ContactJid> changeProfilePicture(byte[] image)
      Changes the profile picture of yourself
      Parameters:
      image - the new image, can be null if you want to remove it
      Returns:
      a CompletableFuture
    • changeGroupPicture

      public <T extends ContactJidProvider> CompletableFuture<T> changeGroupPicture(@NonNull T group, byte[] image)
      Changes the picture of a group
      Parameters:
      group - the target group
      image - the new image, can be null if you want to remove it
      Returns:
      a CompletableFuture
    • createGroup

      public CompletableFuture<GroupMetadata> createGroup(@NonNull @NonNull String subject, @NonNull @NonNull ContactJidProvider... contacts)
      Creates a new group with the provided name and with at least one contact
      Parameters:
      subject - the new group's name
      contacts - at least one contact to add to the group
      Returns:
      a CompletableFuture
    • leaveGroup

      public <T extends ContactJidProvider> CompletableFuture<T> leaveGroup(@NonNull T group)
      Leaves a group
      Parameters:
      group - the target group
      Throws:
      IllegalArgumentException - if the provided chat is not a group
    • mute

      public <T extends ContactJidProvider> CompletableFuture<T> mute(@NonNull T chat)
      Mutes a chat indefinitely
      Parameters:
      chat - the target chat
      Returns:
      a CompletableFuture
    • mute

      public <T extends ContactJidProvider> CompletableFuture<T> mute(@NonNull T chat, @NonNull @NonNull ChatMute mute)
      Mutes a chat
      Parameters:
      chat - the target chat
      mute - the type of mute
      Returns:
      a CompletableFuture
    • unmute

      public <T extends ContactJidProvider> CompletableFuture<T> unmute(@NonNull T chat)
      Unmutes a chat
      Parameters:
      chat - the target chat
      Returns:
      a CompletableFuture
    • block

      public <T extends ContactJidProvider> CompletableFuture<T> block(@NonNull T chat)
      Blocks a contact
      Parameters:
      chat - the target chat
      Returns:
      a CompletableFuture
    • unblock

      public <T extends ContactJidProvider> CompletableFuture<T> unblock(@NonNull T chat)
      Unblocks a contact
      Parameters:
      chat - the target chat
      Returns:
      a CompletableFuture
    • changeEphemeralTimer

      public <T extends ContactJidProvider> CompletableFuture<T> changeEphemeralTimer(@NonNull T chat, @NonNull @NonNull ChatEphemeralTimer timer)
      Enables ephemeral messages in a chat, this means that messages will be automatically cancelled in said chat after a week
      Parameters:
      chat - the target chat
      Returns:
      a CompletableFuture
    • markRead

      public <T extends ContactJidProvider> CompletableFuture<T> markRead(@NonNull T chat)
      Marks a chat as read
      Parameters:
      chat - the target chat
      Returns:
      a CompletableFuture
    • markUnread

      public <T extends ContactJidProvider> CompletableFuture<T> markUnread(@NonNull T chat)
      Marks a chat as unread
      Parameters:
      chat - the target chat
      Returns:
      a CompletableFuture
    • pin

      public <T extends ContactJidProvider> CompletableFuture<T> pin(@NonNull T chat)
      Pins a chat to the top. A maximum of three chats can be pinned to the top. This condition can be checked using;.
      Parameters:
      chat - the target chat
      Returns:
      a CompletableFuture
    • unpin

      public <T extends ContactJidProvider> CompletableFuture<T> unpin(@NonNull T chat)
      Unpins a chat from the top
      Parameters:
      chat - the target chat
      Returns:
      a CompletableFuture
    • star

      public CompletableFuture<MessageInfo> star(@NonNull @NonNull MessageInfo info)
      Stars a message
      Parameters:
      info - the target message
      Returns:
      a CompletableFuture
    • unstar

      public CompletableFuture<MessageInfo> unstar(@NonNull @NonNull MessageInfo info)
      Removes star from a message
      Parameters:
      info - the target message
      Returns:
      a CompletableFuture
    • archive

      public <T extends ContactJidProvider> CompletableFuture<T> archive(@NonNull T chat)
      Archives a chat. If said chat is pinned, it will be unpinned.
      Parameters:
      chat - the target chat
      Returns:
      a CompletableFuture
    • unarchive

      public <T extends ContactJidProvider> CompletableFuture<T> unarchive(@NonNull T chat)
      Unarchives a chat
      Parameters:
      chat - the target chat
      Returns:
      a CompletableFuture
    • delete

      public CompletableFuture<MessageInfo> delete(@NonNull @NonNull MessageInfo info, boolean everyone)
      Deletes a message
      Parameters:
      info - the non-null message to delete
      everyone - whether the message should be deleted for everyone or only for this client and its companions
      Returns:
      a CompletableFuture
    • delete

      public <T extends ContactJidProvider> CompletableFuture<T> delete(@NonNull T chat)
      Deletes a chat for this client and its companions using a modern version of Whatsapp
      Parameters:
      chat - the non-null chat to delete
      Returns:
      a CompletableFuture
    • clear

      public <T extends ContactJidProvider> CompletableFuture<T> clear(@NonNull T chat, boolean keepStarredMessages)
      Clears the content of a chat for this client and its companions using a modern version of Whatsapp
      Parameters:
      chat - the non-null chat to clear
      keepStarredMessages - whether starred messages in this chat should be kept
      Returns:
      a CompletableFuture
    • changeBusinessDescription

      public CompletableFuture<String> changeBusinessDescription(String description)
      Change the description of this business profile
      Parameters:
      description - the new description, can be null
      Returns:
      a CompletableFuture
    • changeBusinessAddress

      public CompletableFuture<String> changeBusinessAddress(String address)
      Change the address of this business profile
      Parameters:
      address - the new address, can be null
      Returns:
      a CompletableFuture
    • changeBusinessEmail

      public CompletableFuture<String> changeBusinessEmail(String email)
      Change the email of this business profile
      Parameters:
      email - the new email, can be null. If a value is provided, it must be RFC822 compliant
      Returns:
      a CompletableFuture
    • changeBusinessCategories

      public CompletableFuture<List<BusinessCategory>> changeBusinessCategories(List<BusinessCategory> categories)
      Change the categories of this business profile
      Parameters:
      categories - the new categories, can be null
      Returns:
      a CompletableFuture
    • changeBusinessWebsites

      public CompletableFuture<List<URI>> changeBusinessWebsites(List<URI> websites)
      Change the websites of this business profile
      Parameters:
      websites - the new websites, can be null
      Returns:
      a CompletableFuture
    • queryBusinessCatalog

      public CompletableFuture<List<BusinessCatalogEntry>> queryBusinessCatalog()
      Query the catalog of this business
      Returns:
      a CompletableFuture
    • queryBusinessCatalog

      public CompletableFuture<List<BusinessCatalogEntry>> queryBusinessCatalog(int productsLimit)
      Query the catalog of this business
      Parameters:
      productsLimit - the maximum number of products to query
      Returns:
      a CompletableFuture
    • queryBusinessCatalog

      public CompletableFuture<List<BusinessCatalogEntry>> queryBusinessCatalog(@NonNull @NonNull ContactJidProvider contact)
      Query the catalog of a business
      Parameters:
      contact - the business
      Returns:
      a CompletableFuture
    • queryBusinessCatalog

      public CompletableFuture<List<BusinessCatalogEntry>> queryBusinessCatalog(@NonNull @NonNull ContactJidProvider contact, int productsLimit)
      Query the catalog of a business
      Parameters:
      contact - the business
      productsLimit - the maximum number of products to query
      Returns:
      a CompletableFuture
    • queryBusinessCollections

      public CompletableFuture<?> queryBusinessCollections()
      Query the collections of this business
      Returns:
      a CompletableFuture
    • queryBusinessCollections

      public CompletableFuture<?> queryBusinessCollections(int collectionsLimit)
      Query the collections of this business
      Parameters:
      collectionsLimit - the maximum number of collections to query
      Returns:
      a CompletableFuture
    • queryBusinessCollections

      public CompletableFuture<?> queryBusinessCollections(@NonNull @NonNull ContactJidProvider contact)
      Query the collections of a business
      Parameters:
      contact - the business
      Returns:
      a CompletableFuture
    • queryBusinessCollections

      public CompletableFuture<List<BusinessCollectionEntry>> queryBusinessCollections(@NonNull @NonNull ContactJidProvider contact, int collectionsLimit)
      Query the collections of a business
      Parameters:
      contact - the business
      collectionsLimit - the maximum number of collections to query
      Returns:
      a CompletableFuture