!7 cmodule MultiCommClient { switchable S password; transient S botID = #1026281; enhanceFrame { minFrameSize(f, 300, 300); } visualize { if (empty(password) || !testPassword()) { JPasswordField pw = jpassword(password); ret jfullcenter(withTitle("Please enter password:", onEnter(pw, r { setField(password := gtt(pw)); revisualize(); }))); } ret jlabel("Logged in"); } bool testPassword() { ret startsWith(loadPage(appendQueryToURL(rawBotLink(botID, "testAuth"), pw := password)), "OK"); } }