!7 !include once #1017511 // Telegram Bots import org.telegram.telegrambots.generics.BotSession; static TelegramLongPollingBot bot; static BotSession botSession; p { fS apiToken = telegramBotToken_mandatory(); ApiContextInitializer.init(); bot = new TelegramLongPollingBot { public S getBotUsername() { ret "HelloComputer_bot"; } public S getBotToken() { ret apiToken; } public void onUpdateReceived(Update update) { pcall { print("Got update! " + update); Message msg = update.getMessage(); //update.getChannelPost(); logQuotedWithDate(telegramFullUpdatesLogFile(), str(update)); if (msg == null) ret; Voice voice = msg.getVoice(); if (voice != null) { Int duration = voice.getDuration(); S mimeType = voice.getMimeType(); S fileID = voice.getFileId(); print("Incoming voice message"); printStructs(+duration, +mimeType, +fileID); // TODO: download how? } if (msg.hasText()) { S text = msg.getText(); print("Incoming text: " + text); Chat chat = msg.getChat(); User from = msg.getFrom(); Map map = litorderedmap( where := chat == null ? null : chat.getId(), type := 'heard, date := localDateWithMilliseconds(), originalDate := msg.getDate(), globalID := aGlobalID(), +text); if (from != null) putAll(map, litorderedmap( userID := from.getId(), userFirstName := from.getFirstName(), userLastName := from.getLastName())); logStructure(telegramLogFile(), map); botAppendToMechList_combining("Telegram Bot Log", struct(map)); } } } }; botSession = new TelegramBotsApi().registerBot(bot); watchStructureLog_future(telegramBotToSendLog(), 100, voidfunc(Map map) { if (eq(map.get('action), 'send)) { long chatID = or((Long) _get(map, 'where), telegram_chatID()); S globalID = or2(getString(map, 'globalID), aGlobalID()); telegram_sendWithLogging(bot, chatID, getString(map, 'text), globalID); putAll(map, litorderedmap( date := localDateWithMilliseconds(), type := 'sent, +globalID, +chatID)); botAppendToMechList_combining("Telegram Bot Log", struct(map)); } }); print("Telegram Bot running."); } svoid cleanMeUp { if (botSession != null) { print("Closing bot session"); botSession.stop(); print("Closed bot session"); botSession = null; } }