En tu caso la composición comparte la clase Bot en diversos eslabones, cuando la cadena a seguir debería ser un Bot que realiza diferentes tareas Wikitask, WikidataTask o IRCTask, que a su vez hacen uso de objetos WikiUser o Page, y que estos pueden usar objetos exclusivos como Template o TextFunctions para la manipulación de datos, o un objeto común para la extracción de los datos del sistema MediaWiki. Aquí es donde veo el problema, pues en tu código esta última parte es nuevamente Bot haciendo uso de WebFunctions, cuando debería ser un objeto independiente ¿Api?