@Override public void onParticipantJoinGroupChat(ParticipantJoinGroupChatEvent event) { if (event.getParticipant().getId() == TelegramHook.getBot().getBotID()) { event .getChat() .sendMessage( SendableTextMessage.builder() .message( "*Hello!*\n\nThis is a quick message to let you know that @RedditLiveBot is set to monitor all chat messages. We *do not* store or log any user messages, as this feature is for admin controls only.\n\nIf you have any issues, feel free to contact @stuntguy3000 or view the source from /source.") .parseMode(ParseMode.MARKDOWN) .disableWebPagePreview(true) .build()); } }
@Override public void onCallbackQueryReceivedEvent(CallbackQueryReceivedEvent event) { String ID = event.getCallbackQuery().getData(); long userID = event.getCallbackQuery().getFrom().getId(); RedditHandler redditHandler = instance.getRedditHandler(); // Standard admin functionality with the prefix # representing a chat if (ID.contains("#")) { if (!instance.getConfigHandler().getBotSettings().getTelegramAdmins().contains(userID)) { event.getCallbackQuery().answer("You are not authorized to do this.", true); return; } String command = ID.split("#")[0]; Chat chat = TelegramHook.getBot().getChat(ID.split("#")[1]); if (command.equals(AdminInlineCommandType.START_FOLLOW.getCommandID())) { /** Start following a live feed */ Message message = chat.sendMessage( SendableTextMessage.builder() .message( "*Please reply to this message with the live feed you would like to follow.*\n\n" + "Syntax: `<ID> [title]`") .parseMode(ParseMode.MARKDOWN) .build()); instance .getAdminControlHandler() .addReplyMessage(message, AdminInlineCommandType.START_FOLLOW); } else if (command.equals(AdminInlineCommandType.STOP_FOLLOW.getCommandID())) { /** Stop following */ redditHandler.unfollowLiveThread(true); chat.sendMessage( SendableTextMessage.builder() .message("*Silently stopped following any current live threads.*") .parseMode(ParseMode.MARKDOWN) .build()); } else if (command.equals(AdminInlineCommandType.SHOW_SUBS.getCommandID())) { /** Show all subscribers */ ArrayList<Subscriber> subscriptions = RedditLiveBot.instance.getSubscriptionHandler().getSubscriptions(); List<String> subList = new ArrayList<>(); for (Subscriber subscriber : subscriptions) { subList.add(subscriber.getUserID() + " - " + subscriber.getUsername()); } PaginatedMessage paginatedMessage = RedditLiveBot.instance.getPaginationHandler().createPaginatedMessage(subList, 15); paginatedMessage.setMessage( chat.sendMessage( SendableTextMessage.builder() .message(paginatedMessage.getPaginatedList().getCurrentPageContent()) .replyMarkup(paginatedMessage.getButtons()) .parseMode(ParseMode.NONE) .disableWebPagePreview(true) .build())); } else if (command.equals(AdminInlineCommandType.ENABLE_DEBUG.getCommandID())) { /** Enable debug mode */ RedditLiveBot.DEBUG = true; RedditLiveBot.instance.getConfigHandler().saveConfigs(); chat.sendMessage( SendableTextMessage.builder() .message("*Enabled debug mode.*") .parseMode(ParseMode.MARKDOWN) .build()); } else if (command.equals(AdminInlineCommandType.DISABLE_DEBUG.getCommandID())) { /** Disable debug mode */ RedditLiveBot.DEBUG = false; RedditLiveBot.instance.getConfigHandler().saveConfigs(); chat.sendMessage( SendableTextMessage.builder() .message("*Disabled debug mode.*") .parseMode(ParseMode.MARKDOWN) .build()); } else if (command.equals(AdminInlineCommandType.BROADCAST.getCommandID())) { /** Broadcast a message to all subscribers and the channel */ Message message = chat.sendMessage( SendableTextMessage.builder() .message( "*Please reply to this message with the content you would like to Broadcast.*") .parseMode(ParseMode.MARKDOWN) .build()); instance .getAdminControlHandler() .addReplyMessage(message, AdminInlineCommandType.BROADCAST); } else if (command.equals(AdminInlineCommandType.RESTART.getCommandID())) { /** Restart the bot */ chat.sendMessage( SendableTextMessage.builder() .message("*Restarting...*") .parseMode(ParseMode.MARKDOWN) .build()); instance.shutdown(); } event.getCallbackQuery().answer("", false); return; } else if (ID.startsWith("f,") || ID.startsWith("fS,")) { /** Feed Following */ if (!instance.getConfigHandler().getBotSettings().getTelegramAdmins().contains(userID)) { event.getCallbackQuery().answer("You are not authorized to do this.", true); return; } boolean silent = ID.startsWith("fS,"); /** Manually follow a feed */ String threadID = ID.split(",")[1]; Message sentMessage = instance.getAdminControlHandler().getUpdateMessages().get(threadID); Lang.sendDebug(sentMessage.getChat().getId() + " | CHATNAME"); redditHandler.followLiveThread(threadID, silent); String threadInformation = "*Reddit Live Thread*\n\n" + "*Thread ID:* " + threadID + "\n" + "*Thread URL:* https://reddit.com/live/" + threadID + "\n" + "*Now following this live feed.*"; TelegramHook.getBot() .editMessageText(sentMessage, threadInformation, ParseMode.MARKDOWN, true, null); event.getCallbackQuery().answer("", false); return; } else if (ID.startsWith("usrSubscribe:")) { /** User Subscriptions */ String userToSubscribe = ID.split(":")[1]; Chat chat = TelegramHook.getBot().getChat(userToSubscribe); RedditLiveBot.instance.getSubscriptionHandler().subscribeChat(chat); event.getCallbackQuery().answer("You have subscribed to @RedditLiveBot", false); } else { /** Pagination via UUID */ String action; UUID uuid; try { uuid = UUID.fromString(ID.split("\\|")[0]); action = ID.split("\\|")[1]; PaginatedMessage paginatedMessage = RedditLiveBot.instance.getPaginationHandler().getMessage(uuid); if (paginatedMessage != null) { String content; switch (action) { case "next": { content = paginatedMessage.getPaginatedList().switchToNextPage(); break; } case "prev": { content = paginatedMessage.getPaginatedList().switchToPreviousPage(); break; } case "ignore": { event.getCallbackQuery().answer("Use Next or Previous to navigate.", true); return; } default: { event.getCallbackQuery().answer("Unable to continue! Contact @stuntguy3000", true); return; } } TelegramHook.getBot() .editMessageText( paginatedMessage.getMessage(), content, ParseMode.NONE, false, paginatedMessage.getButtons()); return; } } catch (Exception ignore) { } } event.getCallbackQuery().answer("Unknown action! Button ID: " + ID, true); }