!7 !include once #1017511 // Telegram Bots p { fS apiToken = telegramBotToken_mandatory(); botInit(); ApiContextInitializer.init(); TelegramLongPollingBot 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 && msg.hasText()) { S text = msg.getText(); print("Incoming text: " + text); logStructure(telegramLogFile(), litorderedmap( type := 'heard, date := localDateWithMilliseconds(), +text)); S response; try { response = makeResponse(text, msg); } catch e { printStackTrace(e); response = exceptionToStringShort(e); } response = rtrim(response); if (empty(response)) ret; Chat chat = msg.getChat(); logStructure(telegramLogFile(), litorderedmap( type := 'sent, date := localDateWithMilliseconds(), toChatID := msg.getChatId(), text := response)); new SendMessage sending; sending.setText(response); sending.setChatId(msg.getChatId()); sendMessage(sending); } } } }; new TelegramBotsApi api; api.registerBot(bot); } static S makeResponse(fS s, Message msg) { if (eqic(s, "whoami")) { User from = msg.getFrom(); if (from == null) ret "idk"; ret msg.getFrom().getId() + " / " + msg.getFrom().getUserName(); } if (eqic(s, "fullmsg")) ret str(msg); //ret "You typed " + n2(l(s), "character"); ret lines(map tok_dropAllCurlyBrackets(pnlEmits(r { ai_askForUnknownWordTypes(s) }))); } svoid botInit { dm_useLocallyCopiedMechLists(); }