abstract sclass DynGazelleBot > DynPrintLogAndEnabled { switchable S gazelleServer = gazelle_server(); switchable S _user; switchable S _botToken; switchable double grabDelay = 0.5; new Gazelle_GrabPostsLoop grabLoop; start { addAll(grabLoop.fields, "type", "creating", "postRefs", "postRefTags", "creatorID", "creatorName", "creatorIsMaster", "title", "bumped", "botInfo"); dm_startThread("Post Grab Loop", r runGrabLoop); } void runGrabLoop { dm_copyFieldsToObject(grabLoop, "_user", "_botToken", "enabled"); grabLoop.delay = grabDelay; grabLoop.server = gazelleServer; grabLoop.verbose = true; grabLoop.onChange(r change); grabLoop.handlePost = post -> enter { handlePost(post); }; grabLoop.run(); } swappable void handlePost(GazellePost post) { } void rescan { grabLoop.reset(); } void enhanceFrame(Container f) { super.enhanceFrame(f); internalFramePopupMenuItem(f, "Rescan all posts", rEnter rescan); } }