From 40f845cdcece050d5d23bcb74ece0d51783e6b79 Mon Sep 17 00:00:00 2001 From: Andrea Cavalli Date: Sat, 23 Oct 2021 23:05:08 +0200 Subject: [PATCH] Support java 17 sealed types --- example/pom.xml | 12 +- .../main/java/it.tdlight.example/Example.java | 132 ++++++++---------- pom.xml | 6 +- 3 files changed, 68 insertions(+), 82 deletions(-) diff --git a/example/pom.xml b/example/pom.xml index 297574d..c43d01a 100644 --- a/example/pom.xml +++ b/example/pom.xml @@ -26,24 +26,24 @@ it.tdlight tdlight-java - 2.7.8.32 + 2.7.8.33 it.tdlight tdlight-natives-linux-amd64 - 4.0.173 + 4.0.175 it.tdlight tdlight-natives-windows-amd64 - 4.0.173 + 4.0.175 it.tdlight tdlight-natives-osx-amd64 - 4.0.173 + 4.0.175 @@ -78,8 +78,8 @@ 3.8.1 UTF-8 - 11 - 11 + 17 + 17 diff --git a/example/src/main/java/it.tdlight.example/Example.java b/example/src/main/java/it.tdlight.example/Example.java index cb006c1..55e57bb 100644 --- a/example/src/main/java/it.tdlight.example/Example.java +++ b/example/src/main/java/it.tdlight.example/Example.java @@ -1,6 +1,6 @@ package it.tdlight.example; -import it.tdlight.client.APIToken; +import it.tdlight.client.*; import it.tdlight.client.AuthenticationData; import it.tdlight.client.CommandHandler; import it.tdlight.client.SimpleTelegramClient; @@ -8,15 +8,6 @@ import it.tdlight.client.TDLibSettings; import it.tdlight.common.Init; import it.tdlight.common.utils.CantLoadLibrary; import it.tdlight.jni.TdApi; -import it.tdlight.jni.TdApi.AuthorizationState; -import it.tdlight.jni.TdApi.Chat; -import it.tdlight.jni.TdApi.MessageContent; -import it.tdlight.jni.TdApi.MessageSender; -import it.tdlight.jni.TdApi.MessageSenderUser; -import it.tdlight.jni.TdApi.MessageText; -import it.tdlight.jni.TdApi.UpdateAuthorizationState; -import it.tdlight.jni.TdApi.UpdateNewMessage; -import java.nio.file.Path; import java.nio.file.Paths; /** @@ -29,61 +20,39 @@ public final class Example { /** * Admin user id, used by the stop command example */ - private static final long ADMIN_ID = 667900586; + private static final TdApi.MessageSender ADMIN_ID = new TdApi.MessageSenderUser(667900586); + + private static SimpleTelegramClient client; public static void main(String[] args) throws CantLoadLibrary, InterruptedException { // Initialize TDLight native libraries Init.start(); // Obtain the API token - APIToken apiToken = APIToken.example(); + var apiToken = APIToken.example(); // Configure the client - TDLibSettings settings = TDLibSettings.create(apiToken); + var settings = TDLibSettings.create(apiToken); // Configure the session directory - Path sessionPath = Paths.get("example-tdlight-session"); + var sessionPath = Paths.get("example-tdlight-session"); settings.setDatabaseDirectoryPath(sessionPath.resolve("data")); settings.setDownloadedFilesDirectoryPath(sessionPath.resolve("downloads")); // Create a client - SimpleTelegramClient client = new SimpleTelegramClient(settings); + client = new SimpleTelegramClient(settings); // Configure the authentication info - AuthenticationData authenticationData = AuthenticationData.consoleLogin(); + var authenticationData = AuthenticationData.consoleLogin(); // Add an example update handler that prints when the bot is started - client.addUpdateHandler(UpdateAuthorizationState.class, update -> printStatus(update.authorizationState)); - - // Add an example command handler that stops the bot - client.addCommandHandler("stop", new StopCommandHandler(client)); + client.addUpdateHandler(TdApi.UpdateAuthorizationState.class, Example::onUpdateAuthorizationState); // Add an example update handler that prints every received message - client.addUpdateHandler(UpdateNewMessage.class, update -> { - // Get the message content - MessageContent messageContent = update.message.content; + client.addUpdateHandler(TdApi.UpdateNewMessage.class, Example::onUpdateNewMessage); - // Get the message text - String text; - if (messageContent instanceof MessageText) { - // Get the text of the text message - text = ((MessageText) messageContent).text.text; - } else { - // We handle only text messages, the other messages will be printed as their type - text = "(" + messageContent.getClass().getSimpleName() + ")"; - } - - // Get the chat title - client.send(new TdApi.GetChat(update.message.chatId), chatIdResult -> { - // Get the chat response - Chat chat = chatIdResult.get(); - // Get the chat name - String chatName = chat.title; - - // Print the message - System.out.println("Received new message from chat " + chatName + ": " + text); - }); - }); + // Add an example command handler that stops the bot + client.addCommandHandler("stop", new StopCommandHandler()); // Start the client client.start(authenticationData); @@ -92,10 +61,53 @@ public final class Example { client.waitForExit(); } + private static void onUpdateNewMessage(TdApi.UpdateNewMessage update) { + // Get the message content + var messageContent = update.message.content; + + // Get the message text + String text; + if (messageContent instanceof TdApi.MessageText messageText) { + // Get the text of the text message + text = messageText.text.text; + } else { + // We handle only text messages, the other messages will be printed as their type + text = "(" + messageContent.getClass().getSimpleName() + ")"; + } + + // Get the chat title + client.send(new TdApi.GetChat(update.message.chatId), chatIdResult -> { + // Get the chat response + var chat = chatIdResult.get(); + // Get the chat name + var chatName = chat.title; + + // Print the message + System.out.println("Received new message from chat " + chatName + ": " + text); + }); + } + + /** + * Close the bot if the /stop command is sent by the administrator + */ + private static class StopCommandHandler implements CommandHandler { + + @Override + public void onCommand(TdApi.Chat chat, TdApi.MessageSender commandSender, String arguments) { + // Check if the sender is the admin + if (isAdmin(commandSender)) { + // Stop the client + System.out.println("Received stop command. closing..."); + client.sendClose(); + } + } + } + /** * Print the bot status */ - private static void printStatus(AuthorizationState authorizationState) { + private static void onUpdateAuthorizationState(TdApi.UpdateAuthorizationState update) { + var authorizationState = update.authorizationState; if (authorizationState instanceof TdApi.AuthorizationStateReady) { System.out.println("Logged in"); } else if (authorizationState instanceof TdApi.AuthorizationStateClosing) { @@ -110,33 +122,7 @@ public final class Example { /** * Check if the command sender is admin */ - private static boolean isAdmin(MessageSender sender) { - if (sender instanceof MessageSenderUser) { - MessageSenderUser senderUser = (MessageSenderUser) sender; - return senderUser.userId == ADMIN_ID; - } - return false; - } - - /** - * Close the bot if the /stop command is sent by the administrator - */ - private static class StopCommandHandler implements CommandHandler { - - private final SimpleTelegramClient client; - - public StopCommandHandler(SimpleTelegramClient client) { - this.client = client; - } - - @Override - public void onCommand(Chat chat, MessageSender commandSender, String arguments) { - // Check if the sender is the admin - if (isAdmin(commandSender)) { - // Stop the client - System.out.println("Received stop command. closing..."); - client.sendClose(); - } - } + private static boolean isAdmin(TdApi.MessageSender sender) { + return sender.equals(ADMIN_ID); } } \ No newline at end of file diff --git a/pom.xml b/pom.xml index 2cbd737..2c7be4f 100644 --- a/pom.xml +++ b/pom.xml @@ -5,12 +5,12 @@ tdlight-java-parent ${revision} pom - TDLib Java Parent + TDLight Java Parent 1.0.0.0-SNAPSHOT - 173 + 175 - 171 + 173