import com.google.api.client.googleapis.auth.oauth2.Credential; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.googleapis.http.HttpRequest; import com.google.api.client.googleapis.http.HttpRequestInitializer; import com.google.api.client.googleapis.json.JsonFactory; import com.google.api.client.googleapis.json.jackson2.JacksonFactory; import com.google.api.services.youtube.YouTube; import com.google.api.services.youtube.model.LiveChatMessage; import com.google.api.services.youtube.model.LiveChatMessageListResponse; import com.google.api.services.youtube.model.LiveChatMessageSnippet; import com.google.api.services.youtube.model.LiveChatTextMessageDetails; import com.google.api.services.youtube.model.LiveChatTextMessageDetails.MessageTextDetails; import java.io.IOException; import java.security.GeneralSecurityException; import java.util.List; public class MCchatbotyt { private static final String APPLICATION_NAME = "MC chatbot for YT"; private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance(); private static YouTube youtube; public static void main(String[] args) throws GeneralSecurityException, IOException { // Set up credentials Credential credential = authorize(); // Set up YouTube API client youtube = new YouTube.Builder( GoogleNetHttpTransport.newTrustedTransport(), JSON_FACTORY, new HttpRequestInitializer() { @Override public void initialize(HttpRequest request) throws IOException { request.setInterceptor(credential); } }) .setApplicationName(APPLICATION_NAME) .build(); // Get live chat ID for your live stream String liveChatId = getLiveChatId("5lAKSeFQS2M"); // Poll for new chat messages every few seconds while (true) { List messages = getLiveChatMessages(liveChatId); for (LiveChatMessage message : messages) { String author = message.getSnippet().getAuthorChannelId(); String text = message.getSnippet().getDisplayMessage(); System.out.println("New message from " + author + ": " + text); // Add your logic to handle incoming messages here } try { Thread.sleep(5000); // Poll every 5 seconds } catch (InterruptedException e) { e.printStackTrace(); } } } private static Credential authorize() throws IOException, GeneralSecurityException { // Load client secrets JSON file (you need to create this file with your OAuth client ID and secret) GoogleCredential credential = GoogleCredential.fromStream( YouTubeLiveChatBot.class.getResourceAsStream("/client_secrets.json")) .createScoped(List.of("https://www.googleapis.com/auth/youtube")); return credential; } private static String getLiveChatId(String liveStreamId) throws IOException { YouTube.LiveChatMessages.List liveChatRequest = youtube.liveChatMessages() .list("id,snippet") .setLiveChatId(liveStreamId); LiveChatMessageListResponse response = liveChatRequest.execute(); List messages = response.getItems(); if (messages != null && !messages.isEmpty()) { return messages.get(0).getSnippet().getLiveChatId(); } return null; } private static List getLiveChatMessages(String liveChatId) throws IOException { YouTube.LiveChatMessages.List liveChatRequest = youtube.liveChatMessages() .list("id,snippet") .setLiveChatId(liveChatId); LiveChatMessageListResponse response = liveChatRequest.execute(); return response.getItems(); } }