diff --git a/README.md b/README.md index c4a1f7f..61cd6e4 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ A Java library based on [TikTokLive](https://github.com/isaackogan/TikTokLive) a Join the support [discord](https://discord.gg/e2XwPNTBBr) and visit the `#java-support` channel for questions, contributions and ideas. Feel free to make pull requests with missing/new features, fixes, etc Do you prefer other programming languages? -- **Node** orginal: [TikTok-Live-Connector](https://github.com/zerodytrash/TikTok-Live-Connector) by [@zerodytrash](https://github.com/zerodytrash) +- **Node** orginal: [TikTok-Live-Connector](https://github.com/isaackogan/TikTok-Live-Connector) by [@zerodytrash](https://github.com/zerodytrash) - **Python** rewrite: [TikTokLive](https://github.com/isaackogan/TikTokLive) by [@isaackogan](https://github.com/isaackogan) - **Go** rewrite: [GoTikTokLive](https://github.com/Davincible/gotiktoklive) by [@Davincible](https://github.com/Davincible) - **C#** rewrite: [TikTokLiveSharp](https://github.com/frankvHoof93/TikTokLiveSharp) by [@frankvHoof93](https://github.com/frankvHoof93) @@ -37,7 +37,7 @@ Do you prefer other programming languages? com.github.jwdeveloper.TikTok-Live-Java Client - 0.0.25-Release + NOT_FOUND compile @@ -51,226 +51,607 @@ Do you prefer other programming languages? 2. Create your first chat connection ```java + package io.github.jwdeveloper.tiktok; -import java.io.IOException; -public class SimpleExample { - public static void main(String[] args) throws IOException { - - // set tiktok username - TikTokLive.newClient(Main.TEST_TIKTOK_USER) - .configure(clientSettings -> - { - - }) - .onFollow((liveClient, event) -> - { - System.out.println("Follow joined -> " + event.getNewFollower().getNickName()); - }) - .onConnected((client, event) -> - { - System.out.println("Connected"); - }) - .onJoin((client, event) -> - { - System.out.println("User joined -> " + event.getUser().getNickName()); - }) - .onComment((client, event) -> - { - System.out.println(event.getUser().getUniqueId() + ": " + event.getText()); - }) - .onEvent((client, event) -> - { - System.out.println("Viewers count: "+client.getRoomInfo().getViewersCount()); - }) - .onError((client, event) -> - { - event.getException().printStackTrace(); - }) - .buildAndRun(); - System.in.read(); - } -} - -``` -## Configuration - -```java -package io.github.jwdeveloper.tiktok; +import io.github.jwdeveloper.tiktok.utils.ConsoleColors; import java.io.IOException; import java.time.Duration; import java.util.logging.Level; -public class ConfigurationExample { +public class SimpleExample +{ + public static String TIKTOK_HOSTNAME = "szwagierkaqueen"; public static void main(String[] args) throws IOException { - TikTokLive.newClient(Main.TEST_TIKTOK_USER) + showLogo(); + // set tiktok username + TikTokLive.newClient(SimpleExample.TIKTOK_HOSTNAME) .configure(clientSettings -> { - clientSettings.setHostName(Main.TEST_TIKTOK_USER); // TikTok user name + clientSettings.setHostName(SimpleExample.TIKTOK_HOSTNAME); // This method is useful in case you want change hostname later clientSettings.setClientLanguage("en"); // Language clientSettings.setTimeout(Duration.ofSeconds(2)); // Connection timeout clientSettings.setLogLevel(Level.ALL); // Log level - clientSettings.setDownloadGiftInfo(true); // Downloading meta information about gifts. You can access it by client.getGiftManager().getGiftsInfo(); - clientSettings.setPrintMessageData(true); // Printing TikTok Protocol buffer messages in Base64 format clientSettings.setPrintToConsole(true); // Printing all logs to console even if log level is Level.OFF - clientSettings.setHandleExistingMessagesOnConnect(true); // Invokes all TikTok events that had occurred before connection + clientSettings.setHandleExistingEvents(true); // Invokes all TikTok events that had occurred before connection clientSettings.setRetryOnConnectionFailure(true); // Reconnecting if TikTok user is offline clientSettings.setRetryConnectionTimeout(Duration.ofSeconds(1)); // Timeout before next reconnection //Optional: Sometimes not every message from chat are send to TikTokLiveJava to fix this issue you can set sessionId // documentation how to obtain sessionId https://github.com/isaackogan/TikTok-Live-Connector#send-chat-messages - clientSettings.setSessionId("86c3c8bf4b17ebb2d74bb7fa66fd0000"); + + // clientSettings.setSessionId("86c3c8bf4b17ebb2d74bb7fa66fd0000"); //Optional: - clientSettings.setRoomId("XXXXXXXXXXXXXXXXX"); + //RoomId can be used as an override if you're having issues with HostId. + //You can find it in the HTML for the livestream-page + + //clientSettings.setRoomId("XXXXXXXXXXXXXXXXX"); }) - .buildAndRun(); + .onGift((liveClient, event) -> + { + switch (event.getGift()) { + case ROSE -> print(ConsoleColors.RED, "Rose!"); + case GG -> print(ConsoleColors.YELLOW, " GOOD GAME!"); + case TIKTOK -> print(ConsoleColors.CYAN,"Thanks for TikTok"); + default -> print(ConsoleColors.GREEN, "[Thanks for gift] ", ConsoleColors.YELLOW, event.getGift().getName(), "x", event.getCombo()); + } + }) + .onGiftCombo((liveClient, event) -> + { + print(ConsoleColors.RED,"GIFT COMBO",event.getGift().getName(),event.getCombo()); + }) + .onConnected((client, event) -> + { + print(ConsoleColors.GREEN, "[Connected]"); + }) + .onDisconnected((liveClient, event) -> + { + print(ConsoleColors.RED,"[Disconnected]"); + }) + .onFollow((liveClient, event) -> + { + print(ConsoleColors.BLUE, "Follow:", ConsoleColors.WHITE_BRIGHT, event.getUser().getName()); + }) + .onJoin((client, event) -> + { + print(ConsoleColors.WHITE, "Join:", ConsoleColors.WHITE_BRIGHT, event.getUser().getName()); + }) + .onComment((client, event) -> + { + print(ConsoleColors.GREEN, event.getUser().getName(), ":", ConsoleColors.WHITE_BRIGHT, event.getText()); + }) + .onEvent((client, event) -> + { + //System.out.println("Event: " +event.getClass().getSimpleName()); + }) + .onError((client, event) -> + { + event.getException().printStackTrace(); + }) + .buildAndConnectAsync(); System.in.read(); } + + private static void print(Object... messages) { + var sb = new StringBuilder(); + for (var message : messages) { + sb.append(message).append(" "); + } + System.out.println(sb); + } + + private static void showLogo() + { + System.out.println(ConsoleColors.GREEN+""" + + _____ _ _ _____ _ _ _ s + |_ _(_) | _|_ _|__ | | _| | (_)_ _____s + | | | | |/ / | |/ _ \| |/ / | | \ \ / / _ \ + | | | | < | | (_) | <| |___| |\ V / __/ + |_| |_|_|\_\ |_|\___/|_|\_\_____|_| \_/ \___| + """); + + } } ``` +## Events + + + +**Control**: + +- [onReconnecting](#onreconnecting-tiktokreconnectingevent) +- [onDisconnected](#ondisconnected-tiktokdisconnectedevent) +- [onConnected](#onconnected-tiktokconnectedevent) +- [onError](#onerror-tiktokerrorevent) + +**Message**: + +- [onEvent](#onevent-tiktokevent) +- [onLiveEnded](#onliveended-tiktokliveendedevent) +- [onShare](#onshare-tiktokshareevent) +- [onEmote](#onemote-tiktokemoteevent) +- [onComment](#oncomment-tiktokcommentevent) +- [onLike](#onlike-tiktoklikeevent) +- [onRoom](#onroom-tiktokroomevent) +- [onJoin](#onjoin-tiktokjoinevent) +- [onUnhandledSocial](#onunhandledsocial-tiktokunhandledsocialevent) +- [onRoomUserInfo](#onroomuserinfo-tiktokroomuserinfoevent) +- [onQuestion](#onquestion-tiktokquestionevent) +- [onSubscribe](#onsubscribe-tiktoksubscribeevent) +- [onLivePaused](#onlivepaused-tiktoklivepausedevent) +- [onGiftCombo](#ongiftcombo-tiktokgiftcomboevent) +- [onGift](#ongift-tiktokgiftevent) +- [onFollow](#onfollow-tiktokfollowevent) + +**Debug**: + +- [onWebsocketUnhandledMessage](#onwebsocketunhandledmessage-tiktokwebsocketunhandledmessageevent) +- [onWebsocketResponse](#onwebsocketresponse-tiktokwebsocketresponseevent) +- [onWebsocketMessage](#onwebsocketmessage-tiktokwebsocketmessageevent) +# Examples +
+ + +#### onReconnecting [TikTokReconnectingEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages.java) + + + +```java +TikTokLive.newClient("host-name") +.onReconnecting((liveClient, event) -> +{ + +}) +.buildAndConnect(); +``` + + + +
+ + +#### onDisconnected [TikTokDisconnectedEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages.java) + + +Triggered when the connection gets disconnected. In that case you can call connect() again to have a reconnect logic. +Note that you should wait a little bit before attempting a reconnect to to avoid being rate-limited. + + +```java +TikTokLive.newClient("host-name") +.onDisconnected((liveClient, event) -> +{ + +}) +.buildAndConnect(); +``` + + + +
+ + +#### onConnected [TikTokConnectedEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages.java) + + +Triggered when the connection is successfully established. + + +```java +TikTokLive.newClient("host-name") +.onConnected((liveClient, event) -> +{ + +}) +.buildAndConnect(); +``` + + + +
+ + +#### onError [TikTokErrorEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages.java) + + +General error event. You should handle this. + + +```java +TikTokLive.newClient("host-name") +.onError((liveClient, event) -> +{ + +}) +.buildAndConnect(); +``` + + + +
+ + +#### onEvent [TikTokEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages.java) + + +Base class for all events + + +```java +TikTokLive.newClient("host-name") +.onEvent((liveClient, event) -> +{ + +}) +.buildAndConnect(); +``` + + + +
+ + +#### onLiveEnded [TikTokLiveEndedEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages.java) + + +Triggered when the live stream gets terminated by the host. Will also trigger the TikTokDisconnectedEvent event. + + +```java +TikTokLive.newClient("host-name") +.onLiveEnded((liveClient, event) -> +{ + +}) +.buildAndConnect(); +``` + + + +
+ + +#### onShare [TikTokShareEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages.java) + + +Triggers when a user shares the stream. Based on social event. + + +```java +TikTokLive.newClient("host-name") +.onShare((liveClient, event) -> +{ + +}) +.buildAndConnect(); +``` + + + +
+ + +#### onEmote [TikTokEmoteEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages.java) + + +Triggered every time a subscriber sends an emote (sticker). + + +```java +TikTokLive.newClient("host-name") +.onEmote((liveClient, event) -> +{ + +}) +.buildAndConnect(); +``` + + + +
+ + +#### onComment [TikTokCommentEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages.java) + + +Triggered every time a new chat comment arrives. + + +```java +TikTokLive.newClient("host-name") +.onComment((liveClient, event) -> +{ + +}) +.buildAndConnect(); +``` + + + +
+ + +#### onLike [TikTokLikeEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages.java) + + +Triggered when a viewer sends likes to the streamer. For streams with many viewers, this event is not always triggered by TikTok. + + +```java +TikTokLive.newClient("host-name") +.onLike((liveClient, event) -> +{ + +}) +.buildAndConnect(); +``` + + + +
+ + +#### onRoom [TikTokRoomEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages.java) + + + +```java +TikTokLive.newClient("host-name") +.onRoom((liveClient, event) -> +{ + +}) +.buildAndConnect(); +``` + + + +
+ + +#### onJoin [TikTokJoinEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages.java) + + + +```java +TikTokLive.newClient("host-name") +.onJoin((liveClient, event) -> +{ + +}) +.buildAndConnect(); +``` + + + +
+ + +#### onUnhandledSocial [TikTokUnhandledSocialEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages.java) + + + +```java +TikTokLive.newClient("host-name") +.onUnhandledSocial((liveClient, event) -> +{ + +}) +.buildAndConnect(); +``` + + + +
+ + +#### onRoomUserInfo [TikTokRoomUserInfoEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages.java) + + + Only top 5 users in ranking has detailed data + rest has only ID + + +```java +TikTokLive.newClient("host-name") +.onRoomUserInfo((liveClient, event) -> +{ + +}) +.buildAndConnect(); +``` + + + +
+ + +#### onQuestion [TikTokQuestionEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages.java) + + +Triggered every time someone asks a new question via the question feature. + + +```java +TikTokLive.newClient("host-name") +.onQuestion((liveClient, event) -> +{ + +}) +.buildAndConnect(); +``` + + + +
+ + +#### onSubscribe [TikTokSubscribeEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages.java) + + +Triggers when a user creates a subscription. + + +```java +TikTokLive.newClient("host-name") +.onSubscribe((liveClient, event) -> +{ + +}) +.buildAndConnect(); +``` + + + +
+ + +#### onLivePaused [TikTokLivePausedEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages.java) + + + +```java +TikTokLive.newClient("host-name") +.onLivePaused((liveClient, event) -> +{ + +}) +.buildAndConnect(); +``` + + + +
+ + +#### onGiftCombo [TikTokGiftComboEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages.java) + + + +```java +TikTokLive.newClient("host-name") +.onGiftCombo((liveClient, event) -> +{ + +}) +.buildAndConnect(); +``` + + + +
+ + +#### onGift [TikTokGiftEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages.java) + + +Triggered every time a gift arrives. + + +```java +TikTokLive.newClient("host-name") +.onGift((liveClient, event) -> +{ + +}) +.buildAndConnect(); +``` + + + +
+ + +#### onFollow [TikTokFollowEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages.java) + + +Triggers when a user follows the streamer. Based on social event. + + +```java +TikTokLive.newClient("host-name") +.onFollow((liveClient, event) -> +{ + +}) +.buildAndConnect(); +``` + + + +
+ + +#### onWebsocketUnhandledMessage [TikTokWebsocketUnhandledMessageEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages.java) + + +Triggered every time a protobuf encoded webcast message arrives. You can deserialize the binary object depending on the use case. + + +```java +TikTokLive.newClient("host-name") +.onWebsocketUnhandledMessage((liveClient, event) -> +{ + +}) +.buildAndConnect(); +``` + + + +
+ + +#### onWebsocketResponse [TikTokWebsocketResponseEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages.java) + + + +```java +TikTokLive.newClient("host-name") +.onWebsocketResponse((liveClient, event) -> +{ + +}) +.buildAndConnect(); +``` + + + +
+ + +#### onWebsocketMessage [TikTokWebsocketMessageEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages.java) + + +Triggered every time a protobuf encoded webcast message arrives. You can deserialize the binary object depending on the use case. + + +```java +TikTokLive.newClient("host-name") +.onWebsocketMessage((liveClient, event) -> +{ + +}) +.buildAndConnect(); +``` + + + + + +
+
+ ## Listener Example ```java -package io.github.jwdeveloper.tiktok; - -import io.github.jwdeveloper.tiktok.annotations.TikTokEventHandler; -import io.github.jwdeveloper.tiktok.data.events.common.TikTokEvent; -import io.github.jwdeveloper.tiktok.data.events.TikTokCommentEvent; -import io.github.jwdeveloper.tiktok.data.events.TikTokErrorEvent; -import io.github.jwdeveloper.tiktok.data.events.TikTokGiftMessageEvent; -import io.github.jwdeveloper.tiktok.data.events.social.TikTokLikeEvent; -import io.github.jwdeveloper.tiktok.listener.TikTokEventListener; -import io.github.jwdeveloper.tiktok.live.LiveClient; - -import java.io.IOException; - -public class ListenerExample { - public static void main(String[] args) throws IOException { - - CustomListener customListener = new CustomListener(); - - // set tiktok username - var client = TikTokLive.newClient(Main.TEST_TIKTOK_USER) - .addListener(customListener) - .buildAndRun(); - - System.in.read(); - } - - /* - Method in TikTokEventListener should meet 4 requirements to be detected - - must have @TikTokEventHandler annotation - - must have 2 parameters - - first parameter must be LiveClient - - second must be class that extending TikTokEvent - */ - public static class CustomListener implements TikTokEventListener { - - @TikTokEventHandler - public void onLike(LiveClient liveClient, TikTokLikeEvent event) { - System.out.println(event.toString()); - } - - @TikTokEventHandler - public void onError(LiveClient liveClient, TikTokErrorEvent event) { - System.out.println(event.getException().getMessage()); - } - - @TikTokEventHandler - public void onCommentMessage(LiveClient liveClient, TikTokCommentEvent event) { - System.out.println(event.getText()); - } - - @TikTokEventHandler - public void onGiftMessage(LiveClient liveClient, TikTokGiftMessageEvent event) { - System.out.println(event.getGift().getDescription()); - } - - @TikTokEventHandler - public void onAnyEvent(LiveClient liveClient, TikTokEvent event) { - System.out.println(event.getClass().getSimpleName()); - } - - } -} - +{{listener-content}} ``` -## Methods -A `client (LiveClient)` object contains the following methods. - - - -| Method Name | Description | -|---------------------| ----------- | -| connect | Connects to the live stream. | -| disconnect | Disconnects the connection. | -| getGiftManager | Gets the meta informations about all gifts. | -| getRoomInfo | Gets the current room info from TikTok API including streamer info, room status and statistics. | -| getListenersManager | Gets and manage TikTokEventListeners | -## Events - -A `TikTokLive` object has the following events - - -**Message**: -- [TikTokLinkMicFanTicketEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicFanTicketEvent.java) -- [TikTokEnvelopeEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokEnvelopeEvent.java) -- [TikTokShopMessageEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokShopMessageEvent.java) -- [TikTokDetectMessageEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokDetectMessageEvent.java) -- [TikTokLinkLayerMessageEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkLayerMessageEvent.java) -- [TikTokCaptionEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokCaptionEvent.java) -- [TikTokQuestionEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokQuestionEvent.java) -- [TikTokRoomPinMessageEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomPinMessageEvent.java) -- [TikTokRoomMessageEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomMessageEvent.java) -- [TikTokLinkMessageEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMessageEvent.java) -- [TikTokBarrageMessageEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokBarrageMessageEvent.java) -- [TikTokGiftMessageEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftMessageEvent.java) -- [TikTokLinkMicArmiesEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicArmiesEvent.java) -- [TikTokEmoteEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokEmoteEvent.java) -- [TikTokUnauthorizedMemberEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnauthorizedMemberEvent.java) -- [TikTokInRoomBannerEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokInRoomBannerEvent.java) -- [TikTokLinkMicMethodEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicMethodEvent.java) -- [TikTokPollMessageEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokPollMessageEvent.java) -- [TikTokRoomViewerDataEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomViewerDataEvent.java) -- [TikTokGoalUpdateEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGoalUpdateEvent.java) -- [TikTokCommentEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokCommentEvent.java) -- [TikTokRankUpdateEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRankUpdateEvent.java) -- [TikTokIMDeleteEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokIMDeleteEvent.java) -- [TikTokRankTextEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRankTextEvent.java) -- [TikTokUnhandledMemberEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledMemberEvent.java) -- [TikTokSubNotifyEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokSubNotifyEvent.java) -- [TikTokLinkMicBattleEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicBattleEvent.java) -- [TikTokGiftBroadcastEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftBroadcastEvent.java) -- [TikTokUnhandledWebsocketMessageEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledWebsocketMessageEvent.java) - -**Control**: -- [TikTokConnectedEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokConnectedEvent.java) -- [TikTokReconnectingEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokReconnectingEvent.java) -- [TikTokErrorEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokErrorEvent.java) -- [TikTokDisconnectedEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokDisconnectedEvent.java) - -**Custom**: -- [TikTokHeaderEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokHeaderEvent.java) -- [TikTokUnhandledSocialEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledSocialEvent.java) -- [TikTokLivePausedEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLivePausedEvent.java) -- [TikTokLikeEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLikeEvent.java) -- [TikTokWebsocketMessageEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokWebsocketMessageEvent.java) -- [TikTokSubscribeEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokSubscribeEvent.java) -- [TikTokFollowEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokFollowEvent.java) -- [TikTokLiveClientEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLiveClientEvent.java) -- [TikTokUnhandledEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledEvent.java) -- [TikTokLiveEndedEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLiveEndedEvent.java) -- [TikTokJoinEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokJoinEvent.java) -- [TikTokShareEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokShareEvent.java) -- [TikTokUnhandledControlEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledControlEvent.java) - - -

- ## Contributing Your improvements are welcome! Feel free to open an issue or pull request.